2 * Copyright 2004-2011, Secure Endpoints Inc.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
13 #define CM_CONFIG_DATA_VERSION 22
14 #define CM_CONFIG_DATA_MAGIC ('A' | 'F'<<8 | 'S'<<16 | CM_CONFIG_DATA_VERSION<<24)
16 typedef struct cm_config_data {
24 afs_uint64 bufferSize;
28 cm_volume_t * volumeBaseAddress;
29 cm_cell_t * cellBaseAddress;
30 cm_aclent_t * aclBaseAddress;
31 cm_scache_t * scacheBaseAddress;
32 cm_nc_t * dnlcBaseAddress;
33 cm_buf_t * bufHeaderBaseAddress;
34 char * bufDataBaseAddress;
37 cm_volume_t * allVolumesp;
38 afs_uint32 currentVolumes;
39 afs_uint32 maxVolumes;
41 cm_cell_t * allCellsp;
42 cm_cell_t * freeCellsp;
43 afs_int32 currentCells;
46 cm_volume_t * rootVolumep;
47 cm_cell_t * rootCellp;
49 cm_scache_t * rootSCachep;
50 cm_scache_t fakeSCache;
51 afs_uint64 fakeDirVersion;
52 afs_uint32 fakeUnique;
54 cm_aclent_t * aclLRUp;
55 cm_aclent_t * aclLRUEndp;
57 cm_scache_t ** scacheHashTablep;
58 afs_uint32 scacheHashTableSize;
60 cm_scache_t * allSCachesp;
61 afs_uint32 currentSCaches;
62 afs_uint32 maxSCaches;
63 cm_scache_t * scacheLRUFirstp;
64 cm_scache_t * scacheLRULastp;
66 cm_cell_t ** cellNameHashTablep;
67 cm_cell_t ** cellIDHashTablep;
68 afs_uint32 cellHashTableSize;
70 cm_volume_t ** volumeNameHashTablep;
71 cm_volume_t ** volumeRWIDHashTablep;
72 cm_volume_t ** volumeROIDHashTablep;
73 cm_volume_t ** volumeBKIDHashTablep;
74 afs_uint32 volumeHashTableSize;
75 cm_volume_t * volumeLRUFirstp;
76 cm_volume_t * volumeLRULastp;
82 cm_buf_t * buf_freeListp;
83 cm_buf_t * buf_freeListEndp;
84 cm_buf_t * buf_dirtyListp;
85 cm_buf_t * buf_dirtyListEndp;
86 cm_buf_t * buf_redirListp;
87 cm_buf_t * buf_redirListEndp;
88 cm_buf_t ** buf_scacheHashTablepp;
89 cm_buf_t ** buf_fileHashTablepp;
91 afs_uint32 buf_blockSize;
92 afs_uint32 buf_hashSize;
94 afs_uint32 buf_nbuffers;
95 afs_uint32 buf_nOrigBuffers;
96 afs_uint32 buf_reservedBufs;
97 afs_uint32 buf_maxReservedBufs;
98 afs_uint32 buf_reserveWaiting;
99 afs_uint32 buf_freeCount;
100 afs_uint32 buf_redirCount;
101 afs_uint32 buf_usedCount;
103 afs_uint64 buf_nbuffers;
104 afs_uint64 buf_nOrigBuffers;
105 afs_uint64 buf_reservedBufs;
106 afs_uint64 buf_maxReservedBufs;
107 afs_uint64 buf_reserveWaiting;
108 afs_uint64 buf_freeCount;
109 afs_uint64 buf_redirCount;
110 afs_uint64 buf_usedCount;
114 DWORD volSerialNumber;
115 CHAR Sid[6 * sizeof(DWORD)];
118 extern cm_config_data_t cm_data;
120 afs_uint64 GranularityAdjustment(afs_uint64 size);
121 afs_uint64 ComputeSizeOfConfigData(void);
122 afs_uint64 ComputeSizeOfVolumes(DWORD maxvols);
123 afs_uint64 ComputeSizeOfCells(DWORD maxcells);
124 afs_uint64 ComputeSizeOfACLCache(DWORD stats);
125 afs_uint64 ComputeSizeOfSCache(DWORD stats);
126 afs_uint64 ComputeSizeOfSCacheHT(DWORD stats);
127 afs_uint64 ComputeSizeOfDNLCache(void);
128 afs_uint64 ComputeSizeOfDataBuffers(afs_uint64 cacheBlocks, DWORD blockSize);
129 afs_uint64 ComputeSizeOfDataHT(afs_uint64 cacheBlocks);
130 afs_uint64 ComputeSizeOfDataHeaders(afs_uint64 cacheBlocks);
131 afs_uint64 ComputeSizeOfMappingFile(DWORD stats, DWORD maxVols, DWORD maxCells, DWORD chunkSize, afs_uint64 cacheBlocks, DWORD blockSize);
132 PSECURITY_ATTRIBUTES CreateCacheFileSA();
133 VOID FreeCacheFileSA(PSECURITY_ATTRIBUTES psa);
134 int cm_ShutdownMappedMemory(void);
135 int cm_ValidateMappedMemory(char * cachePath);
136 int cm_InitMappedMemory(DWORD virtualCache, char * cachePath, DWORD stats, DWORD maxVols, DWORD maxCells, DWORD chunkSize, afs_uint64 cacheBlocks, afs_uint32 blockSize);
137 #endif /* CM_MEMMAP_H */