diff options
author | drh <drh@noemail.net> | 2006-01-06 03:29:56 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2006-01-06 03:29:56 +0000 |
commit | e19d594067ca72fe924b4cb10ff4e664b383c7f5 (patch) | |
tree | 0c47052e3668fd2290aeb6edef8147178a63f6e0 /src/test_async.c | |
parent | 47ded16fdc32aade452ebfb9381800e794758150 (diff) | |
download | sqlite-e19d594067ca72fe924b4cb10ff4e664b383c7f5.tar.gz sqlite-e19d594067ca72fe924b4cb10ff4e664b383c7f5.zip |
Enable async testing. Modify the OS layer interface. Add the sqlite3_aux.h include file. Add tests for boolean value representation in file format 4. (CVS 2866)
FossilOrigin-Name: b8332aa8b83142898779972b3dff13cbe3c78623
Diffstat (limited to 'src/test_async.c')
-rw-r--r-- | src/test_async.c | 64 |
1 files changed, 27 insertions, 37 deletions
diff --git a/src/test_async.c b/src/test_async.c index 8ba10ee28..e8d9ad1ae 100644 --- a/src/test_async.c +++ b/src/test_async.c @@ -235,7 +235,7 @@ struct AsyncFile { ** sqlite3_async_flush() ). */ static void addAsyncWrite(AsyncWrite *pWrite){ - sqlite3_os_enter_mutex(); + sqlite3Os.xEnterMutex(); assert( !pWrite->pNext ); if( sqlite3_asyncListLast ){ assert( sqlite3_asyncListFirst ); @@ -244,7 +244,7 @@ static void addAsyncWrite(AsyncWrite *pWrite){ sqlite3_asyncListFirst = pWrite; } sqlite3_asyncListLast = pWrite; - sqlite3_os_leave_mutex(); + sqlite3Os.xLeaveMutex(); } /* @@ -360,7 +360,7 @@ static int asyncRead(OsFile *id, void *obuf, int amt){ AsyncFile *pFile = (AsyncFile *)id; /* Grab the mutex for the duration of the call */ - sqlite3_os_enter_mutex(); + sqlite3Os.xEnterMutex(); if( pFile->pBaseRead ){ rc = sqlite3OsFileSize(pFile->pBaseRead, &filesize); @@ -401,7 +401,7 @@ static int asyncRead(OsFile *id, void *obuf, int amt){ } asyncread_out: - sqlite3_os_leave_mutex(); + sqlite3Os.xLeaveMutex(); return rc; } @@ -427,7 +427,7 @@ int asyncFileSize(OsFile *id, i64 *pSize){ int rc = SQLITE_OK; i64 s = 0; OsFile *pBase; - sqlite3_os_enter_mutex(); + sqlite3Os.xEnterMutex(); /* Read the filesystem size from the base file. If pBaseRead is NULL, this ** means the file hasn't been opened yet. In this case all relevant data @@ -455,7 +455,7 @@ int asyncFileSize(OsFile *id, i64 *pSize){ } *pSize = s; } - sqlite3_os_leave_mutex(); + sqlite3Os.xLeaveMutex(); return rc; } @@ -622,7 +622,7 @@ static int asyncSyncDirectory(const char *z){ static int asyncFileExists(const char *z){ int ret; AsyncWrite *p; - sqlite3_os_enter_mutex(); + sqlite3Os.xEnterMutex(); /* See if the real file system contains the specified file. */ ret = xOrigFileExists(z); @@ -635,7 +635,7 @@ static int asyncFileExists(const char *z){ } } - sqlite3_os_leave_mutex(); + sqlite3Os.xLeaveMutex(); return ret; } @@ -648,28 +648,19 @@ static int asyncFileExists(const char *z){ */ int sqlite3_async_enable(void){ if( xOrigOpenReadWrite==0 ){ -#define ROUTINE(a,b,c) {(void**)&a,SQLITE_OS_ROUTINE_ ## b,(void *)c} - struct ReplacementOp { - void ** pOldRoutine; - int eRoutine; - void * pNewRoutine; - } aRoutines[] = { - ROUTINE(xOrigOpenReadWrite, OPENREADWRITE, asyncOpenReadWrite), - ROUTINE(xOrigOpenReadOnly, OPENREADONLY, asyncOpenReadOnly), - ROUTINE(xOrigOpenExclusive, OPENEXCLUSIVE, asyncOpenExclusive), - ROUTINE(xOrigDelete, DELETE, asyncDelete), - ROUTINE(xOrigFileExists, FILEEXISTS, asyncFileExists), - ROUTINE(xOrigSyncDirectory, SYNCDIRECTORY, asyncSyncDirectory) - }; -#undef ROUTINE - int i; - - sqlite3_os_enter_mutex(); - for(i=0; i<sizeof(aRoutines)/sizeof(aRoutines[0]); i++){ - struct ReplacementOp *p = &aRoutines[i]; - *(p->pOldRoutine) = sqlite3_os_routine_set(p->eRoutine, p->pNewRoutine); - } - sqlite3_os_leave_mutex(); + xOrigOpenReadWrite = sqlite3Os.xOpenReadWrite; + xOrigOpenReadOnly = sqlite3Os.xOpenReadOnly; + xOrigOpenExclusive = sqlite3Os.xOpenExclusive; + xOrigDelete = sqlite3Os.xDelete; + xOrigFileExists = sqlite3Os.xFileExists; + xOrigSyncDirectory = sqlite3Os.xSyncDirectory; + + sqlite3Os.xOpenReadWrite = asyncOpenReadWrite; + sqlite3Os.xOpenReadOnly = asyncOpenReadOnly; + sqlite3Os.xOpenExclusive = asyncOpenExclusive; + sqlite3Os.xDelete = asyncDelete; + sqlite3Os.xFileExists = asyncFileExists; + sqlite3Os.xSyncDirectory = asyncSyncDirectory; } return SQLITE_OK; } @@ -688,9 +679,9 @@ int sqlite3_async_flush(void){ ** Or, if some other thread is already inside this function, return ** SQLITE_BUSY to the caller. */ - sqlite3_os_enter_mutex(); + sqlite3Os.xEnterMutex(); if( sqlite3_asyncIoBusy ){ - sqlite3_os_leave_mutex(); + sqlite3Os.xLeaveMutex(); return SQLITE_BUSY; } sqlite3_asyncIoBusy = 1; @@ -724,7 +715,7 @@ int sqlite3_async_flush(void){ p->op==ASYNC_OPENEXCLUSIVE || (pBase && (p->op==ASYNC_SYNC || p->op==ASYNC_WRITE) ) ){ - sqlite3_os_leave_mutex(); + sqlite3Os.xLeaveMutex(); isInsideMutex = 0; } if( !pBase ){ @@ -781,7 +772,7 @@ int sqlite3_async_flush(void){ OsFile *pBase = 0; rc = xOrigOpenExclusive(p->zBuf, &pBase, delFlag); - sqlite3_os_enter_mutex(); + sqlite3Os.xEnterMutex(); isInsideMutex = 1; if( rc==SQLITE_OK ){ pFile->pBaseRead = pBase; @@ -797,7 +788,7 @@ int sqlite3_async_flush(void){ ** global write-op queue. */ if( !isInsideMutex ){ - sqlite3_os_enter_mutex(); + sqlite3Os.xEnterMutex(); } if( rc==SQLITE_OK ){ removeAsyncWrite(p); @@ -808,7 +799,7 @@ int sqlite3_async_flush(void){ /* Clear the io-busy flag and exit the mutex */ assert( sqlite3_asyncIoBusy ); sqlite3_asyncIoBusy = 0; - sqlite3_os_leave_mutex(); + sqlite3Os.xLeaveMutex(); return rc; } @@ -926,4 +917,3 @@ int Sqlitetestasync_Init(Tcl_Interp *interp){ } #endif - |