pWal             41571 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalClose(Wal *pWal, int sync_flags, int, u8 *);
pWal             41583 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalBeginReadTransaction(Wal *pWal, int *);
pWal             41584 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE void sqlite3WalEndReadTransaction(Wal *pWal);
pWal             41591 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE Pgno sqlite3WalDbsize(Wal *pWal);
pWal             41594 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalBeginWriteTransaction(Wal *pWal);
pWal             41595 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalEndWriteTransaction(Wal *pWal);
pWal             41598 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalUndo(Wal *pWal, int (*xUndo)(void *, Pgno), void *pUndoCtx);
pWal             41602 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE void sqlite3WalSavepoint(Wal *pWal, u32 *aWalData);
pWal             41606 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalSavepointUndo(Wal *pWal, u32 *aWalData);
pWal             41609 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalFrames(Wal *pWal, int, PgHdr *, Pgno, int, int);
pWal             41613 ext/sqlite3/libsqlite/sqlite3.c   Wal *pWal,                      /* Write-ahead log connection */
pWal             41629 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalCallback(Wal *pWal);
pWal             41634 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalExclusiveMode(Wal *pWal, int op);
pWal             41640 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalHeapMemory(Wal *pWal);
pWal             41646 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalFramesize(Wal *pWal);
pWal             42333 ext/sqlite3/libsqlite/sqlite3.c   Wal *pWal;                  /* Write-ahead log used by "journal_mode=wal" */
pWal             42449 ext/sqlite3/libsqlite/sqlite3.c   return (pPager->pWal!=0);
pWal             43398 ext/sqlite3/libsqlite/sqlite3.c     sqlite3WalEndReadTransaction(pPager->pWal);
pWal             43640 ext/sqlite3/libsqlite/sqlite3.c     rc2 = sqlite3WalEndWriteTransaction(pPager->pWal);
pWal             43659 ext/sqlite3/libsqlite/sqlite3.c    && (!pagerUseWal(pPager) || sqlite3WalExclusiveMode(pPager->pWal, 0))
pWal             44521 ext/sqlite3/libsqlite/sqlite3.c     rc = sqlite3WalReadFrame(pPager->pWal, iFrame, pgsz, pPg->pData);
pWal             44610 ext/sqlite3/libsqlite/sqlite3.c       rc = sqlite3WalFindFrame(pPager->pWal, pPg->pgno, &iFrame);
pWal             44649 ext/sqlite3/libsqlite/sqlite3.c   rc = sqlite3WalUndo(pPager->pWal, pagerUndoCallback, (void *)pPager);
pWal             44679 ext/sqlite3/libsqlite/sqlite3.c   assert( pPager->pWal );
pWal             44709 ext/sqlite3/libsqlite/sqlite3.c   rc = sqlite3WalFrames(pPager->pWal, 
pWal             44748 ext/sqlite3/libsqlite/sqlite3.c   sqlite3WalEndReadTransaction(pPager->pWal);
pWal             44750 ext/sqlite3/libsqlite/sqlite3.c   rc = sqlite3WalBeginReadTransaction(pPager->pWal, &changed);
pWal             44780 ext/sqlite3/libsqlite/sqlite3.c   nPage = sqlite3WalDbsize(pPager->pWal);
pWal             44991 ext/sqlite3/libsqlite/sqlite3.c       rc = sqlite3WalSavepointUndo(pPager->pWal, pSavepoint->aWalData);
pWal             45609 ext/sqlite3/libsqlite/sqlite3.c   sqlite3WalClose(pPager->pWal, pPager->ckptSyncFlags, pPager->pageSize, pTmp);
pWal             45610 ext/sqlite3/libsqlite/sqlite3.c   pPager->pWal = 0;
pWal             46811 ext/sqlite3/libsqlite/sqlite3.c     assert( pPager->pWal==0 || rc==SQLITE_OK );
pWal             46936 ext/sqlite3/libsqlite/sqlite3.c       rc = sqlite3WalFindFrame(pPager->pWal, pgno, &iFrame);
pWal             47035 ext/sqlite3/libsqlite/sqlite3.c         rc = sqlite3WalFindFrame(pPager->pWal, pgno, &iFrame);
pWal             47230 ext/sqlite3/libsqlite/sqlite3.c       if( pPager->exclusiveMode && sqlite3WalExclusiveMode(pPager->pWal, -1) ){
pWal             47235 ext/sqlite3/libsqlite/sqlite3.c         sqlite3WalExclusiveMode(pPager->pWal, 1);
pWal             47243 ext/sqlite3/libsqlite/sqlite3.c       rc = sqlite3WalBeginWriteTransaction(pPager->pWal);
pWal             48155 ext/sqlite3/libsqlite/sqlite3.c         sqlite3WalSavepoint(pPager->pWal, aNew[ii].aWalData);
pWal             48530 ext/sqlite3/libsqlite/sqlite3.c   assert( pPager->exclusiveMode || 0==sqlite3WalHeapMemory(pPager->pWal) );
pWal             48531 ext/sqlite3/libsqlite/sqlite3.c   if( eMode>=0 && !pPager->tempFile && !sqlite3WalHeapMemory(pPager->pWal) ){
pWal             48680 ext/sqlite3/libsqlite/sqlite3.c     sqlite3WalLimit(pPager->pWal, iLimit);
pWal             48714 ext/sqlite3/libsqlite/sqlite3.c   if( pPager->pWal ){
pWal             48715 ext/sqlite3/libsqlite/sqlite3.c     rc = sqlite3WalCheckpoint(pPager->pWal, eMode,
pWal             48726 ext/sqlite3/libsqlite/sqlite3.c   return sqlite3WalCallback(pPager->pWal);
pWal             48765 ext/sqlite3/libsqlite/sqlite3.c   assert( pPager->pWal==0 && pPager->tempFile==0 );
pWal             48783 ext/sqlite3/libsqlite/sqlite3.c         pPager->journalSizeLimit, &pPager->pWal
pWal             48817 ext/sqlite3/libsqlite/sqlite3.c   assert( pbOpen!=0 || (!pPager->tempFile && !pPager->pWal) );
pWal             48819 ext/sqlite3/libsqlite/sqlite3.c   if( !pPager->tempFile && !pPager->pWal ){
pWal             48855 ext/sqlite3/libsqlite/sqlite3.c   if( !pPager->pWal ){
pWal             48871 ext/sqlite3/libsqlite/sqlite3.c   if( rc==SQLITE_OK && pPager->pWal ){
pWal             48874 ext/sqlite3/libsqlite/sqlite3.c       rc = sqlite3WalClose(pPager->pWal, pPager->ckptSyncFlags,
pWal             48876 ext/sqlite3/libsqlite/sqlite3.c       pPager->pWal = 0;
pWal             48895 ext/sqlite3/libsqlite/sqlite3.c   return sqlite3WalFramesize(pPager->pWal);
pWal             49420 ext/sqlite3/libsqlite/sqlite3.c static int walIndexPage(Wal *pWal, int iPage, volatile u32 **ppPage){
pWal             49424 ext/sqlite3/libsqlite/sqlite3.c   if( pWal->nWiData<=iPage ){
pWal             49427 ext/sqlite3/libsqlite/sqlite3.c     apNew = (volatile u32 **)sqlite3_realloc64((void *)pWal->apWiData, nByte);
pWal             49432 ext/sqlite3/libsqlite/sqlite3.c     memset((void*)&apNew[pWal->nWiData], 0,
pWal             49433 ext/sqlite3/libsqlite/sqlite3.c            sizeof(u32*)*(iPage+1-pWal->nWiData));
pWal             49434 ext/sqlite3/libsqlite/sqlite3.c     pWal->apWiData = apNew;
pWal             49435 ext/sqlite3/libsqlite/sqlite3.c     pWal->nWiData = iPage+1;
pWal             49439 ext/sqlite3/libsqlite/sqlite3.c   if( pWal->apWiData[iPage]==0 ){
pWal             49440 ext/sqlite3/libsqlite/sqlite3.c     if( pWal->exclusiveMode==WAL_HEAPMEMORY_MODE ){
pWal             49441 ext/sqlite3/libsqlite/sqlite3.c       pWal->apWiData[iPage] = (u32 volatile *)sqlite3MallocZero(WALINDEX_PGSZ);
pWal             49442 ext/sqlite3/libsqlite/sqlite3.c       if( !pWal->apWiData[iPage] ) rc = SQLITE_NOMEM;
pWal             49444 ext/sqlite3/libsqlite/sqlite3.c       rc = sqlite3OsShmMap(pWal->pDbFd, iPage, WALINDEX_PGSZ, 
pWal             49445 ext/sqlite3/libsqlite/sqlite3.c           pWal->writeLock, (void volatile **)&pWal->apWiData[iPage]
pWal             49448 ext/sqlite3/libsqlite/sqlite3.c         pWal->readOnly |= WAL_SHM_RDONLY;
pWal             49454 ext/sqlite3/libsqlite/sqlite3.c   *ppPage = pWal->apWiData[iPage];
pWal             49462 ext/sqlite3/libsqlite/sqlite3.c static volatile WalCkptInfo *walCkptInfo(Wal *pWal){
pWal             49463 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->nWiData>0 && pWal->apWiData[0] );
pWal             49464 ext/sqlite3/libsqlite/sqlite3.c   return (volatile WalCkptInfo*)&(pWal->apWiData[0][sizeof(WalIndexHdr)/2]);
pWal             49470 ext/sqlite3/libsqlite/sqlite3.c static volatile WalIndexHdr *walIndexHdr(Wal *pWal){
pWal             49471 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->nWiData>0 && pWal->apWiData[0] );
pWal             49472 ext/sqlite3/libsqlite/sqlite3.c   return (volatile WalIndexHdr*)pWal->apWiData[0];
pWal             49534 ext/sqlite3/libsqlite/sqlite3.c static void walShmBarrier(Wal *pWal){
pWal             49535 ext/sqlite3/libsqlite/sqlite3.c   if( pWal->exclusiveMode!=WAL_HEAPMEMORY_MODE ){
pWal             49536 ext/sqlite3/libsqlite/sqlite3.c     sqlite3OsShmBarrier(pWal->pDbFd);
pWal             49545 ext/sqlite3/libsqlite/sqlite3.c static void walIndexWriteHdr(Wal *pWal){
pWal             49546 ext/sqlite3/libsqlite/sqlite3.c   volatile WalIndexHdr *aHdr = walIndexHdr(pWal);
pWal             49549 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->writeLock );
pWal             49550 ext/sqlite3/libsqlite/sqlite3.c   pWal->hdr.isInit = 1;
pWal             49551 ext/sqlite3/libsqlite/sqlite3.c   pWal->hdr.iVersion = WALINDEX_MAX_VERSION;
pWal             49552 ext/sqlite3/libsqlite/sqlite3.c   walChecksumBytes(1, (u8*)&pWal->hdr, nCksum, 0, pWal->hdr.aCksum);
pWal             49553 ext/sqlite3/libsqlite/sqlite3.c   memcpy((void *)&aHdr[1], (void *)&pWal->hdr, sizeof(WalIndexHdr));
pWal             49554 ext/sqlite3/libsqlite/sqlite3.c   walShmBarrier(pWal);
pWal             49555 ext/sqlite3/libsqlite/sqlite3.c   memcpy((void *)&aHdr[0], (void *)&pWal->hdr, sizeof(WalIndexHdr));
pWal             49572 ext/sqlite3/libsqlite/sqlite3.c   Wal *pWal,                      /* The write-ahead log */
pWal             49579 ext/sqlite3/libsqlite/sqlite3.c   u32 *aCksum = pWal->hdr.aFrameCksum;
pWal             49583 ext/sqlite3/libsqlite/sqlite3.c   memcpy(&aFrame[8], pWal->hdr.aSalt, 8);
pWal             49585 ext/sqlite3/libsqlite/sqlite3.c   nativeCksum = (pWal->hdr.bigEndCksum==SQLITE_BIGENDIAN);
pWal             49587 ext/sqlite3/libsqlite/sqlite3.c   walChecksumBytes(nativeCksum, aData, pWal->szPage, aCksum, aCksum);
pWal             49599 ext/sqlite3/libsqlite/sqlite3.c   Wal *pWal,                      /* The write-ahead log */
pWal             49606 ext/sqlite3/libsqlite/sqlite3.c   u32 *aCksum = pWal->hdr.aFrameCksum;
pWal             49613 ext/sqlite3/libsqlite/sqlite3.c   if( memcmp(&pWal->hdr.aSalt, &aFrame[8], 8)!=0 ){
pWal             49629 ext/sqlite3/libsqlite/sqlite3.c   nativeCksum = (pWal->hdr.bigEndCksum==SQLITE_BIGENDIAN);
pWal             49631 ext/sqlite3/libsqlite/sqlite3.c   walChecksumBytes(nativeCksum, aData, pWal->szPage, aCksum, aCksum);
pWal             49677 ext/sqlite3/libsqlite/sqlite3.c static int walLockShared(Wal *pWal, int lockIdx){
pWal             49679 ext/sqlite3/libsqlite/sqlite3.c   if( pWal->exclusiveMode ) return SQLITE_OK;
pWal             49680 ext/sqlite3/libsqlite/sqlite3.c   rc = sqlite3OsShmLock(pWal->pDbFd, lockIdx, 1,
pWal             49682 ext/sqlite3/libsqlite/sqlite3.c   WALTRACE(("WAL%p: acquire SHARED-%s %s\n", pWal,
pWal             49684 ext/sqlite3/libsqlite/sqlite3.c   VVA_ONLY( pWal->lockError = (u8)(rc!=SQLITE_OK && rc!=SQLITE_BUSY); )
pWal             49687 ext/sqlite3/libsqlite/sqlite3.c static void walUnlockShared(Wal *pWal, int lockIdx){
pWal             49688 ext/sqlite3/libsqlite/sqlite3.c   if( pWal->exclusiveMode ) return;
pWal             49689 ext/sqlite3/libsqlite/sqlite3.c   (void)sqlite3OsShmLock(pWal->pDbFd, lockIdx, 1,
pWal             49691 ext/sqlite3/libsqlite/sqlite3.c   WALTRACE(("WAL%p: release SHARED-%s\n", pWal, walLockName(lockIdx)));
pWal             49693 ext/sqlite3/libsqlite/sqlite3.c static int walLockExclusive(Wal *pWal, int lockIdx, int n, int fBlock){
pWal             49695 ext/sqlite3/libsqlite/sqlite3.c   if( pWal->exclusiveMode ) return SQLITE_OK;
pWal             49696 ext/sqlite3/libsqlite/sqlite3.c   if( fBlock ) sqlite3OsFileControl(pWal->pDbFd, SQLITE_FCNTL_WAL_BLOCK, 0);
pWal             49697 ext/sqlite3/libsqlite/sqlite3.c   rc = sqlite3OsShmLock(pWal->pDbFd, lockIdx, n,
pWal             49699 ext/sqlite3/libsqlite/sqlite3.c   WALTRACE(("WAL%p: acquire EXCLUSIVE-%s cnt=%d %s\n", pWal,
pWal             49701 ext/sqlite3/libsqlite/sqlite3.c   VVA_ONLY( pWal->lockError = (u8)(rc!=SQLITE_OK && rc!=SQLITE_BUSY); )
pWal             49704 ext/sqlite3/libsqlite/sqlite3.c static void walUnlockExclusive(Wal *pWal, int lockIdx, int n){
pWal             49705 ext/sqlite3/libsqlite/sqlite3.c   if( pWal->exclusiveMode ) return;
pWal             49706 ext/sqlite3/libsqlite/sqlite3.c   (void)sqlite3OsShmLock(pWal->pDbFd, lockIdx, n,
pWal             49708 ext/sqlite3/libsqlite/sqlite3.c   WALTRACE(("WAL%p: release EXCLUSIVE-%s cnt=%d\n", pWal,
pWal             49741 ext/sqlite3/libsqlite/sqlite3.c   Wal *pWal,                      /* WAL handle */
pWal             49750 ext/sqlite3/libsqlite/sqlite3.c   rc = walIndexPage(pWal, iHash, &aPgno);
pWal             49792 ext/sqlite3/libsqlite/sqlite3.c static u32 walFramePgno(Wal *pWal, u32 iFrame){
pWal             49795 ext/sqlite3/libsqlite/sqlite3.c     return pWal->apWiData[0][WALINDEX_HDR_SIZE/sizeof(u32) + iFrame - 1];
pWal             49797 ext/sqlite3/libsqlite/sqlite3.c   return pWal->apWiData[iHash][(iFrame-1-HASHTABLE_NPAGE_ONE)%HASHTABLE_NPAGE];
pWal             49812 ext/sqlite3/libsqlite/sqlite3.c static void walCleanupHash(Wal *pWal){
pWal             49820 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->writeLock );
pWal             49821 ext/sqlite3/libsqlite/sqlite3.c   testcase( pWal->hdr.mxFrame==HASHTABLE_NPAGE_ONE-1 );
pWal             49822 ext/sqlite3/libsqlite/sqlite3.c   testcase( pWal->hdr.mxFrame==HASHTABLE_NPAGE_ONE );
pWal             49823 ext/sqlite3/libsqlite/sqlite3.c   testcase( pWal->hdr.mxFrame==HASHTABLE_NPAGE_ONE+1 );
pWal             49825 ext/sqlite3/libsqlite/sqlite3.c   if( pWal->hdr.mxFrame==0 ) return;
pWal             49831 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->nWiData>walFramePage(pWal->hdr.mxFrame) );
pWal             49832 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->apWiData[walFramePage(pWal->hdr.mxFrame)] );
pWal             49833 ext/sqlite3/libsqlite/sqlite3.c   walHashGet(pWal, walFramePage(pWal->hdr.mxFrame), &aHash, &aPgno, &iZero);
pWal             49838 ext/sqlite3/libsqlite/sqlite3.c   iLimit = pWal->hdr.mxFrame - iZero;
pWal             49874 ext/sqlite3/libsqlite/sqlite3.c static int walIndexAppend(Wal *pWal, u32 iFrame, u32 iPage){
pWal             49880 ext/sqlite3/libsqlite/sqlite3.c   rc = walHashGet(pWal, walFramePage(iFrame), &aHash, &aPgno, &iZero);
pWal             49908 ext/sqlite3/libsqlite/sqlite3.c       walCleanupHash(pWal);
pWal             49963 ext/sqlite3/libsqlite/sqlite3.c static int walIndexRecover(Wal *pWal){
pWal             49976 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->ckptLock==1 || pWal->ckptLock==0 );
pWal             49979 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->writeLock );
pWal             49980 ext/sqlite3/libsqlite/sqlite3.c   iLock = WAL_ALL_BUT_WRITE + pWal->ckptLock;
pWal             49982 ext/sqlite3/libsqlite/sqlite3.c   rc = walLockExclusive(pWal, iLock, nLock, 0);
pWal             49986 ext/sqlite3/libsqlite/sqlite3.c   WALTRACE(("WAL%p: recovery begin...\n", pWal));
pWal             49988 ext/sqlite3/libsqlite/sqlite3.c   memset(&pWal->hdr, 0, sizeof(WalIndexHdr));
pWal             49990 ext/sqlite3/libsqlite/sqlite3.c   rc = sqlite3OsFileSize(pWal->pWalFd, &nSize);
pWal             50008 ext/sqlite3/libsqlite/sqlite3.c     rc = sqlite3OsRead(pWal->pWalFd, aBuf, WAL_HDRSIZE, 0);
pWal             50027 ext/sqlite3/libsqlite/sqlite3.c     pWal->hdr.bigEndCksum = (u8)(magic&0x00000001);
pWal             50028 ext/sqlite3/libsqlite/sqlite3.c     pWal->szPage = szPage;
pWal             50029 ext/sqlite3/libsqlite/sqlite3.c     pWal->nCkpt = sqlite3Get4byte(&aBuf[12]);
pWal             50030 ext/sqlite3/libsqlite/sqlite3.c     memcpy(&pWal->hdr.aSalt, &aBuf[16], 8);
pWal             50033 ext/sqlite3/libsqlite/sqlite3.c     walChecksumBytes(pWal->hdr.bigEndCksum==SQLITE_BIGENDIAN, 
pWal             50034 ext/sqlite3/libsqlite/sqlite3.c         aBuf, WAL_HDRSIZE-2*4, 0, pWal->hdr.aFrameCksum
pWal             50036 ext/sqlite3/libsqlite/sqlite3.c     if( pWal->hdr.aFrameCksum[0]!=sqlite3Get4byte(&aBuf[24])
pWal             50037 ext/sqlite3/libsqlite/sqlite3.c      || pWal->hdr.aFrameCksum[1]!=sqlite3Get4byte(&aBuf[28])
pWal             50067 ext/sqlite3/libsqlite/sqlite3.c       rc = sqlite3OsRead(pWal->pWalFd, aFrame, szFrame, iOffset);
pWal             50069 ext/sqlite3/libsqlite/sqlite3.c       isValid = walDecodeFrame(pWal, &pgno, &nTruncate, aData, aFrame);
pWal             50071 ext/sqlite3/libsqlite/sqlite3.c       rc = walIndexAppend(pWal, iFrame, pgno);
pWal             50076 ext/sqlite3/libsqlite/sqlite3.c         pWal->hdr.mxFrame = iFrame;
pWal             50077 ext/sqlite3/libsqlite/sqlite3.c         pWal->hdr.nPage = nTruncate;
pWal             50078 ext/sqlite3/libsqlite/sqlite3.c         pWal->hdr.szPage = (u16)((szPage&0xff00) | (szPage>>16));
pWal             50081 ext/sqlite3/libsqlite/sqlite3.c         aFrameCksum[0] = pWal->hdr.aFrameCksum[0];
pWal             50082 ext/sqlite3/libsqlite/sqlite3.c         aFrameCksum[1] = pWal->hdr.aFrameCksum[1];
pWal             50093 ext/sqlite3/libsqlite/sqlite3.c     pWal->hdr.aFrameCksum[0] = aFrameCksum[0];
pWal             50094 ext/sqlite3/libsqlite/sqlite3.c     pWal->hdr.aFrameCksum[1] = aFrameCksum[1];
pWal             50095 ext/sqlite3/libsqlite/sqlite3.c     walIndexWriteHdr(pWal);
pWal             50101 ext/sqlite3/libsqlite/sqlite3.c     pInfo = walCkptInfo(pWal);
pWal             50105 ext/sqlite3/libsqlite/sqlite3.c     if( pWal->hdr.mxFrame ) pInfo->aReadMark[1] = pWal->hdr.mxFrame;
pWal             50112 ext/sqlite3/libsqlite/sqlite3.c     if( pWal->hdr.nPage ){
pWal             50115 ext/sqlite3/libsqlite/sqlite3.c           pWal->hdr.mxFrame, pWal->zWalName
pWal             50121 ext/sqlite3/libsqlite/sqlite3.c   WALTRACE(("WAL%p: recovery %s\n", pWal, rc ? "failed" : "ok"));
pWal             50122 ext/sqlite3/libsqlite/sqlite3.c   walUnlockExclusive(pWal, iLock, nLock);
pWal             50129 ext/sqlite3/libsqlite/sqlite3.c static void walIndexClose(Wal *pWal, int isDelete){
pWal             50130 ext/sqlite3/libsqlite/sqlite3.c   if( pWal->exclusiveMode==WAL_HEAPMEMORY_MODE ){
pWal             50132 ext/sqlite3/libsqlite/sqlite3.c     for(i=0; i<pWal->nWiData; i++){
pWal             50133 ext/sqlite3/libsqlite/sqlite3.c       sqlite3_free((void *)pWal->apWiData[i]);
pWal             50134 ext/sqlite3/libsqlite/sqlite3.c       pWal->apWiData[i] = 0;
pWal             50137 ext/sqlite3/libsqlite/sqlite3.c     sqlite3OsShmUnmap(pWal->pDbFd, isDelete);
pWal             50226 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE void sqlite3WalLimit(Wal *pWal, i64 iLimit){
pWal             50227 ext/sqlite3/libsqlite/sqlite3.c   if( pWal ) pWal->mxWalSize = iLimit;
pWal             50425 ext/sqlite3/libsqlite/sqlite3.c static int walIteratorInit(Wal *pWal, WalIterator **pp){
pWal             50437 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->ckptLock && pWal->hdr.mxFrame>0 );
pWal             50438 ext/sqlite3/libsqlite/sqlite3.c   iLast = pWal->hdr.mxFrame;
pWal             50467 ext/sqlite3/libsqlite/sqlite3.c     rc = walHashGet(pWal, i, &aHash, &aPgno, &iZero);
pWal             50508 ext/sqlite3/libsqlite/sqlite3.c   Wal *pWal,                      /* WAL connection */
pWal             50516 ext/sqlite3/libsqlite/sqlite3.c     rc = walLockExclusive(pWal, lockIdx, n, 0);
pWal             50525 ext/sqlite3/libsqlite/sqlite3.c static int walPagesize(Wal *pWal){
pWal             50526 ext/sqlite3/libsqlite/sqlite3.c   return (pWal->hdr.szPage&0xfe00) + ((pWal->hdr.szPage&0x0001)<<16);
pWal             50546 ext/sqlite3/libsqlite/sqlite3.c static void walRestartHdr(Wal *pWal, u32 salt1){
pWal             50547 ext/sqlite3/libsqlite/sqlite3.c   volatile WalCkptInfo *pInfo = walCkptInfo(pWal);
pWal             50549 ext/sqlite3/libsqlite/sqlite3.c   u32 *aSalt = pWal->hdr.aSalt;   /* Big-endian salt values */
pWal             50550 ext/sqlite3/libsqlite/sqlite3.c   pWal->nCkpt++;
pWal             50551 ext/sqlite3/libsqlite/sqlite3.c   pWal->hdr.mxFrame = 0;
pWal             50553 ext/sqlite3/libsqlite/sqlite3.c   memcpy(&pWal->hdr.aSalt[1], &salt1, 4);
pWal             50554 ext/sqlite3/libsqlite/sqlite3.c   walIndexWriteHdr(pWal);
pWal             50593 ext/sqlite3/libsqlite/sqlite3.c   Wal *pWal,                      /* Wal connection */
pWal             50610 ext/sqlite3/libsqlite/sqlite3.c   szPage = walPagesize(pWal);
pWal             50613 ext/sqlite3/libsqlite/sqlite3.c   pInfo = walCkptInfo(pWal);
pWal             50614 ext/sqlite3/libsqlite/sqlite3.c   if( pInfo->nBackfill<pWal->hdr.mxFrame ){
pWal             50617 ext/sqlite3/libsqlite/sqlite3.c     rc = walIteratorInit(pWal, &pIter);
pWal             50632 ext/sqlite3/libsqlite/sqlite3.c     mxSafeFrame = pWal->hdr.mxFrame;
pWal             50633 ext/sqlite3/libsqlite/sqlite3.c     mxPage = pWal->hdr.nPage;
pWal             50645 ext/sqlite3/libsqlite/sqlite3.c         assert( y<=pWal->hdr.mxFrame );
pWal             50646 ext/sqlite3/libsqlite/sqlite3.c         rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_READ_LOCK(i), 1);
pWal             50649 ext/sqlite3/libsqlite/sqlite3.c           walUnlockExclusive(pWal, WAL_READ_LOCK(i), 1);
pWal             50660 ext/sqlite3/libsqlite/sqlite3.c      && (rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_READ_LOCK(0),1))==SQLITE_OK
pWal             50667 ext/sqlite3/libsqlite/sqlite3.c         rc = sqlite3OsSync(pWal->pWalFd, sync_flags);
pWal             50675 ext/sqlite3/libsqlite/sqlite3.c         rc = sqlite3OsFileSize(pWal->pDbFd, &nSize);
pWal             50677 ext/sqlite3/libsqlite/sqlite3.c           sqlite3OsFileControlHint(pWal->pDbFd, SQLITE_FCNTL_SIZE_HINT, &nReq);
pWal             50685 ext/sqlite3/libsqlite/sqlite3.c         assert( walFramePgno(pWal, iFrame)==iDbpage );
pWal             50691 ext/sqlite3/libsqlite/sqlite3.c         rc = sqlite3OsRead(pWal->pWalFd, zBuf, szPage, iOffset);
pWal             50695 ext/sqlite3/libsqlite/sqlite3.c         rc = sqlite3OsWrite(pWal->pDbFd, zBuf, szPage, iOffset);
pWal             50701 ext/sqlite3/libsqlite/sqlite3.c         if( mxSafeFrame==walIndexHdr(pWal)->mxFrame ){
pWal             50702 ext/sqlite3/libsqlite/sqlite3.c           i64 szDb = pWal->hdr.nPage*(i64)szPage;
pWal             50704 ext/sqlite3/libsqlite/sqlite3.c           rc = sqlite3OsTruncate(pWal->pDbFd, szDb);
pWal             50706 ext/sqlite3/libsqlite/sqlite3.c             rc = sqlite3OsSync(pWal->pDbFd, sync_flags);
pWal             50715 ext/sqlite3/libsqlite/sqlite3.c       walUnlockExclusive(pWal, WAL_READ_LOCK(0), 1);
pWal             50731 ext/sqlite3/libsqlite/sqlite3.c     assert( pWal->writeLock );
pWal             50732 ext/sqlite3/libsqlite/sqlite3.c     if( pInfo->nBackfill<pWal->hdr.mxFrame ){
pWal             50737 ext/sqlite3/libsqlite/sqlite3.c       assert( pInfo->nBackfill==pWal->hdr.mxFrame );
pWal             50738 ext/sqlite3/libsqlite/sqlite3.c       rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_READ_LOCK(1), WAL_NREADER-1);
pWal             50754 ext/sqlite3/libsqlite/sqlite3.c           walRestartHdr(pWal, salt1);
pWal             50755 ext/sqlite3/libsqlite/sqlite3.c           rc = sqlite3OsTruncate(pWal->pWalFd, 0);
pWal             50757 ext/sqlite3/libsqlite/sqlite3.c         walUnlockExclusive(pWal, WAL_READ_LOCK(1), WAL_NREADER-1);
pWal             50771 ext/sqlite3/libsqlite/sqlite3.c static void walLimitSize(Wal *pWal, i64 nMax){
pWal             50775 ext/sqlite3/libsqlite/sqlite3.c   rx = sqlite3OsFileSize(pWal->pWalFd, &sz);
pWal             50777 ext/sqlite3/libsqlite/sqlite3.c     rx = sqlite3OsTruncate(pWal->pWalFd, nMax);
pWal             50781 ext/sqlite3/libsqlite/sqlite3.c     sqlite3_log(rx, "cannot limit WAL size: %s", pWal->zWalName);
pWal             50789 ext/sqlite3/libsqlite/sqlite3.c   Wal *pWal,                      /* Wal to close */
pWal             50795 ext/sqlite3/libsqlite/sqlite3.c   if( pWal ){
pWal             50806 ext/sqlite3/libsqlite/sqlite3.c     rc = sqlite3OsLock(pWal->pDbFd, SQLITE_LOCK_EXCLUSIVE);
pWal             50808 ext/sqlite3/libsqlite/sqlite3.c       if( pWal->exclusiveMode==WAL_NORMAL_MODE ){
pWal             50809 ext/sqlite3/libsqlite/sqlite3.c         pWal->exclusiveMode = WAL_EXCLUSIVE_MODE;
pWal             50812 ext/sqlite3/libsqlite/sqlite3.c           pWal, SQLITE_CHECKPOINT_PASSIVE, 0, 0, sync_flags, nBuf, zBuf, 0, 0
pWal             50817 ext/sqlite3/libsqlite/sqlite3.c             pWal->pDbFd, SQLITE_FCNTL_PERSIST_WAL, &bPersist
pWal             50824 ext/sqlite3/libsqlite/sqlite3.c         }else if( pWal->mxWalSize>=0 ){
pWal             50831 ext/sqlite3/libsqlite/sqlite3.c           walLimitSize(pWal, 0);
pWal             50836 ext/sqlite3/libsqlite/sqlite3.c     walIndexClose(pWal, isDelete);
pWal             50837 ext/sqlite3/libsqlite/sqlite3.c     sqlite3OsClose(pWal->pWalFd);
pWal             50840 ext/sqlite3/libsqlite/sqlite3.c       sqlite3OsDelete(pWal->pVfs, pWal->zWalName, 0);
pWal             50843 ext/sqlite3/libsqlite/sqlite3.c     WALTRACE(("WAL%p: closed\n", pWal));
pWal             50844 ext/sqlite3/libsqlite/sqlite3.c     sqlite3_free((void *)pWal->apWiData);
pWal             50845 ext/sqlite3/libsqlite/sqlite3.c     sqlite3_free(pWal);
pWal             50867 ext/sqlite3/libsqlite/sqlite3.c static int walIndexTryHdr(Wal *pWal, int *pChanged){
pWal             50873 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->nWiData>0 && pWal->apWiData[0] );
pWal             50885 ext/sqlite3/libsqlite/sqlite3.c   aHdr = walIndexHdr(pWal);
pWal             50887 ext/sqlite3/libsqlite/sqlite3.c   walShmBarrier(pWal);
pWal             50901 ext/sqlite3/libsqlite/sqlite3.c   if( memcmp(&pWal->hdr, &h1, sizeof(WalIndexHdr)) ){
pWal             50903 ext/sqlite3/libsqlite/sqlite3.c     memcpy(&pWal->hdr, &h1, sizeof(WalIndexHdr));
pWal             50904 ext/sqlite3/libsqlite/sqlite3.c     pWal->szPage = (pWal->hdr.szPage&0xfe00) + ((pWal->hdr.szPage&0x0001)<<16);
pWal             50905 ext/sqlite3/libsqlite/sqlite3.c     testcase( pWal->szPage<=32768 );
pWal             50906 ext/sqlite3/libsqlite/sqlite3.c     testcase( pWal->szPage>=65536 );
pWal             50925 ext/sqlite3/libsqlite/sqlite3.c static int walIndexReadHdr(Wal *pWal, int *pChanged){
pWal             50934 ext/sqlite3/libsqlite/sqlite3.c   rc = walIndexPage(pWal, 0, &page0);
pWal             50938 ext/sqlite3/libsqlite/sqlite3.c   assert( page0 || pWal->writeLock==0 );
pWal             50945 ext/sqlite3/libsqlite/sqlite3.c   badHdr = (page0 ? walIndexTryHdr(pWal, pChanged) : 1);
pWal             50950 ext/sqlite3/libsqlite/sqlite3.c   assert( badHdr==0 || pWal->writeLock==0 );
pWal             50952 ext/sqlite3/libsqlite/sqlite3.c     if( pWal->readOnly & WAL_SHM_RDONLY ){
pWal             50953 ext/sqlite3/libsqlite/sqlite3.c       if( SQLITE_OK==(rc = walLockShared(pWal, WAL_WRITE_LOCK)) ){
pWal             50954 ext/sqlite3/libsqlite/sqlite3.c         walUnlockShared(pWal, WAL_WRITE_LOCK);
pWal             50957 ext/sqlite3/libsqlite/sqlite3.c     }else if( SQLITE_OK==(rc = walLockExclusive(pWal, WAL_WRITE_LOCK, 1, 1)) ){
pWal             50958 ext/sqlite3/libsqlite/sqlite3.c       pWal->writeLock = 1;
pWal             50959 ext/sqlite3/libsqlite/sqlite3.c       if( SQLITE_OK==(rc = walIndexPage(pWal, 0, &page0)) ){
pWal             50960 ext/sqlite3/libsqlite/sqlite3.c         badHdr = walIndexTryHdr(pWal, pChanged);
pWal             50966 ext/sqlite3/libsqlite/sqlite3.c           rc = walIndexRecover(pWal);
pWal             50970 ext/sqlite3/libsqlite/sqlite3.c       pWal->writeLock = 0;
pWal             50971 ext/sqlite3/libsqlite/sqlite3.c       walUnlockExclusive(pWal, WAL_WRITE_LOCK, 1);
pWal             50979 ext/sqlite3/libsqlite/sqlite3.c   if( badHdr==0 && pWal->hdr.iVersion!=WALINDEX_MAX_VERSION ){
pWal             51042 ext/sqlite3/libsqlite/sqlite3.c static int walTryBeginRead(Wal *pWal, int *pChanged, int useWal, int cnt){
pWal             51049 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->readLock<0 );     /* Not currently locked */
pWal             51071 ext/sqlite3/libsqlite/sqlite3.c       VVA_ONLY( pWal->lockError = 1; )
pWal             51075 ext/sqlite3/libsqlite/sqlite3.c     sqlite3OsSleep(pWal->pVfs, nDelay);
pWal             51079 ext/sqlite3/libsqlite/sqlite3.c     rc = walIndexReadHdr(pWal, pChanged);
pWal             51089 ext/sqlite3/libsqlite/sqlite3.c       if( pWal->apWiData[0]==0 ){
pWal             51098 ext/sqlite3/libsqlite/sqlite3.c       }else if( SQLITE_OK==(rc = walLockShared(pWal, WAL_RECOVER_LOCK)) ){
pWal             51099 ext/sqlite3/libsqlite/sqlite3.c         walUnlockShared(pWal, WAL_RECOVER_LOCK);
pWal             51110 ext/sqlite3/libsqlite/sqlite3.c   pInfo = walCkptInfo(pWal);
pWal             51111 ext/sqlite3/libsqlite/sqlite3.c   if( !useWal && pInfo->nBackfill==pWal->hdr.mxFrame ){
pWal             51115 ext/sqlite3/libsqlite/sqlite3.c     rc = walLockShared(pWal, WAL_READ_LOCK(0));
pWal             51116 ext/sqlite3/libsqlite/sqlite3.c     walShmBarrier(pWal);
pWal             51118 ext/sqlite3/libsqlite/sqlite3.c       if( memcmp((void *)walIndexHdr(pWal), &pWal->hdr, sizeof(WalIndexHdr)) ){
pWal             51132 ext/sqlite3/libsqlite/sqlite3.c         walUnlockShared(pWal, WAL_READ_LOCK(0));
pWal             51135 ext/sqlite3/libsqlite/sqlite3.c       pWal->readLock = 0;
pWal             51151 ext/sqlite3/libsqlite/sqlite3.c     if( mxReadMark<=thisMark && thisMark<=pWal->hdr.mxFrame ){
pWal             51159 ext/sqlite3/libsqlite/sqlite3.c     if( (pWal->readOnly & WAL_SHM_RDONLY)==0
pWal             51160 ext/sqlite3/libsqlite/sqlite3.c      && (mxReadMark<pWal->hdr.mxFrame || mxI==0)
pWal             51163 ext/sqlite3/libsqlite/sqlite3.c         rc = walLockExclusive(pWal, WAL_READ_LOCK(i), 1, 0);
pWal             51165 ext/sqlite3/libsqlite/sqlite3.c           mxReadMark = pInfo->aReadMark[i] = pWal->hdr.mxFrame;
pWal             51167 ext/sqlite3/libsqlite/sqlite3.c           walUnlockExclusive(pWal, WAL_READ_LOCK(i), 1);
pWal             51175 ext/sqlite3/libsqlite/sqlite3.c       assert( rc==SQLITE_BUSY || (pWal->readOnly & WAL_SHM_RDONLY)!=0 );
pWal             51179 ext/sqlite3/libsqlite/sqlite3.c     rc = walLockShared(pWal, WAL_READ_LOCK(mxI));
pWal             51203 ext/sqlite3/libsqlite/sqlite3.c     walShmBarrier(pWal);
pWal             51205 ext/sqlite3/libsqlite/sqlite3.c      || memcmp((void *)walIndexHdr(pWal), &pWal->hdr, sizeof(WalIndexHdr))
pWal             51207 ext/sqlite3/libsqlite/sqlite3.c       walUnlockShared(pWal, WAL_READ_LOCK(mxI));
pWal             51210 ext/sqlite3/libsqlite/sqlite3.c       assert( mxReadMark<=pWal->hdr.mxFrame );
pWal             51211 ext/sqlite3/libsqlite/sqlite3.c       pWal->readLock = (i16)mxI;
pWal             51231 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalBeginReadTransaction(Wal *pWal, int *pChanged){
pWal             51236 ext/sqlite3/libsqlite/sqlite3.c     rc = walTryBeginRead(pWal, pChanged, 0, ++cnt);
pWal             51249 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE void sqlite3WalEndReadTransaction(Wal *pWal){
pWal             51250 ext/sqlite3/libsqlite/sqlite3.c   sqlite3WalEndWriteTransaction(pWal);
pWal             51251 ext/sqlite3/libsqlite/sqlite3.c   if( pWal->readLock>=0 ){
pWal             51252 ext/sqlite3/libsqlite/sqlite3.c     walUnlockShared(pWal, WAL_READ_LOCK(pWal->readLock));
pWal             51253 ext/sqlite3/libsqlite/sqlite3.c     pWal->readLock = -1;
pWal             51266 ext/sqlite3/libsqlite/sqlite3.c   Wal *pWal,                      /* WAL handle */
pWal             51271 ext/sqlite3/libsqlite/sqlite3.c   u32 iLast = pWal->hdr.mxFrame;  /* Last page in WAL for this reader */
pWal             51275 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->readLock>=0 || pWal->lockError );
pWal             51283 ext/sqlite3/libsqlite/sqlite3.c   if( iLast==0 || pWal->readLock==0 ){
pWal             51321 ext/sqlite3/libsqlite/sqlite3.c     rc = walHashGet(pWal, iHash, &aHash, &aPgno, &iZero);
pWal             51346 ext/sqlite3/libsqlite/sqlite3.c       if( walFramePgno(pWal, iTest)==pgno ){
pWal             51365 ext/sqlite3/libsqlite/sqlite3.c   Wal *pWal,                      /* WAL handle */
pWal             51372 ext/sqlite3/libsqlite/sqlite3.c   sz = pWal->hdr.szPage;
pWal             51378 ext/sqlite3/libsqlite/sqlite3.c   return sqlite3OsRead(pWal->pWalFd, pOut, (nOut>sz ? sz : nOut), iOffset);
pWal             51384 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE Pgno sqlite3WalDbsize(Wal *pWal){
pWal             51385 ext/sqlite3/libsqlite/sqlite3.c   if( pWal && ALWAYS(pWal->readLock>=0) ){
pWal             51386 ext/sqlite3/libsqlite/sqlite3.c     return pWal->hdr.nPage;
pWal             51405 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalBeginWriteTransaction(Wal *pWal){
pWal             51410 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->readLock>=0 );
pWal             51412 ext/sqlite3/libsqlite/sqlite3.c   if( pWal->readOnly ){
pWal             51419 ext/sqlite3/libsqlite/sqlite3.c   rc = walLockExclusive(pWal, WAL_WRITE_LOCK, 1, 0);
pWal             51423 ext/sqlite3/libsqlite/sqlite3.c   pWal->writeLock = 1;
pWal             51429 ext/sqlite3/libsqlite/sqlite3.c   if( memcmp(&pWal->hdr, (void *)walIndexHdr(pWal), sizeof(WalIndexHdr))!=0 ){
pWal             51430 ext/sqlite3/libsqlite/sqlite3.c     walUnlockExclusive(pWal, WAL_WRITE_LOCK, 1);
pWal             51431 ext/sqlite3/libsqlite/sqlite3.c     pWal->writeLock = 0;
pWal             51442 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalEndWriteTransaction(Wal *pWal){
pWal             51443 ext/sqlite3/libsqlite/sqlite3.c   if( pWal->writeLock ){
pWal             51444 ext/sqlite3/libsqlite/sqlite3.c     walUnlockExclusive(pWal, WAL_WRITE_LOCK, 1);
pWal             51445 ext/sqlite3/libsqlite/sqlite3.c     pWal->writeLock = 0;
pWal             51446 ext/sqlite3/libsqlite/sqlite3.c     pWal->truncateOnCommit = 0;
pWal             51463 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalUndo(Wal *pWal, int (*xUndo)(void *, Pgno), void *pUndoCtx){
pWal             51465 ext/sqlite3/libsqlite/sqlite3.c   if( ALWAYS(pWal->writeLock) ){
pWal             51466 ext/sqlite3/libsqlite/sqlite3.c     Pgno iMax = pWal->hdr.mxFrame;
pWal             51472 ext/sqlite3/libsqlite/sqlite3.c     memcpy(&pWal->hdr, (void *)walIndexHdr(pWal), sizeof(WalIndexHdr));
pWal             51474 ext/sqlite3/libsqlite/sqlite3.c     for(iFrame=pWal->hdr.mxFrame+1; 
pWal             51489 ext/sqlite3/libsqlite/sqlite3.c       assert( walFramePgno(pWal, iFrame)!=1 );
pWal             51490 ext/sqlite3/libsqlite/sqlite3.c       rc = xUndo(pUndoCtx, walFramePgno(pWal, iFrame));
pWal             51492 ext/sqlite3/libsqlite/sqlite3.c     if( iMax!=pWal->hdr.mxFrame ) walCleanupHash(pWal);
pWal             51503 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE void sqlite3WalSavepoint(Wal *pWal, u32 *aWalData){
pWal             51504 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->writeLock );
pWal             51505 ext/sqlite3/libsqlite/sqlite3.c   aWalData[0] = pWal->hdr.mxFrame;
pWal             51506 ext/sqlite3/libsqlite/sqlite3.c   aWalData[1] = pWal->hdr.aFrameCksum[0];
pWal             51507 ext/sqlite3/libsqlite/sqlite3.c   aWalData[2] = pWal->hdr.aFrameCksum[1];
pWal             51508 ext/sqlite3/libsqlite/sqlite3.c   aWalData[3] = pWal->nCkpt;
pWal             51517 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalSavepointUndo(Wal *pWal, u32 *aWalData){
pWal             51520 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->writeLock );
pWal             51521 ext/sqlite3/libsqlite/sqlite3.c   assert( aWalData[3]!=pWal->nCkpt || aWalData[0]<=pWal->hdr.mxFrame );
pWal             51523 ext/sqlite3/libsqlite/sqlite3.c   if( aWalData[3]!=pWal->nCkpt ){
pWal             51529 ext/sqlite3/libsqlite/sqlite3.c     aWalData[3] = pWal->nCkpt;
pWal             51532 ext/sqlite3/libsqlite/sqlite3.c   if( aWalData[0]<pWal->hdr.mxFrame ){
pWal             51533 ext/sqlite3/libsqlite/sqlite3.c     pWal->hdr.mxFrame = aWalData[0];
pWal             51534 ext/sqlite3/libsqlite/sqlite3.c     pWal->hdr.aFrameCksum[0] = aWalData[1];
pWal             51535 ext/sqlite3/libsqlite/sqlite3.c     pWal->hdr.aFrameCksum[1] = aWalData[2];
pWal             51536 ext/sqlite3/libsqlite/sqlite3.c     walCleanupHash(pWal);
pWal             51554 ext/sqlite3/libsqlite/sqlite3.c static int walRestartLog(Wal *pWal){
pWal             51558 ext/sqlite3/libsqlite/sqlite3.c   if( pWal->readLock==0 ){
pWal             51559 ext/sqlite3/libsqlite/sqlite3.c     volatile WalCkptInfo *pInfo = walCkptInfo(pWal);
pWal             51560 ext/sqlite3/libsqlite/sqlite3.c     assert( pInfo->nBackfill==pWal->hdr.mxFrame );
pWal             51564 ext/sqlite3/libsqlite/sqlite3.c       rc = walLockExclusive(pWal, WAL_READ_LOCK(1), WAL_NREADER-1, 0);
pWal             51575 ext/sqlite3/libsqlite/sqlite3.c         walRestartHdr(pWal, salt1);
pWal             51576 ext/sqlite3/libsqlite/sqlite3.c         walUnlockExclusive(pWal, WAL_READ_LOCK(1), WAL_NREADER-1);
pWal             51581 ext/sqlite3/libsqlite/sqlite3.c     walUnlockShared(pWal, WAL_READ_LOCK(0));
pWal             51582 ext/sqlite3/libsqlite/sqlite3.c     pWal->readLock = -1;
pWal             51586 ext/sqlite3/libsqlite/sqlite3.c       rc = walTryBeginRead(pWal, &notUsed, 1, ++cnt);
pWal             51602 ext/sqlite3/libsqlite/sqlite3.c   Wal *pWal;                   /* The complete WAL information */
pWal             51656 ext/sqlite3/libsqlite/sqlite3.c   walEncodeFrame(p->pWal, pPage->pgno, nTruncate, pData, aFrame);
pWal             51669 ext/sqlite3/libsqlite/sqlite3.c   Wal *pWal,                      /* Wal handle to write to */
pWal             51686 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->writeLock );
pWal             51695 ext/sqlite3/libsqlite/sqlite3.c               pWal, cnt, pWal->hdr.mxFrame, isCommit ? "Commit" : "Spill"));
pWal             51702 ext/sqlite3/libsqlite/sqlite3.c   if( SQLITE_OK!=(rc = walRestartLog(pWal)) ){
pWal             51710 ext/sqlite3/libsqlite/sqlite3.c   iFrame = pWal->hdr.mxFrame;
pWal             51718 ext/sqlite3/libsqlite/sqlite3.c     sqlite3Put4byte(&aWalHdr[12], pWal->nCkpt);
pWal             51719 ext/sqlite3/libsqlite/sqlite3.c     if( pWal->nCkpt==0 ) sqlite3_randomness(8, pWal->hdr.aSalt);
pWal             51720 ext/sqlite3/libsqlite/sqlite3.c     memcpy(&aWalHdr[16], pWal->hdr.aSalt, 8);
pWal             51725 ext/sqlite3/libsqlite/sqlite3.c     pWal->szPage = szPage;
pWal             51726 ext/sqlite3/libsqlite/sqlite3.c     pWal->hdr.bigEndCksum = SQLITE_BIGENDIAN;
pWal             51727 ext/sqlite3/libsqlite/sqlite3.c     pWal->hdr.aFrameCksum[0] = aCksum[0];
pWal             51728 ext/sqlite3/libsqlite/sqlite3.c     pWal->hdr.aFrameCksum[1] = aCksum[1];
pWal             51729 ext/sqlite3/libsqlite/sqlite3.c     pWal->truncateOnCommit = 1;
pWal             51731 ext/sqlite3/libsqlite/sqlite3.c     rc = sqlite3OsWrite(pWal->pWalFd, aWalHdr, sizeof(aWalHdr), 0);
pWal             51732 ext/sqlite3/libsqlite/sqlite3.c     WALTRACE(("WAL%p: wal-header write %s\n", pWal, rc ? "failed" : "ok"));
pWal             51744 ext/sqlite3/libsqlite/sqlite3.c     if( pWal->syncHeader && sync_flags ){
pWal             51745 ext/sqlite3/libsqlite/sqlite3.c       rc = sqlite3OsSync(pWal->pWalFd, sync_flags & SQLITE_SYNC_MASK);
pWal             51749 ext/sqlite3/libsqlite/sqlite3.c   assert( (int)pWal->szPage==szPage );
pWal             51752 ext/sqlite3/libsqlite/sqlite3.c   w.pWal = pWal;
pWal             51753 ext/sqlite3/libsqlite/sqlite3.c   w.pFd = pWal->pWalFd;
pWal             51787 ext/sqlite3/libsqlite/sqlite3.c     if( pWal->padToSectorBoundary ){
pWal             51788 ext/sqlite3/libsqlite/sqlite3.c       int sectorSize = sqlite3SectorSize(pWal->pWalFd);
pWal             51805 ext/sqlite3/libsqlite/sqlite3.c   if( isCommit && pWal->truncateOnCommit && pWal->mxWalSize>=0 ){
pWal             51806 ext/sqlite3/libsqlite/sqlite3.c     i64 sz = pWal->mxWalSize;
pWal             51807 ext/sqlite3/libsqlite/sqlite3.c     if( walFrameOffset(iFrame+nExtra+1, szPage)>pWal->mxWalSize ){
pWal             51810 ext/sqlite3/libsqlite/sqlite3.c     walLimitSize(pWal, sz);
pWal             51811 ext/sqlite3/libsqlite/sqlite3.c     pWal->truncateOnCommit = 0;
pWal             51819 ext/sqlite3/libsqlite/sqlite3.c   iFrame = pWal->hdr.mxFrame;
pWal             51822 ext/sqlite3/libsqlite/sqlite3.c     rc = walIndexAppend(pWal, iFrame, p->pgno);
pWal             51827 ext/sqlite3/libsqlite/sqlite3.c     rc = walIndexAppend(pWal, iFrame, pLast->pgno);
pWal             51832 ext/sqlite3/libsqlite/sqlite3.c     pWal->hdr.szPage = (u16)((szPage&0xff00) | (szPage>>16));
pWal             51835 ext/sqlite3/libsqlite/sqlite3.c     pWal->hdr.mxFrame = iFrame;
pWal             51837 ext/sqlite3/libsqlite/sqlite3.c       pWal->hdr.iChange++;
pWal             51838 ext/sqlite3/libsqlite/sqlite3.c       pWal->hdr.nPage = nTruncate;
pWal             51842 ext/sqlite3/libsqlite/sqlite3.c       walIndexWriteHdr(pWal);
pWal             51843 ext/sqlite3/libsqlite/sqlite3.c       pWal->iCallback = iFrame;
pWal             51847 ext/sqlite3/libsqlite/sqlite3.c   WALTRACE(("WAL%p: frame write %s\n", pWal, rc ? "failed" : "ok"));
pWal             51862 ext/sqlite3/libsqlite/sqlite3.c   Wal *pWal,                      /* Wal connection */
pWal             51877 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->ckptLock==0 );
pWal             51878 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->writeLock==0 );
pWal             51884 ext/sqlite3/libsqlite/sqlite3.c   if( pWal->readOnly ) return SQLITE_READONLY;
pWal             51885 ext/sqlite3/libsqlite/sqlite3.c   WALTRACE(("WAL%p: checkpoint begins\n", pWal));
pWal             51889 ext/sqlite3/libsqlite/sqlite3.c   rc = walLockExclusive(pWal, WAL_CKPT_LOCK, 1, 0);
pWal             51901 ext/sqlite3/libsqlite/sqlite3.c   pWal->ckptLock = 1;
pWal             51913 ext/sqlite3/libsqlite/sqlite3.c     rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_WRITE_LOCK, 1);
pWal             51915 ext/sqlite3/libsqlite/sqlite3.c       pWal->writeLock = 1;
pWal             51925 ext/sqlite3/libsqlite/sqlite3.c     rc = walIndexReadHdr(pWal, &isChanged);
pWal             51926 ext/sqlite3/libsqlite/sqlite3.c     if( isChanged && pWal->pDbFd->pMethods->iVersion>=3 ){
pWal             51927 ext/sqlite3/libsqlite/sqlite3.c       sqlite3OsUnfetch(pWal->pDbFd, 0, 0);
pWal             51933 ext/sqlite3/libsqlite/sqlite3.c     if( pWal->hdr.mxFrame && walPagesize(pWal)!=nBuf ){
pWal             51936 ext/sqlite3/libsqlite/sqlite3.c       rc = walCheckpoint(pWal, eMode2, xBusy2, pBusyArg, sync_flags, zBuf);
pWal             51941 ext/sqlite3/libsqlite/sqlite3.c       if( pnLog ) *pnLog = (int)pWal->hdr.mxFrame;
pWal             51942 ext/sqlite3/libsqlite/sqlite3.c       if( pnCkpt ) *pnCkpt = (int)(walCkptInfo(pWal)->nBackfill);
pWal             51953 ext/sqlite3/libsqlite/sqlite3.c     memset(&pWal->hdr, 0, sizeof(WalIndexHdr));
pWal             51957 ext/sqlite3/libsqlite/sqlite3.c   sqlite3WalEndWriteTransaction(pWal);
pWal             51958 ext/sqlite3/libsqlite/sqlite3.c   walUnlockExclusive(pWal, WAL_CKPT_LOCK, 1);
pWal             51959 ext/sqlite3/libsqlite/sqlite3.c   pWal->ckptLock = 0;
pWal             51960 ext/sqlite3/libsqlite/sqlite3.c   WALTRACE(("WAL%p: checkpoint %s\n", pWal, rc ? "failed" : "ok"));
pWal             51969 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalCallback(Wal *pWal){
pWal             51971 ext/sqlite3/libsqlite/sqlite3.c   if( pWal ){
pWal             51972 ext/sqlite3/libsqlite/sqlite3.c     ret = pWal->iCallback;
pWal             51973 ext/sqlite3/libsqlite/sqlite3.c     pWal->iCallback = 0;
pWal             52002 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalExclusiveMode(Wal *pWal, int op){
pWal             52004 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->writeLock==0 );
pWal             52005 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->exclusiveMode!=WAL_HEAPMEMORY_MODE || op==-1 );
pWal             52013 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->readLock>=0 || pWal->lockError );
pWal             52014 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal->readLock>=0 || (op<=0 && pWal->exclusiveMode==0) );
pWal             52017 ext/sqlite3/libsqlite/sqlite3.c     if( pWal->exclusiveMode ){
pWal             52018 ext/sqlite3/libsqlite/sqlite3.c       pWal->exclusiveMode = 0;
pWal             52019 ext/sqlite3/libsqlite/sqlite3.c       if( walLockShared(pWal, WAL_READ_LOCK(pWal->readLock))!=SQLITE_OK ){
pWal             52020 ext/sqlite3/libsqlite/sqlite3.c         pWal->exclusiveMode = 1;
pWal             52022 ext/sqlite3/libsqlite/sqlite3.c       rc = pWal->exclusiveMode==0;
pWal             52028 ext/sqlite3/libsqlite/sqlite3.c     assert( pWal->exclusiveMode==0 );
pWal             52029 ext/sqlite3/libsqlite/sqlite3.c     assert( pWal->readLock>=0 );
pWal             52030 ext/sqlite3/libsqlite/sqlite3.c     walUnlockShared(pWal, WAL_READ_LOCK(pWal->readLock));
pWal             52031 ext/sqlite3/libsqlite/sqlite3.c     pWal->exclusiveMode = 1;
pWal             52034 ext/sqlite3/libsqlite/sqlite3.c     rc = pWal->exclusiveMode==0;
pWal             52044 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalHeapMemory(Wal *pWal){
pWal             52045 ext/sqlite3/libsqlite/sqlite3.c   return (pWal && pWal->exclusiveMode==WAL_HEAPMEMORY_MODE );
pWal             52054 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WalFramesize(Wal *pWal){
pWal             52055 ext/sqlite3/libsqlite/sqlite3.c   assert( pWal==0 || pWal->readLock>=0 );
pWal             52056 ext/sqlite3/libsqlite/sqlite3.c   return (pWal ? pWal->szPage : 0);