windows-virtual-memory-20041224
[openafs.git] / src / WINNT / afsd / cm_buf.h
index b19950b..c7f59fc 100644 (file)
@@ -13,6 +13,9 @@
 #define _BUF_H__ENV_ 1
 
 #include <osi.h>
+#ifdef DISKCACHE95
+#include "cm_diskcache.h"
+#endif /* DISKCACHE95 */
 
 /* default # of buffers if not changed */
 #define CM_BUF_BUFFERS 100
@@ -29,6 +32,11 @@ extern long buf_bufferSize;
 #define CM_BUF_HASHSIZE        1024
 extern long buf_hashSize;
 
+/* cache type */
+#define CM_BUF_CACHETYPE_FILE 1
+#define CM_BUF_CACHETYPE_VIRTUAL 2
+extern int buf_cacheType;
+
 /* force it to be signed so that mod comes out positive or 0 */
 #define BUF_HASH(fidp,offsetp) ((((fidp)->vnode+((fidp)->unique << 5)  \
                                +(fidp)->volume+(fidp)->cell            \
@@ -64,7 +72,7 @@ typedef struct cm_buf {
                                 */
         struct cm_buf *allp;   /* next in all list */
        osi_mutex_t mx;         /* mutex protecting structure except refcount */
-        int refCount;          /* reference count */
+    unsigned long refCount;            /* reference count (buf_globalLock) */
         long idCounter;                /* counter for softrefs; bumped at each recycle */
         long dirtyCounter;     /* bumped at each dirty->clean transition */
 #ifdef notdef
@@ -78,11 +86,16 @@ typedef struct cm_buf {
         char *datap;           /* data in this buffer */
        unsigned long error;    /* last error code, if CM_BUF_ERROR is set */
         struct cm_user *userp; /* user who wrote to the buffer last */
+#ifndef DJGPP
         OVERLAPPED over;       /* overlapped structure for I/O */
+#endif
         
         /* fields added for the CM; locked by scp->mx */
         long dataVersion;      /* data version of this page */
         long cmFlags;          /* flags for cm */
+#ifdef DISKCACHE95
+        cm_diskcache_t *dcp;    /* diskcache structure */
+#endif /* DISKCACHE95 */
 } cm_buf_t;
 
 /* values for cmFlags */
@@ -129,6 +142,8 @@ extern cm_buf_t **buf_fileHashTablepp;
 
 extern long buf_Init(cm_buf_ops_t *);
 
+extern void buf_Shutdown(void);
+
 extern long buf_CountFreeList(void);
 
 extern void buf_Release(cm_buf_t *);
@@ -143,7 +158,9 @@ extern cm_buf_t *buf_LockedFind(struct cm_scache *, osi_hyper_t *);
 
 extern cm_buf_t *buf_Find(struct cm_scache *, osi_hyper_t *);
 
+#ifndef DJGPP
 extern HANDLE buf_GetFileHandle(long);
+#endif /* !DJGPP */
 
 extern void buf_LockedCleanAsync(cm_buf_t *, cm_req_t *);
 
@@ -180,6 +197,8 @@ extern long buf_FlushCleanPages(cm_scache_t *scp, cm_user_t *userp,
 
 extern long buf_SetNBuffers(long nbuffers);
 
+extern void buf_ForceTrace(BOOL flush);
+
 /* error codes */
 #define CM_BUF_EXISTS  1       /* buffer exists, and shouldn't */
 #define CM_ERROR_BASEBUF       0x33333333