]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add the xShmRelease() method to the VFS. The os_unix.c implementation of
authordrh <drh@noemail.net>
Tue, 27 Apr 2010 11:49:27 +0000 (11:49 +0000)
committerdrh <drh@noemail.net>
Tue, 27 Apr 2010 11:49:27 +0000 (11:49 +0000)
the shared memory logic is still non-functional.

FossilOrigin-Name: ed715b47c5f7657fbf901805981867898054b14d

manifest
manifest.uuid
src/os_os2.c
src/os_unix.c
src/os_win.c
src/sqlite.h.in
src/test6.c
src/test_demovfs.c
src/test_devsym.c
src/test_journal.c
src/test_osinst.c

index d9cabb3bc12e935643217f9885d73444013fd84d..68088c71ab4269f760f2003556c9accbf571549d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,8 @@
-C Run\strans.test\sand\savtrans.test\sas\spart\sof\sthe\s"wal"\spermutation.
-D 2010-04-27T06:49:34
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+C Add\sthe\sxShmRelease()\smethod\sto\sthe\sVFS.\s\sThe\sos_unix.c\simplementation\sof\nthe\sshared\smemory\slogic\sis\sstill\snon-functional.
+D 2010-04-27T11:49:27
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in d83a0ffef3dcbfb08b410a6c6dd6c009ec9167fb
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -149,9 +152,9 @@ F src/notify.c cbfa66a836da3a51567209636e6a94059c137930
 F src/os.c 8bc63cf91e9802e2b807198e54e50227fa889306
 F src/os.h 534b082c3cb349ad05fa6fa0b06087e022af282c
 F src/os_common.h 240c88b163b02c21a9f21f87d49678a0aa21ff30
-F src/os_os2.c 082884dc2a20a2f1fddc404f3606ec2abe907b56
-F src/os_unix.c 1acc854259b045cf029c6f95828a5f4b84f361c7
-F src/os_win.c 607b40e40662c6c74ff2400ff03e7f42521d5c75
+F src/os_os2.c 8ad77a418630d7dee91d1bb04f79c2096301d3a0
+F src/os_unix.c 332ff9185aedcbd25568a06ddbdb51f5496b9756
+F src/os_win.c a8fc01d8483be472e495793c01064fd87e56a5c1
 F src/pager.c b4a41030860229e80295fa1f37addab24d21799c
 F src/pager.h cee4487ab4f0911dd9f22a40e3cd55afdb7ef444
 F src/parse.y ace5c7a125d9f2a410e431ee3209034105045f7e
@@ -166,7 +169,7 @@ F src/resolve.c ac5f1a713cd1ae77f08b83cc69581e11bf5ae6f9
 F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697
 F src/select.c c03d8a0565febcde8c6a12c5d77d065fddae889b
 F src/shell.c c40427c7245535a04a9cb4a417b6cc05c022e6a4
-F src/sqlite.h.in 96b0bed7825da354119a9742a83033087c537133
+F src/sqlite.h.in f9399ee58862fd146eff9725dda83b5c82d04a93
 F src/sqlite3ext.h 69dfb8116af51b84a029cddb3b35062354270c89
 F src/sqliteInt.h 700a2df7b8dfe57c3b8d83c52ff40928e026220c
 F src/sqliteLimit.h 3afab2291762b5d09ae20c18feb8e9fa935a60a6
@@ -178,7 +181,7 @@ F src/test2.c b6b43413d495addd039a88b87d65c839f86b18cb
 F src/test3.c 4c21700c73a890a47fc685c1097bfb661346ac94
 F src/test4.c ad03bb987ddedce928f4258c1e7fa4109a73497d
 F src/test5.c cc55900118fa4add8ec9cf69fc4225a4662f76b1
-F src/test6.c d23fc84954751735bcb1050d4606b00952eb7809
+F src/test6.c 49b39daf8e88ed6baab25c524ca5635304f6f315
 F src/test7.c 3f2d63e4ccf97f8c2cf1a7fa0a3c8e2e2a354e6e
 F src/test8.c f959db9a22d882013b64c92753fa793b2ce3bdea
 F src/test9.c bea1e8cf52aa93695487badedd6e1886c321ea60
@@ -187,19 +190,19 @@ F src/test_autoext.c 30e7bd98ab6d70a62bb9ba572e4c7df347fe645e
 F src/test_backup.c c129c91127e9b46e335715ae2e75756e25ba27de
 F src/test_btree.c 47cd771250f09cdc6e12dda5bc71bc0b3abc96e2
 F src/test_config.c 8c408fbffbe8082d1d3dc55044ddfd5580f3c9b9
-F src/test_demovfs.c 68f8e6cfd6b337612e26b7027f97bf7ea02d4e04
-F src/test_devsym.c 76f47435769168fb665828f5cc24a4a0a130c302
+F src/test_demovfs.c da81a5f7785bb352bda7911c332a983ec4f17f27
+F src/test_devsym.c 361d069bf74d4044bf53eb29dc0fa3709ed98baf
 F src/test_func.c 13b582345fb1185a93e46c53310fae8547dcce20
 F src/test_hexio.c 1237f000ec7a491009b1233f5c626ea71bce1ea2
 F src/test_init.c 5d624ffd0409d424cf9adbfe1f056b200270077c
 F src/test_intarray.c d879bbf8e4ce085ab966d1f3c896a7c8b4f5fc99
 F src/test_intarray.h 489edb9068bb926583445cb02589344961054207
-F src/test_journal.c 6f2db1b847929791242e32323721c48c7d2d6e0c
+F src/test_journal.c 0537fcf9d4ecb394ec8b27d887a004ecaab85f16
 F src/test_loadext.c df586c27176e3c2cb2e099c78da67bf14379a56e
 F src/test_malloc.c 2842c922b8e8d992aba722214952204ca025b411
 F src/test_mutex.c ce06b59aca168cd8c520b77159a24352a7469bd3
 F src/test_onefile.c 1d098e7446d89087def7d20e0cdb77a0713ed1bf
-F src/test_osinst.c 79a9b9fdb87fccd7fdc2f523bfbb91f964bafa68
+F src/test_osinst.c f5d1a4ee8b80fc58d1430c56146de748584013a9
 F src/test_pcache.c 7bf828972ac0d2403f5cfa4cd14da41f8ebe73d8
 F src/test_schema.c 8c06ef9ddb240c7a0fcd31bc221a6a2aade58bf0
 F src/test_server.c bbba05c144b5fc4b52ff650a4328027b3fa5fcc6
@@ -808,7 +811,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P b51a5f8bc660616aa264025dd7ad4bdab458814b
-R 25f06e3e98c7ea6b1eb255e6fd74be59
-U dan
-Z 9cceaabbad6baa9da4fc7d1b5b1a7fe5
+P c8893310510148f7e71ede5691606b6fc1c3df4d
+R fb13be4dd0d753be93180ef3cbf1d215
+U drh
+Z 6f72fe2227e763bb3a1c4d06bd5a901c
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.6 (GNU/Linux)
+
+iD8DBQFL1s9KoxKgR168RlERAqqPAJ0SGEtAEImz4CyMiguEDpkB2AslLQCfd9o1
+tWw2lhvU6jis7pTQTOVY1gE=
+=4LgW
+-----END PGP SIGNATURE-----
index dc61bc6fbd956af9221b3436ef043e4c48ad3fe1..2c39d62be3c0c3fd7bbfd4c33255e65ad8dcedd2 100644 (file)
@@ -1 +1 @@
-c8893310510148f7e71ede5691606b6fc1c3df4d
\ No newline at end of file
+ed715b47c5f7657fbf901805981867898054b14d
\ No newline at end of file
index 04b6dce0e920531478daaf0be46b41b06c08c181..1c55e4be66642f21ae0230ee7bb3987b85e86cad 100644 (file)
@@ -1111,16 +1111,7 @@ int sqlite3_os_init(void){
     os2Randomness,     /* xRandomness */
     os2Sleep,          /* xSleep */
     os2CurrentTime,    /* xCurrentTime */
-    os2GetLastError    /* xGetLastError */
-    0,                 /* xShmOpen */
-    0,                 /* xShmSize */
-    0,                 /* xShmPush */
-    0,                 /* xShmPull */
-    0,                 /* xShmLock */
-    0,                 /* xShmClose */
-    0,                 /* xShmDelete */
-    0,                 /* xRename */
-    0,                 /* xCurrentTimeInt64 */
+    os2GetLastError,   /* xGetLastError */
   };
   sqlite3_vfs_register(&os2Vfs, 1);
   initUconvObjects();
index b2cf9be76d4f42500e8601dfda0180d962b498f6..d603caa0d07d1bd20aafdce50f198fbb6298e619 100644 (file)
@@ -4647,8 +4647,13 @@ shm_open_err:
 ** Query and/or changes the size of a shared-memory segment.
 ** The reqSize parameter is the new size of the segment, or -1 to
 ** do just a query.  The size of the segment after resizing is
-** written into pNewSize.  The start of the shared memory buffer
-** is stored in **ppBuffer.
+** written into pNewSize.  A writer lock is held on the shared memory
+** segment while resizing it.
+**
+** If ppBuffer is not NULL, the a reader lock is acquired no the shared
+** memory segment and *ppBuffer is made to point to the start of the 
+** shared memory segment.  xShmRelease() must be called to release the
+** lock.
 */
 static int unixShmSize(
   sqlite3_shm *pSharedMem,  /* Pointer returned by unixShmOpen() */
@@ -4679,6 +4684,14 @@ static int unixShmSize(
   return rc;
 }
 
+/*
+** Release the lock held on the shared memory segment to that other
+** threads are free to resize it if necessary.
+*/
+static int unixShmRelease(sqlite3_shm *pSharedMem){
+  return SQLITE_OK;
+}
+
 /*
 ** Create or release a lock on shared memory.
 */
@@ -5934,6 +5947,7 @@ int sqlite3_os_init(void){
     unixGetLastError,     /* xGetLastError */               \
     unixShmOpen,          /* xShmOpen */                    \
     unixShmSize,          /* xShmSize */                    \
+    unixShmRelease,       /* xShmRelease */                 \
     0,                    /* xShmPush */                    \
     0,                    /* xShmPull */                    \
     unixShmLock,          /* xShmLock */                    \
index 31c3cffce3b33e5c89b00070b7bf3bfea0525897..cfcf49e362a9ebc1152fcb31b63e3a6db6165278 100644 (file)
@@ -1912,16 +1912,7 @@ int sqlite3_os_init(void){
     winRandomness,     /* xRandomness */
     winSleep,          /* xSleep */
     winCurrentTime,    /* xCurrentTime */
-    winGetLastError    /* xGetLastError */
-    0,                 /* xShmOpen */
-    0,                 /* xShmSize */
-    0,                 /* xShmPush */
-    0,                 /* xShmPull */
-    0,                 /* xShmLock */
-    0,                 /* xShmClose */
-    0,                 /* xShmDelete */
-    0,                 /* xRename */
-    0,                 /* xCurrentTimeInt64 */
+    winGetLastError,   /* xGetLastError */
   };
 
   sqlite3_vfs_register(&winVfs, 1);
index f673781e00464020ad669c1be06e6c27df3cc296..7bc7509447c2e30f095d3c3a1d364e53103905b1 100644 (file)
@@ -844,7 +844,8 @@ struct sqlite3_vfs {
   ** definition.  Those that follow are added in version 2 or later
   */
   int (*xShmOpen)(sqlite3_vfs*, const char *zName, sqlite3_shm**);
-  int (*xShmSize)(sqlite3_shm*, int reqSize, int *pNewSize, char **);
+  int (*xShmSize)(sqlite3_shm*, int reqSize, int *pNewSize, char**);
+  int (*xShmRelease)(sqlite3_shm*);
   int (*xShmPush)(sqlite3_shm*);
   int (*xShmPull)(sqlite3_shm*);
   int (*xShmLock)(sqlite3_shm*, int lockType, int ofst, int nByte);
index a6e9954517ea12b3e887a6fb87e51745adc8db41..3da9502fd73ea7ca034bfd8002ebfc0964fcd71d 100644 (file)
@@ -782,15 +782,6 @@ static int crashEnableCmd(
     cfRandomness,         /* xRandomness */
     cfSleep,              /* xSleep */
     cfCurrentTime,        /* xCurrentTime */
-    0,                    /* xShmOpen */
-    0,                    /* xShmSize */
-    0,                    /* xShmPush */
-    0,                    /* xShmPull */
-    0,                    /* xShmLock */
-    0,                    /* xShmClose */
-    0,                    /* xShmDelete */
-    0,                    /* xRename */
-    0                     /* xCurrentTimeInt64 */
   };
 
   if( objc!=2 ){
index d91a389dbbc90ca1b60fd6bf52ddfea67acebba3..7cdae806703590c22b250f86a5e5018e0ac751b0 100644 (file)
@@ -624,15 +624,6 @@ sqlite3_vfs *sqlite3_demovfs(void){
     demoRandomness,               /* xRandomness */
     demoSleep,                    /* xSleep */
     demoCurrentTime,              /* xCurrentTime */
-    0,                            /* xShmOpen */
-    0,                            /* xShmSize */
-    0,                            /* xShmPush */
-    0,                            /* xShmPull */
-    0,                            /* xShmLock */
-    0,                            /* xShmClose */
-    0,                            /* xShmDelete */
-    0,                            /* xRename */
-    0                             /* xCurrentTimeInt64 */
   };
   return &demovfs;
 }
index 4249573aa1f629ea12d2c59db7790d521ae9e843..9f715380447b2070a1e5bbd1d69e62beea56c87e 100644 (file)
@@ -93,15 +93,6 @@ static sqlite3_vfs devsym_vfs = {
   devsymRandomness,         /* xRandomness */
   devsymSleep,              /* xSleep */
   devsymCurrentTime,        /* xCurrentTime */
-  0,                        /* xShmOpen */
-  0,                        /* xShmSize */
-  0,                        /* xShmPush */
-  0,                        /* xShmPull */
-  0,                        /* xShmLock */
-  0,                        /* xShmClose */
-  0,                        /* xShmDelete */
-  0,                        /* xRename */
-  0                         /* xCurrentTimeInt64 */
 };
 
 static sqlite3_io_methods devsym_io_methods = {
index fcfe778d1b1c79e07f712c23a114073c3fec9ed5..020b41575d76fc3bba62273939782bccd00a68c5 100644 (file)
@@ -180,15 +180,6 @@ static sqlite3_vfs jt_vfs = {
   jtRandomness,                  /* xRandomness */
   jtSleep,                       /* xSleep */
   jtCurrentTime,                 /* xCurrentTime */
-  0,                             /* xShmOpen */
-  0,                             /* xShmSize */
-  0,                             /* xShmPush */
-  0,                             /* xShmPull */
-  0,                             /* xShmLock */
-  0,                             /* xShmClose */
-  0,                             /* xShmDelete */
-  0,                             /* xRename */
-  0                              /* xCurrentTimeInt64 */
 };
 
 static sqlite3_io_methods jt_io_methods = {
index c6d16aa67b911f7d7673157c4bf7e6b9000ec57a..365da38d8690881d055ca97634d2bf617fb20908 100644 (file)
@@ -204,15 +204,6 @@ static sqlite3_vfs inst_vfs = {
   instRandomness,         /* xRandomness */
   instSleep,              /* xSleep */
   instCurrentTime,        /* xCurrentTime */
-  0,                      /* xShmOpen */
-  0,                      /* xShmSize */
-  0,                      /* xShmPush */
-  0,                      /* xShmPull */
-  0,                      /* xShmLock */
-  0,                      /* xShmClose */
-  0,                      /* xShmDelete */
-  0,                      /* xRename */
-  0                       /* xCurrentTimeInt64 */
 };
 
 static sqlite3_io_methods inst_io_methods = {