aboutsummaryrefslogtreecommitdiff
path: root/ext/async/sqlite3async.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/async/sqlite3async.c')
-rw-r--r--ext/async/sqlite3async.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/ext/async/sqlite3async.c b/ext/async/sqlite3async.c
index c2532b9c0..5c52f5f65 100644
--- a/ext/async/sqlite3async.c
+++ b/ext/async/sqlite3async.c
@@ -10,7 +10,7 @@
**
*************************************************************************
**
-** $Id: sqlite3async.c,v 1.4 2009/04/25 08:39:15 danielk1977 Exp $
+** $Id: sqlite3async.c,v 1.5 2009/04/29 18:12:00 shane Exp $
**
** This file contains the implementation of an asynchronous IO backend
** for SQLite.
@@ -19,7 +19,7 @@
#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_ASYNCIO)
#include "sqlite3async.h"
-#include "sqlite3.h"
+#include "sqliteInt.h"
#include <stdarg.h>
#include <string.h>
#include <assert.h>
@@ -49,6 +49,8 @@ static void asyncTrace(const char *zFormat, ...){
fprintf(stderr, "[%d] %s", 0 /* (int)pthread_self() */, z);
sqlite3_free(z);
}
+#else
+# define ASYNC_TRACE(X)
#endif
/*
@@ -301,6 +303,7 @@ static void async_cond_signal(int eCond){
}
static void async_sched_yield(void){
/* Todo: Find out if win32 offers anything like sched_yield() */
+ Sleep(0);
}
#else
@@ -678,7 +681,7 @@ static int asyncRead(
if( rc!=SQLITE_OK ){
goto asyncread_out;
}
- nRead = MIN(filesize - iOffset, iAmt);
+ nRead = (int)MIN(filesize - iOffset, iAmt);
if( nRead>0 ){
rc = pBase->pMethods->xRead(pBase, zOut, nRead, iOffset);
ASYNC_TRACE(("READ %s %d bytes at %d\n", p->zName, nRead, iOffset));
@@ -694,8 +697,8 @@ static int asyncRead(
(pWrite->pFileData==p) ||
(zName && pWrite->pFileData->zName==zName)
)){
- int iBeginOut = (pWrite->iOffset-iOffset);
- int iBeginIn = -iBeginOut;
+ sqlite3_int64 iBeginOut = (pWrite->iOffset-iOffset);
+ sqlite3_int64 iBeginIn = -iBeginOut;
int nCopy;
if( iBeginIn<0 ) iBeginIn = 0;
@@ -901,6 +904,7 @@ static int asyncCheckReservedLock(sqlite3_file *pFile, int *pResOut){
for(pIter=p->pLock->pList; pIter; pIter=pIter->pNext){
if( pIter->eLock>=SQLITE_LOCK_RESERVED ){
ret = 1;
+ break;
}
}
async_mutex_leave(ASYNC_MUTEX_LOCK);
@@ -927,13 +931,15 @@ static int asyncFileControl(sqlite3_file *id, int op, void *pArg){
/*
** Return the device characteristics and sector-size of the device. It
-** is not tricky to implement these correctly, as this backend might
+** is tricky to implement these correctly, as this backend might
** not have an open file handle at this point.
*/
static int asyncSectorSize(sqlite3_file *pFile){
+ UNUSED_PARAMETER(pFile);
return 512;
}
static int asyncDeviceCharacteristics(sqlite3_file *pFile){
+ UNUSED_PARAMETER(pFile);
return 0;
}
@@ -1022,7 +1028,7 @@ static int asyncOpen(
/* If zName is NULL, then the upper layer is requesting an anonymous file */
if( zName ){
- nName = strlen(zName)+1;
+ nName = (int)strlen(zName)+1;
}
nByte = (
@@ -1142,7 +1148,8 @@ static int asyncOpen(
** write-op queue to perform the delete.
*/
static int asyncDelete(sqlite3_vfs *pAsyncVfs, const char *z, int syncDir){
- return addNewAsyncWrite(0, ASYNC_DELETE, syncDir, strlen(z)+1, z);
+ UNUSED_PARAMETER(pAsyncVfs);
+ return addNewAsyncWrite(0, ASYNC_DELETE, syncDir, (int)strlen(z)+1, z);
}
/*