14#ifndef CPL_VIRTUAL_MEM_INCLUDED
15#define CPL_VIRTUAL_MEM_INCLUDED
45typedef struct CPLVirtualMem CPLVirtualMem;
59 void *pPageToFill,
size_t nToFill,
74 const void *pPageToBeEvicted,
102size_t CPL_DLL CPLGetPageSize(
void);
147CPLVirtualMem CPL_DLL *
148CPLVirtualMemNew(
size_t nSize,
size_t nCacheSize,
size_t nPageSizeHint,
158int CPL_DLL CPLIsVirtualMemFileMapAvailable(
void);
184CPLVirtualMem CPL_DLL *CPLVirtualMemFileMapNew(
207CPLVirtualMem CPL_DLL *CPLVirtualMemDerivedNew(
221void CPL_DLL CPLVirtualMemFree(CPLVirtualMem *ctxt);
237void CPL_DLL *CPLVirtualMemGetAddr(CPLVirtualMem *ctxt);
245size_t CPL_DLL CPLVirtualMemGetSize(CPLVirtualMem *ctxt);
253int CPL_DLL CPLVirtualMemIsFileMapping(CPLVirtualMem *ctxt);
272size_t CPL_DLL CPLVirtualMemGetPageSize(CPLVirtualMem *ctxt);
290int CPL_DLL CPLVirtualMemIsAccessThreadSafe(CPLVirtualMem *ctxt);
303void CPL_DLL CPLVirtualMemDeclareThread(CPLVirtualMem *ctxt);
316void CPL_DLL CPLVirtualMemUnDeclareThread(CPLVirtualMem *ctxt);
334void CPL_DLL CPLVirtualMemPin(CPLVirtualMem *ctxt,
void *pAddr,
size_t nSize,
343void CPL_DLL CPLVirtualMemManagerTerminate(
void);
Core portability definitions for CPL.
#define CPL_C_END
Macro to end a block of C symbols.
Definition cpl_port.h:279
#define CPL_C_START
Macro to start a block of C symbols.
Definition cpl_port.h:275
void(*) CPLVirtualMemFreeUserData(void *pUserData)
Callback triggered when a virtual memory mapping is destroyed.
Definition cpl_virtualmem.h:81
void(*) CPLVirtualMemCachePageCbk(CPLVirtualMem *ctxt, size_t nOffset, void *pPageToFill, size_t nToFill, void *pUserData)
Callback triggered when a still unmapped page of virtual memory is accessed.
Definition cpl_virtualmem.h:58
void(*) CPLVirtualMemUnCachePageCbk(CPLVirtualMem *ctxt, size_t nOffset, const void *pPageToBeEvicted, size_t nToBeEvicted, void *pUserData)
Callback triggered when a dirty mapped page is going to be freed.
Definition cpl_virtualmem.h:73
CPLVirtualMemAccessMode
Access mode of a virtual memory mapping.
Definition cpl_virtualmem.h:85
@ VIRTUALMEM_READONLY_ENFORCED
Definition cpl_virtualmem.h:91
@ VIRTUALMEM_READWRITE
Definition cpl_virtualmem.h:94
@ VIRTUALMEM_READONLY
Definition cpl_virtualmem.h:88
struct VSIVirtualHandle VSILFILE
Opaque type for a FILE that implements the VSIVirtualHandle API.
Definition cpl_vsi.h:141
GUIntBig vsi_l_offset
Type for a file offset.
Definition cpl_vsi.h:136