--- ray/src/hd/holo.h 1998/12/04 11:37:47 3.18 +++ ray/src/hd/holo.h 2003/06/20 00:25:49 3.22 @@ -1,7 +1,4 @@ -/* Copyright (c) 1998 Silicon Graphics, Inc. */ - -/* SCCSid "$SunId$ SGI" */ - +/* RCSid: $Id: holo.h,v 3.22 2003/06/20 00:25:49 greg Exp $ */ /* * Header file for holodeck programs * @@ -25,7 +22,7 @@ typedef struct { BYTE r[2][2]; /* ray direction index */ COLR v; /* color value */ - unsigned int2 d; /* depth code (from entry wall) */ + uint16 d; /* depth code (from entry wall) */ } RAYVAL; /* ray value */ /* @@ -46,12 +43,12 @@ typedef struct { } GCOORD; /* grid coordinates (two for beam) */ typedef struct { - unsigned int4 nrd; /* number of beam rays bundled on disk */ - long fo; /* position in file */ + uint32 nrd; /* number of beam rays bundled on disk */ + off_t fo; /* position in file */ } BEAMI; /* beam index */ typedef struct { - unsigned int4 nrm; /* number of beam rays bundled in memory */ + uint32 nrm; /* number of beam rays bundled in memory */ unsigned long tick; /* clock tick for LRU replacement */ } BEAM; /* followed by nrm RAYVAL's */ @@ -61,13 +58,13 @@ typedef struct { typedef struct { FVECT orig; /* prism origin (first) */ FVECT xv[3]; /* side vectors (second) */ - int2 grid[3]; /* grid resolution (third) */ + int16 grid[3]; /* grid resolution (third) */ } HDGRID; /* holodeck section grid (must match HOLO struct) */ typedef struct holo { FVECT orig; /* prism origin (first) */ FVECT xv[3]; /* side vectors (second) */ - int2 grid[3]; /* grid resolution (third) */ + int16 grid[3]; /* grid resolution (third) */ int fd; /* file descriptor */ struct { int s, n; /* dirty section start, length */ @@ -99,11 +96,18 @@ extern HOLO *hdinit(), *hdalloc(); extern BEAM *hdgetbeam(); extern RAYVAL *hdnewrays(); extern unsigned hdmemuse(); -extern long hdfiluse(), hdfilen(), hdallocfrag(); +extern off_t hdfiluse(), hdfilen(), hdallocfrag(); extern double hdray(), hdinter(); extern unsigned hdcode(); extern int hdfilord(); +#define FF_NEVER 0 /* never free fragments */ +#define FF_WRITE 01 /* free fragment on write */ +#define FF_ALLOC 02 /* free fragment on ray alloc */ +#define FF_READ 04 /* free fragment on read */ +#define FF_KILL 010 /* free fragment on beam kill */ + +extern int hdfragflags; /* tells when to free fragments */ extern unsigned hdcachesize; /* target cache size (bytes) */ extern unsigned long hdclock; /* holodeck system clock */ extern HOLO *hdlist[HDMAX+1]; /* holodeck pointers (NULL term.) */ @@ -120,7 +124,7 @@ extern int hdwg1[6]; /* wall grid 1 index */ #define HOLOFMT "Holodeck" /* file format identifier */ #define HOLOVERS 0 /* file format version number */ -#define HOLOMAGIC (323+sizeof(long)+8*HOLOVERS) /* file magic number */ +#define HOLOMAGIC (323+sizeof(off_t)+8*HOLOVERS) /* file magic number */ /* * A holodeck file consists of an information header terminated by a