40 lines
1 KiB
C
40 lines
1 KiB
C
|
/*
|
||
|
* ring16.h
|
||
|
*/
|
||
|
|
||
|
/* ring buffer configuration */
|
||
|
|
||
|
#define BUFFER_SIZE (512) /* must be 2^Nth */
|
||
|
#define MIN_BUFFERS 3 /* minimum number we want */
|
||
|
|
||
|
#define NUM_OUTPUT_BUFFER_PAGES (CHUNK_SIZE/BUFFER_SIZE)
|
||
|
|
||
|
typedef struct aBuffer
|
||
|
{
|
||
|
struct aBuffer FAR *pLinkNewer; /* link to more recently used */
|
||
|
struct aBuffer FAR *pLinkOlder; /* link to less recently used */
|
||
|
int BufferPage; /* what page this is, -1 -> invalid */
|
||
|
int BufferDirty; /* NZ -> needs to be written */
|
||
|
BYTE Buffer[BUFFER_SIZE]; /* content */
|
||
|
} BUFFER, FAR *PBUFFER;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
PBUFFER pBuffer; /* pointer to buffer, NULL if not present */
|
||
|
int last_chance_ptr; /* index to last chance buffer table, or -1 */
|
||
|
int fDiskValid; /* NZ -> this page has been written to disk */
|
||
|
} PAGETABLEENTRY;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
short Len;
|
||
|
long Dist;
|
||
|
} MATCH;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
char wildName[2];
|
||
|
unsigned long fileSize;
|
||
|
} RINGNAME, FAR *PRINGNAME;
|
||
|
|