OGR
cpl_virtualmem.h
Go to the documentation of this file.
1 /**********************************************************************
2  * $Id: cpl_virtualmem.h 27044 2014-03-16 23:41:27Z rouault $
3  *
4  * Name: cpl_virtualmem.h
5  * Project: CPL - Common Portability Library
6  * Purpose: Virtual memory
7  * Author: Even Rouault, <even dot rouault at mines dash paris dot org>
8  *
9  **********************************************************************
10  * Copyright (c) 2014, Even Rouault <even dot rouault at mines-paris dot org>
11  *
12  * Permission is hereby granted, free of charge, to any person obtaining a
13  * copy of this software and associated documentation files (the "Software"),
14  * to deal in the Software without restriction, including without limitation
15  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
16  * and/or sell copies of the Software, and to permit persons to whom the
17  * Software is furnished to do so, subject to the following conditions:
18  *
19  * The above copyright notice and this permission notice shall be included
20  * in all copies or substantial portions of the Software.
21  *
22  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
25  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
28  * DEALINGS IN THE SOFTWARE.
29  ****************************************************************************/
30 
31 #ifndef _CPL_VIRTUAL_MEM_INCLUDED
32 #define _CPL_VIRTUAL_MEM_INCLUDED
33 
34 #include "cpl_port.h"
35 #include "cpl_vsi.h"
36 
37 CPL_C_START
38 
61 
73  size_t nOffset,
74  void* pPageToFill,
75  size_t nToFill,
76  void* pUserData);
77 
89  size_t nOffset,
90  const void* pPageToBeEvicted,
91  size_t nToBeEvicted,
92  void* pUserData);
93 
97 typedef void (*CPLVirtualMemFreeUserData)(void* pUserData);
98 
100 typedef enum
101 {
112 
113 
120 size_t CPL_DLL CPLGetPageSize(void);
121 
166 CPLVirtualMem CPL_DLL *CPLVirtualMemNew(size_t nSize,
167  size_t nCacheSize,
168  size_t nPageSizeHint,
169  int bSingleThreadUsage,
170  CPLVirtualMemAccessMode eAccessMode,
171  CPLVirtualMemCachePageCbk pfnCachePage,
172  CPLVirtualMemUnCachePageCbk pfnUnCachePage,
173  CPLVirtualMemFreeUserData pfnFreeUserData,
174  void *pCbkUserData);
175 
176 
182 int CPL_DLL CPLIsVirtualMemFileMapAvailable(void);
183 
209 CPLVirtualMem CPL_DLL *CPLVirtualMemFileMapNew( VSILFILE* fp,
210  vsi_l_offset nOffset,
211  vsi_l_offset nLength,
212  CPLVirtualMemAccessMode eAccessMode,
213  CPLVirtualMemFreeUserData pfnFreeUserData,
214  void *pCbkUserData );
215 
236  vsi_l_offset nOffset,
237  vsi_l_offset nSize,
238  CPLVirtualMemFreeUserData pfnFreeUserData,
239  void *pCbkUserData);
240 
252 void CPL_DLL CPLVirtualMemFree(CPLVirtualMem* ctxt);
253 
269 void CPL_DLL *CPLVirtualMemGetAddr(CPLVirtualMem* ctxt);
270 
278 size_t CPL_DLL CPLVirtualMemGetSize(CPLVirtualMem* ctxt);
279 
287 int CPL_DLL CPLVirtualMemIsFileMapping(CPLVirtualMem* ctxt);
288 
297 
308 size_t CPL_DLL CPLVirtualMemGetPageSize(CPLVirtualMem* ctxt);
309 
328 
341 void CPL_DLL CPLVirtualMemDeclareThread(CPLVirtualMem* ctxt);
342 
355 void CPL_DLL CPLVirtualMemUnDeclareThread(CPLVirtualMem* ctxt);
356 
374 void CPL_DLL CPLVirtualMemPin(CPLVirtualMem* ctxt,
375  void* pAddr, size_t nSize, int bWriteOp);
376 
384 void CPL_DLL CPLVirtualMemManagerTerminate(void);
385 
386 
387 CPL_C_END
388 
389 #endif /* _CPL_VIRTUAL_MEM_INCLUDED */
size_t CPLVirtualMemGetPageSize(CPLVirtualMem *ctxt)
Definition: cpl_virtualmem.cpp:2032
void CPLVirtualMemUnDeclareThread(CPLVirtualMem *ctxt)
Definition: cpl_virtualmem.cpp:2046
void(* CPLVirtualMemUnCachePageCbk)(CPLVirtualMem *ctxt, size_t nOffset, const void *pPageToBeEvicted, size_t nToBeEvicted, void *pUserData)
Definition: cpl_virtualmem.h:88
struct CPLVirtualMem CPLVirtualMem
Definition: cpl_virtualmem.h:60
void CPLVirtualMemManagerTerminate(void)
Definition: cpl_virtualmem.cpp:2055
int CPLVirtualMemIsFileMapping(CPLVirtualMem *ctxt)
Definition: cpl_virtualmem.cpp:2022
Definition: cpl_virtualmem.h:104
void(* CPLVirtualMemCachePageCbk)(CPLVirtualMem *ctxt, size_t nOffset, void *pPageToFill, size_t nToFill, void *pUserData)
Definition: cpl_virtualmem.h:72
void(* CPLVirtualMemFreeUserData)(void *pUserData)
Definition: cpl_virtualmem.h:97
CPLVirtualMem * CPLVirtualMemDerivedNew(CPLVirtualMem *pVMemBase, vsi_l_offset nOffset, vsi_l_offset nSize, CPLVirtualMemFreeUserData pfnFreeUserData, void *pCbkUserData)
Definition: cpl_virtualmem.cpp:1997
int CPLIsVirtualMemFileMapAvailable(void)
Definition: cpl_virtualmem.cpp:1980
size_t CPLVirtualMemGetSize(CPLVirtualMem *ctxt)
Definition: cpl_virtualmem.cpp:2017
size_t CPLGetPageSize(void)
Definition: cpl_virtualmem.cpp:1960
CPLVirtualMemAccessMode
Definition: cpl_virtualmem.h:100
void CPLVirtualMemFree(CPLVirtualMem *ctxt)
Definition: cpl_virtualmem.cpp:2008
int CPLVirtualMemIsAccessThreadSafe(CPLVirtualMem *ctxt)
Definition: cpl_virtualmem.cpp:2037
CPLVirtualMemAccessMode CPLVirtualMemGetAccessMode(CPLVirtualMem *ctxt)
Definition: cpl_virtualmem.cpp:2027
void CPLVirtualMemPin(CPLVirtualMem *ctxt, void *pAddr, size_t nSize, int bWriteOp)
Definition: cpl_virtualmem.cpp:2050
void * CPLVirtualMemGetAddr(CPLVirtualMem *ctxt)
Definition: cpl_virtualmem.cpp:2012
Definition: cpl_virtualmem.h:110
Definition: cpl_virtualmem.h:107
CPLVirtualMem * CPLVirtualMemNew(size_t nSize, size_t nCacheSize, size_t nPageSizeHint, int bSingleThreadUsage, CPLVirtualMemAccessMode eAccessMode, CPLVirtualMemCachePageCbk pfnCachePage, CPLVirtualMemUnCachePageCbk pfnUnCachePage, CPLVirtualMemFreeUserData pfnFreeUserData, void *pCbkUserData)
Definition: cpl_virtualmem.cpp:1965
CPLVirtualMem * CPLVirtualMemFileMapNew(VSILFILE *fp, vsi_l_offset nOffset, vsi_l_offset nLength, CPLVirtualMemAccessMode eAccessMode, CPLVirtualMemFreeUserData pfnFreeUserData, void *pCbkUserData)
Definition: cpl_virtualmem.cpp:1985
void CPLVirtualMemDeclareThread(CPLVirtualMem *ctxt)
Definition: cpl_virtualmem.cpp:2042

Generated for GDAL by doxygen 1.8.11.