ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/hd/rholo.c
(Generate patch)

Comparing ray/src/hd/rholo.c (file contents):
Revision 3.43 by gwlarson, Thu Dec 10 10:47:29 1998 UTC vs.
Revision 3.44 by gwlarson, Wed Dec 30 08:02:37 1998 UTC

# Line 14 | Line 14 | static char SCCSid[] = "$SunId$ SGI";
14   #include <sys/types.h>
15   #include <sys/stat.h>
16  
17 + #ifndef FRAGWARN
18 + #define FRAGWARN        20              /* fragmentation for warning (%) */
19 + #endif
20   #ifndef MAXQTIME
21   #define MAXQTIME        5               /* target maximum seconds in queue */
22   #endif
# Line 269 | Line 272 | memerr:
272  
273   rholo()                         /* holodeck main loop */
274   {
275 +        static long     nextfragwarn = 100*(1L<<20);
276          static int      idle = 0;
277          PACKET  *pl = NULL, *plend;
278 +        long    fsiz;
279          int     pksiz;
280          register PACKET *p;
281          time_t  t;
# Line 284 | Line 289 | rholo()                                /* holodeck main loop */
289                          return(1);
290          } else if (idle)
291                  return(0);              /* all done */
292 <                                        /* check file size */
293 <        if (maxdisk > 0 && hdfilen(hdlist[0]->fd) >= maxdisk) {
292 >        fsiz = hdfilen(hdlist[0]->fd);  /* check file size */
293 >        if (maxdisk > 0 && fsiz >= maxdisk) {
294                  error(WARNING, "file limit exceeded");
295                  done_rtrace();
296                  return(1);      /* comes back */
297          }
298 + #if FRAGWARN
299 +        if (fsiz >= nextfragwarn &&
300 +                (fsiz-hdfiluse(hdlist[0]->fd,0))/(fsiz/100) > FRAGWARN) {
301 +                sprintf(errmsg, "holodeck file fragmentation is %.0f%%",
302 +                                100.*(fsiz-hdfiluse(hdlist[0]->fd,1))/fsiz);
303 +                error(WARNING, errmsg);
304 +                nextfragwarn = fsiz + (fsiz>>2);        /* decent interval */
305 +        }
306 + #endif
307          t = time(NULL);                 /* check time */
308          if (endtime > 0 && t >= endtime) {
309                  error(WARNING, "time limit exceeded");

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines