Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | More cleanup, etc. to support MSVC compiles. (CVS 6582) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
2cd9655e7313671f2bbe8d4a6f13246c |
User & Date: | shane 2009-04-30 17:45:34.000 |
Context
2009-05-01
| ||
02:08 | Fix processing of BEFORE triggers on INSERT statements with RHS SELECTs that insert a NULL into the INTEGER PRIMARY KEY. Ticket #3832. (CVS 6583) (check-in: 4a1f6a3a9a user: drh tags: trunk) | |
2009-04-30
| ||
17:45 | More cleanup, etc. to support MSVC compiles. (CVS 6582) (check-in: 2cd9655e73 user: shane tags: trunk) | |
17:38 | Disable an always-false test in the attach.c module. (CVS 6581) (check-in: 92b69481bd user: drh tags: trunk) | |
Changes
Changes to ext/async/sqlite3async.c.
1 2 3 4 5 6 7 8 9 10 11 12 | /* ** 2005 December 14 ** ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: ** ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** | | | > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | /* ** 2005 December 14 ** ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: ** ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** ** $Id: sqlite3async.c,v 1.6 2009/04/30 17:45:34 shane Exp $ ** ** This file contains the implementation of an asynchronous IO backend ** for SQLite. */ #if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_ASYNCIO) #include "sqlite3async.h" #include "sqlite3.h" #include <stdarg.h> #include <string.h> #include <assert.h> /* Useful macros used in several places */ #define MIN(x,y) ((x)<(y)?(x):(y)) #define MAX(x,y) ((x)>(y)?(x):(y)) #ifndef SQLITE_AMALGAMATION /* Macro to mark parameters as unused and silence compiler warnings. */ #define UNUSED_PARAMETER(x) (void)(x) #endif /* Forward references */ typedef struct AsyncWrite AsyncWrite; typedef struct AsyncFile AsyncFile; typedef struct AsyncFileData AsyncFileData; typedef struct AsyncFileLock AsyncFileLock; typedef struct AsyncLock AsyncLock; |
︙ | ︙ | |||
237 238 239 240 241 242 243 244 245 246 247 248 249 250 | /* Values for use as the 'eCond' argument of the above functions. */ #define ASYNC_COND_QUEUE 0 /************************************************************************* ** Start of OS specific code. */ #if SQLITE_OS_WIN || defined(_WIN32) || defined(WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__BORLANDC__) /* The following block contains the win32 specific code. */ #define mutex_held(X) (GetCurrentThreadId()==primitives.aHolder[X]) static struct AsyncPrimitives { int isInit; | > > | 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 | /* Values for use as the 'eCond' argument of the above functions. */ #define ASYNC_COND_QUEUE 0 /************************************************************************* ** Start of OS specific code. */ #if SQLITE_OS_WIN || defined(_WIN32) || defined(WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__BORLANDC__) #include <windows.h> /* The following block contains the win32 specific code. */ #define mutex_held(X) (GetCurrentThreadId()==primitives.aHolder[X]) static struct AsyncPrimitives { int isInit; |
︙ | ︙ | |||
298 299 300 301 302 303 304 | async_mutex_enter(eMutex); } static void async_cond_signal(int eCond){ assert( mutex_held(ASYNC_MUTEX_QUEUE) ); SetEvent(primitives.aCond[eCond]); } static void async_sched_yield(void){ | < | 305 306 307 308 309 310 311 312 313 314 315 316 317 318 | async_mutex_enter(eMutex); } static void async_cond_signal(int eCond){ assert( mutex_held(ASYNC_MUTEX_QUEUE) ); SetEvent(primitives.aCond[eCond]); } static void async_sched_yield(void){ Sleep(0); } #else /* The following block contains the pthreads specific code. */ #include <pthread.h> #include <sched.h> |
︙ | ︙ | |||
699 700 701 702 703 704 705 | )){ sqlite3_int64 iBeginOut = (pWrite->iOffset-iOffset); sqlite3_int64 iBeginIn = -iBeginOut; int nCopy; if( iBeginIn<0 ) iBeginIn = 0; if( iBeginOut<0 ) iBeginOut = 0; | | | 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 | )){ sqlite3_int64 iBeginOut = (pWrite->iOffset-iOffset); sqlite3_int64 iBeginIn = -iBeginOut; int nCopy; if( iBeginIn<0 ) iBeginIn = 0; if( iBeginOut<0 ) iBeginOut = 0; nCopy = (int)MIN(pWrite->nByte-iBeginIn, iAmt-iBeginOut); if( nCopy>0 ){ memcpy(&((char *)zOut)[iBeginOut], &pWrite->zBuf[iBeginIn], nCopy); ASYNC_TRACE(("OVERREAD %d bytes at %d\n", nCopy, iBeginOut+iOffset)); } } } |
︙ | ︙ | |||
747 748 749 750 751 752 753 | AsyncFileData *p = ((AsyncFile *)pFile)->pData; int rc = SQLITE_OK; sqlite3_int64 s = 0; sqlite3_file *pBase; async_mutex_enter(ASYNC_MUTEX_QUEUE); | | | 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 | AsyncFileData *p = ((AsyncFile *)pFile)->pData; int rc = SQLITE_OK; sqlite3_int64 s = 0; sqlite3_file *pBase; async_mutex_enter(ASYNC_MUTEX_QUEUE); /* Read the filesystem size from the base file. If pMethods is NULL, this ** means the file hasn't been opened yet. In this case all relevant data ** must be in the write-op queue anyway, so we can omit reading from the ** file-system. */ pBase = p->pBaseRead; if( pBase->pMethods ){ rc = pBase->pMethods->xFileSize(pBase, &s); |
︙ | ︙ |