]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add munmap and mremap to the set of os interfaces that can be overloaded
authordrh <drh@noemail.net>
Mon, 25 Mar 2013 20:50:25 +0000 (20:50 +0000)
committerdrh <drh@noemail.net>
Mon, 25 Mar 2013 20:50:25 +0000 (20:50 +0000)
in os_unix.c.

FossilOrigin-Name: 8776047bd776bbf266eb9c3b56683badb84ae73e

manifest
manifest.uuid
src/os_unix.c
test/syscall.test

index 02d611b4edf7253ff505df98682f2803f18fc8da..b0a5aaeb5ff73d19b4a2feeef7c5c8a6d3d23eb0 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Use\smremap()\son\sLinux.
-D 2013-03-25T20:30:13.313
+C Add\smunmap\sand\smremap\sto\sthe\sset\sof\sos\sinterfaces\sthat\scan\sbe\soverloaded\nin\sos_unix.c.
+D 2013-03-25T20:50:25.204
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in df3e48659d80e1b7765785d8d66c86b320f72cc7
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -160,7 +160,7 @@ F src/notify.c 976dd0f6171d4588e89e874fcc765e92914b6d30
 F src/os.c 809d0707cec693e1b9b376ab229271ad74c3d35d
 F src/os.h ae08bcc5f6ec6b339f4a2adf3931bb88cc14c3e4
 F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04
-F src/os_unix.c a4d7076a6edd4e6a8594191880e540a31b2c8598
+F src/os_unix.c 6b3f972a8b515ce151d1d075080b10d52adbfbd6
 F src/os_win.c e4f17ddf79f2a9373e33ed70565e765d65324589
 F src/pager.c 4e1b55e7a50db0466b06f8ec114799b432c18131
 F src/pager.h 241d72dc0905df042da165f086d03505cb0bb50c
@@ -747,7 +747,7 @@ F test/subselect.test d24fd8757daf97dafd2e889c73ea4c4272dcf4e4
 F test/substr.test 18f57c4ca8a598805c4d64e304c418734d843c1a
 F test/superlock.test 1cde669f68d2dd37d6c9bd35eee1d95491ae3fc2
 F test/sync.test a34cd43e98b7fb84eabbf38f7ed8f7349b3f3d85
-F test/syscall.test cf59bafccb143f8df21c043b3201d5afa9fe2474
+F test/syscall.test a653783d985108c4912cc64d341ffbbb55ad2806
 F test/sysfault.test 3258d6c8213b44f2669994d798a5eb5327b40146
 F test/table.test a59d985ca366e39b17b175f387f9d5db5a18d4e2
 F test/tableapi.test 2674633fa95d80da917571ebdd759a14d9819126
@@ -1040,7 +1040,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
 F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
-P a607d63f0b6a3d3785e9385187d3e6b92e14fc70
-R 18e19b2d7d709a7b2b83b278bfc05f98
-U dan
-Z f03c297d3465d1cb9dc069838022accc
+P 431aecc8600c29c203546e48d256510510238887
+R 420b4ff666854b5074068c14722ea276
+U drh
+Z feb03effee9a1e5215de46a6338d0c52
index e4f7651d39f9217cdda1e64f85018c7c136b850a..5b13e95f757de3abe54ddc4fb64eb1c4e04d96e8 100644 (file)
@@ -1 +1 @@
-431aecc8600c29c203546e48d256510510238887
\ No newline at end of file
+8776047bd776bbf266eb9c3b56683badb84ae73e
\ No newline at end of file
index 33be79342377eb5d3221c4806eefcf368d9de041..625f4134062d0eb634093d1ccdd091bfed0dbc19 100644 (file)
@@ -447,6 +447,16 @@ static struct unix_syscall {
   { "mmap",       (sqlite3_syscall_ptr)mmap,     0 },
 #define osMmap ((void*(*)(void*,size_t,int,int,int,off_t))aSyscall[21].pCurrent)
 
+  { "munmap",       (sqlite3_syscall_ptr)munmap,          0 },
+#define osMunmap ((void*(*)(void*,size_t))aSyscall[22].pCurrent)
+
+#if defined(__linux__) && defined(_GNU_SOURCE)
+  { "mremap",       (sqlite3_syscall_ptr)mremap,          0 },
+#else
+  { "mremap",       (sqlite3_syscall_ptr)0,               0 },
+#endif
+#define osMremap ((void*(*)(void*,size_t,size_t,int,...))aSyscall[23].pCurrent)
+
 }; /* End of the overrideable system calls */
 
 /*
@@ -4005,7 +4015,7 @@ static void unixShmPurge(unixFile *pFd){
     sqlite3_mutex_free(p->mutex);
     for(i=0; i<p->nRegion; i++){
       if( p->h>=0 ){
-        munmap(p->apRegion[i], p->szRegion);
+        osMunmap(p->apRegion[i], p->szRegion);
       }else{
         sqlite3_free(p->apRegion[i]);
       }
@@ -4278,7 +4288,7 @@ static int unixShmMap(
     while(pShmNode->nRegion<=iRegion){
       void *pMem;
       if( pShmNode->h>=0 ){
-        pMem = mmap(0, szRegion,
+        pMem = osMmap(0, szRegion,
             pShmNode->isReadonly ? PROT_READ : PROT_READ|PROT_WRITE, 
             MAP_SHARED, pShmNode->h, szRegion*(i64)pShmNode->nRegion
         );
@@ -4501,7 +4511,7 @@ static int unixShmUnmap(
 static void unixUnmapfile(unixFile *pFd){
   assert( pFd->nFetchOut==0 );
   if( pFd->pMapRegion ){
-    munmap(pFd->pMapRegion, pFd->mmapOrigsize);
+    osMunmap(pFd->pMapRegion, pFd->mmapOrigsize);
     pFd->pMapRegion = 0;
     pFd->mmapSize = 0;
     pFd->mmapOrigsize = 0;
@@ -4548,7 +4558,7 @@ static int unixMapfile(unixFile *pFd, i64 nByte){
 
 #if defined(__linux__) && defined(_GNU_SOURCE)
     if( pFd->pMapRegion && nMap>0 ){
-      pNew = mremap(pFd->pMapRegion, pFd->mmapOrigsize, nMap, MREMAP_MAYMOVE);
+      pNew = osMremap(pFd->pMapRegion, pFd->mmapOrigsize, nMap, MREMAP_MAYMOVE);
     }else
 #endif
     {
@@ -7196,7 +7206,7 @@ int sqlite3_os_init(void){
 
   /* Double-check that the aSyscall[] array has been constructed
   ** correctly.  See ticket [bb3a86e890c8e96ab] */
-  assert( ArraySize(aSyscall)==22 );
+  assert( ArraySize(aSyscall)==24 );
 
   /* Register all VFSes defined in the aVfs[] array */
   for(i=0; i<(sizeof(aVfs)/sizeof(sqlite3_vfs)); i++){
index b9a3b196e3616b49aa85943437ebfde47ab8dcc4..5bf12258678610c0d9e27d89491cf71b6cfacb51 100644 (file)
@@ -60,7 +60,7 @@ foreach s {
     open close access getcwd stat fstat ftruncate
     fcntl read pread write pwrite fchmod fallocate
     pread64 pwrite64 unlink openDirectory mkdir rmdir 
-    statvfs fchown umask mmap
+    statvfs fchown umask mmap munmap mremap
 } {
   if {[test_syscall exists $s]} {lappend syscall_list $s}
 }