Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Minor cleanup and refactoring of the Win32 VFS for lsm1. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
bf7eda67c8124c3cd5d9150f2f2694cd |
User & Date: | mistachkin 2017-07-10 20:33:50.763 |
Context
2017-07-10
| ||
20:39 | Fix errors in comments in the STMT virtual table. No code changes. (check-in: 9a8f045d62 user: drh tags: trunk) | |
20:33 | Minor cleanup and refactoring of the Win32 VFS for lsm1. (check-in: bf7eda67c8 user: mistachkin tags: trunk) | |
19:54 | Another spelling error in the README.md file. (check-in: 0512937425 user: drh tags: trunk) | |
Changes
Changes to ext/lsm1/lsm_win32.c.
︙ | ︙ | |||
583 584 585 586 587 588 589 | } #if !defined(win32IsLockBusy) #define win32IsLockBusy(a) (((a)==ERROR_LOCK_VIOLATION) || \ ((a)==ERROR_IO_PENDING)) #endif | | | > > > > > | | | | | < | < < < < < < < < > | | | | < < < < | | 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 | } #if !defined(win32IsLockBusy) #define win32IsLockBusy(a) (((a)==ERROR_LOCK_VIOLATION) || \ ((a)==ERROR_IO_PENDING)) #endif static int win32LockFile( Win32File *pWin32File, int iLock, int nLock, int eType ){ OVERLAPPED ovlp; assert( LSM_LOCK_UNLOCK==0 ); assert( LSM_LOCK_SHARED==1 ); assert( LSM_LOCK_EXCL==2 ); assert( eType>=LSM_LOCK_UNLOCK && eType<=LSM_LOCK_EXCL ); assert( nLock>=0 ); assert( iLock>0 && iLock<=32 ); memset(&ovlp, 0, sizeof(OVERLAPPED)); ovlp.Offset = (4096-iLock-nLock+1); if( eType>LSM_LOCK_UNLOCK ){ DWORD flags = LOCKFILE_FAIL_IMMEDIATELY; if( eType>=LSM_LOCK_EXCL ) flags |= LOCKFILE_EXCLUSIVE_LOCK; if( !LockFileEx(pWin32File->hFile, flags, 0, (DWORD)nLock, 0, &ovlp) ){ if( win32IsLockBusy(GetLastError()) ){ return LSM_BUSY; }else{ return LSM_IOERR_BKPT; } } }else{ if( !UnlockFileEx(pWin32File->hFile, 0, (DWORD)nLock, 0, &ovlp) ){ return LSM_IOERR_BKPT; } } return LSM_OK; } static int lsmWin32OsLock(lsm_file *pFile, int iLock, int eType){ Win32File *pWin32File = (Win32File *)pFile; return win32LockFile(pWin32File, iLock, 1, eType); } static int lsmWin32OsTestLock(lsm_file *pFile, int iLock, int nLock, int eType){ int rc; Win32File *pWin32File = (Win32File *)pFile; rc = win32LockFile(pWin32File, iLock, nLock, eType); if( rc!=LSM_OK ) return rc; win32LockFile(pWin32File, iLock, nLock, LSM_LOCK_UNLOCK); return LSM_OK; } static int lsmWin32OsShmMap(lsm_file *pFile, int iChunk, int sz, void **ppShm){ int rc; Win32File *pWin32File = (Win32File *)pFile; int iOffset = iChunk * sz; |
︙ | ︙ |