Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | In the debugging output for SHM-LOCK in os_unix.c, use symbolic names for the lock states rather than raw numbers. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | wal |
Files: | files | file ages | folders |
SHA1: |
2afc33de2b2012d034fb0d2057a5a45e |
User & Date: | drh 2010-04-30 16:48:20.000 |
Context
2010-04-30
| ||
16:50 | Fix a problem with calculating the required size of the wal-index when appending frames. (check-in: 9526b11130 user: dan tags: wal) | |
16:48 | In the debugging output for SHM-LOCK in os_unix.c, use symbolic names for the lock states rather than raw numbers. (check-in: 2afc33de2b user: drh tags: wal) | |
16:41 | Fix a problem in the previous commit. Both unixShm.lockState and unixShm.readLock should be set to READ when downgrading from a WRITE to a READ lock (check-in: 90119fecbc user: dan tags: wal) | |
Changes
Changes to src/os_unix.c.
︙ | ︙ | |||
5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 | static int unixShmRelease(sqlite3_shm *pSharedMem){ unixShm *p = (unixShm*)pSharedMem; unixShmFile *pFile = p->pFile; sqlite3_mutex_leave(pFile->mutexBuf); return SQLITE_OK; } /* ** Change the lock state for a shared-memory segment. */ static int unixShmLock( sqlite3_shm *pSharedMem, /* Pointer from unixShmOpen() */ | > > > > > > > > > > > > > > | 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 | static int unixShmRelease(sqlite3_shm *pSharedMem){ unixShm *p = (unixShm*)pSharedMem; unixShmFile *pFile = p->pFile; sqlite3_mutex_leave(pFile->mutexBuf); return SQLITE_OK; } /* ** Symbolic names for LOCK states used for debugging. */ #ifdef SQLITE_DEBUG static const char *azLkName[] = { "UNLOCK", "READ", "READ_FULL", "WRITE", "PENDING", "CHECKPOINT", "RECOVER" }; #endif /* ** Change the lock state for a shared-memory segment. */ static int unixShmLock( sqlite3_shm *pSharedMem, /* Pointer from unixShmOpen() */ |
︙ | ︙ | |||
5201 5202 5203 5204 5205 5206 5207 | /* Return directly if this is just a lock state query, or if ** the connection is already in the desired locking state. */ if( desiredLock==SQLITE_SHM_QUERY || desiredLock==p->lockState || (desiredLock==SQLITE_SHM_READ && p->lockState==SQLITE_SHM_READ_FULL) ){ | | | | | | 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 | /* Return directly if this is just a lock state query, or if ** the connection is already in the desired locking state. */ if( desiredLock==SQLITE_SHM_QUERY || desiredLock==p->lockState || (desiredLock==SQLITE_SHM_READ && p->lockState==SQLITE_SHM_READ_FULL) ){ OSTRACE(("SHM-LOCK shmid-%d, pid-%d request %s and got %s\n", p->id, getpid(), azLkName[desiredLock], azLkName[p->lockState])); if( pGotLock ) *pGotLock = p->lockState; return SQLITE_OK; } OSTRACE(("SHM-LOCK shmid-%d, pid-%d request %s->%s\n", p->id, getpid(), azLkName[p->lockState], azLkName[desiredLock])); sqlite3_mutex_enter(pFile->mutex); switch( desiredLock ){ case SQLITE_SHM_UNLOCK: { assert( p->lockState!=SQLITE_SHM_RECOVER ); unixShmUnlock(pFile, p, UNIX_SHM_A|UNIX_SHM_B|UNIX_SHM_C|UNIX_SHM_D); rc = SQLITE_OK; p->lockState = SQLITE_SHM_UNLOCK; |
︙ | ︙ | |||
5297 5298 5299 5300 5301 5302 5303 | if( rc==SQLITE_OK ){ p->lockState = SQLITE_SHM_RECOVER; } break; } } sqlite3_mutex_leave(pFile->mutex); | | > | 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 | if( rc==SQLITE_OK ){ p->lockState = SQLITE_SHM_RECOVER; } break; } } sqlite3_mutex_leave(pFile->mutex); OSTRACE(("SHM-LOCK shmid-%d, pid-%d got %s\n", p->id, getpid(), azLkName[p->lockState])); if( pGotLock ) *pGotLock = p->lockState; return rc; } /* ** Delete a shared-memory segment from the system. */ |
︙ | ︙ |