Rudiments
|
00001 // Copyright (c) 2004 David Muse 00002 // See the COPYING file for more information. 00003 00004 #ifndef RUDIMENTS_MEMORYMAP_H 00005 #define RUDIMENTS_MEMORYMAP_H 00006 00007 #include <rudiments/private/memorymapincludes.h> 00008 00009 #ifdef RUDIMENTS_NAMESPACE 00010 namespace rudiments { 00011 #endif 00012 00013 class memorymapprivate; 00014 00017 class RUDIMENTS_DLLSPEC memorymap { 00018 public: 00019 00021 memorymap(); 00022 00025 ~memorymap(); 00026 00062 bool attach(int32_t fd, off64_t offset, size_t len, 00063 int32_t protection, int32_t flags); 00064 00068 bool detach(); 00069 00072 bool setProtection(int32_t protection); 00073 00090 bool setProtection(off64_t offset, size_t len, 00091 int32_t protection); 00092 00095 void *getData(); 00096 00099 size_t getLength(); 00100 00114 bool sync(bool immediate, bool invalidate); 00115 00130 bool sync(off64_t offset, size_t len, 00131 bool immediate, bool invalidate); 00132 00133 00143 bool sequentialAccess(off64_t offset, size_t len); 00144 00154 bool randomAccess(off64_t offset, size_t len); 00155 00165 bool willNeed(off64_t offset, size_t len); 00166 00176 bool wontNeed(off64_t offset, size_t len); 00177 00187 bool normalAccess(off64_t offset, size_t len); 00188 00194 bool lock(); 00195 00202 bool lock(off64_t offset, size_t len); 00203 00209 bool unlock(); 00210 00217 bool unlock(off64_t offset, size_t len); 00218 00226 bool inMemory(); 00227 00236 bool inMemory(off64_t offset, size_t len); 00237 00238 00247 static bool lockAll(); 00248 00257 static bool lockAllCurrent(); 00258 00267 static bool lockAllFuture(); 00268 00275 static bool unlockAll(); 00276 00277 #include <rudiments/private/memorymap.h> 00278 }; 00279 00280 #ifdef RUDIMENTS_NAMESPACE 00281 } 00282 #endif 00283 00284 #endif