Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix some minor typos in lsm1. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
0ef777d7474383c0211b19baa4a161cf |
User & Date: | mistachkin 2017-06-30 18:12:09.226 |
Context
2017-06-30
| ||
19:22 | Add some assert() statements in the Win32 interface for lsm1. (check-in: d076d58ff1 user: mistachkin tags: trunk) | |
18:12 | Fix some minor typos in lsm1. (check-in: 0ef777d747 user: mistachkin tags: trunk) | |
11:44 | Avoid constantly freeing and reallocing small internal buffers associated with LSM cursors. Instead, allow them to persist for the lifetime of the cursor if they are LSM_SEGMENTPTR_FREE_THRESHOLD (default 1024) bytes or smaller. This change is based on research by Martijn Blaauw. (check-in: bacfe8cb3e user: dan tags: trunk) | |
Changes
Changes to ext/lsm1/lsm-test/lsmtest.h.
︙ | ︙ | |||
23 24 25 26 27 28 29 | # define usleep(usec) Sleep((usec) / 1000) # ifdef _MSC_VER # include <io.h> # define snprintf _snprintf # define fsync(fd) FlushFileBuffers((HANDLE)_get_osfhandle((fd))) # define fdatasync(fd) FlushFileBuffers((HANDLE)_get_osfhandle((fd))) # define __va_copy(dst,src) ((dst) = (src)) | | | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | # define usleep(usec) Sleep((usec) / 1000) # ifdef _MSC_VER # include <io.h> # define snprintf _snprintf # define fsync(fd) FlushFileBuffers((HANDLE)_get_osfhandle((fd))) # define fdatasync(fd) FlushFileBuffers((HANDLE)_get_osfhandle((fd))) # define __va_copy(dst,src) ((dst) = (src)) # define ftruncate(fd,sz) ((_chsize_s((fd), (sz))==0) ? 0 : -1) # else # error Unsupported C compiler for Windows. # endif int win32GetTimeOfDay(struct timeval *, void *); #endif #ifndef _LSM_INT_H |
︙ | ︙ |
Changes to ext/lsm1/lsm_unix.c.
︙ | ︙ | |||
305 306 307 308 309 310 311 | } static int lsmPosixOsUnlink(lsm_env *pEnv, const char *zFile){ int prc = unlink(zFile); return prc ? LSM_IOERR_BKPT : LSM_OK; } | | | 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 | } static int lsmPosixOsUnlink(lsm_env *pEnv, const char *zFile){ int prc = unlink(zFile); return prc ? LSM_IOERR_BKPT : LSM_OK; } static int lsmPosixOsLock(lsm_file *pFile, int iLock, int eType){ int rc = LSM_OK; PosixFile *p = (PosixFile *)pFile; static const short aType[3] = { F_UNLCK, F_RDLCK, F_WRLCK }; struct flock lock; assert( aType[LSM_LOCK_UNLOCK]==F_UNLCK ); assert( aType[LSM_LOCK_SHARED]==F_RDLCK ); |
︙ | ︙ | |||
335 336 337 338 339 340 341 | rc = LSM_IOERR_BKPT; } } return rc; } | | | 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 | rc = LSM_IOERR_BKPT; } } return rc; } static int lsmPosixOsTestLock(lsm_file *pFile, int iLock, int nLock, int eType){ int rc = LSM_OK; PosixFile *p = (PosixFile *)pFile; static const short aType[3] = { 0, F_RDLCK, F_WRLCK }; struct flock lock; assert( eType==LSM_LOCK_SHARED || eType==LSM_LOCK_EXCL ); assert( aType[LSM_LOCK_SHARED]==F_RDLCK ); |
︙ | ︙ | |||
362 363 364 365 366 367 368 | }else if( lock.l_type!=F_UNLCK ){ rc = LSM_BUSY; } return rc; } | | | 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 | }else if( lock.l_type!=F_UNLCK ){ rc = LSM_BUSY; } return rc; } static int lsmPosixOsShmMap(lsm_file *pFile, int iChunk, int sz, void **ppShm){ PosixFile *p = (PosixFile *)pFile; *ppShm = 0; assert( sz==LSM_SHM_CHUNK_SIZE ); if( iChunk>=p->nShm ){ int i; void **apNew; |
︙ | ︙ | |||
416 417 418 419 420 421 422 | if( p->apShm[iChunk]==0 ) return LSM_IOERR_BKPT; } *ppShm = p->apShm[iChunk]; return LSM_OK; } | | | | 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 | if( p->apShm[iChunk]==0 ) return LSM_IOERR_BKPT; } *ppShm = p->apShm[iChunk]; return LSM_OK; } static void lsmPosixOsShmBarrier(void){ } static int lsmPosixOsShmUnmap(lsm_file *pFile, int bDelete){ PosixFile *p = (PosixFile *)pFile; if( p->shmfd>0 ){ int i; for(i=0; i<p->nShm; i++){ if( p->apShm[i] ){ munmap(p->apShm[i], LSM_SHM_CHUNK_SIZE); p->apShm[i] = 0; |
︙ | ︙ |
Changes to ext/lsm1/lsm_win32.c.
︙ | ︙ | |||
576 577 578 579 580 581 582 | } #if !defined(win32IsLockBusy) #define win32IsLockBusy(a) (((a)==ERROR_LOCK_VIOLATION) || \ ((a)==ERROR_IO_PENDING)) #endif | | | 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 | } #if !defined(win32IsLockBusy) #define win32IsLockBusy(a) (((a)==ERROR_LOCK_VIOLATION) || \ ((a)==ERROR_IO_PENDING)) #endif static int lsmWin32OsLock(lsm_file *pFile, int iLock, int eType){ Win32File *pWin32File = (Win32File *)pFile; 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 ); |
︙ | ︙ | |||
606 607 608 609 610 611 612 | if( !UnlockFileEx(pWin32File->hFile, 0, 1, 0, &ovlp) ){ return LSM_IOERR_BKPT; } } return LSM_OK; } | | | 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 | if( !UnlockFileEx(pWin32File->hFile, 0, 1, 0, &ovlp) ){ return LSM_IOERR_BKPT; } } return LSM_OK; } static int lsmWin32OsTestLock(lsm_file *pFile, int iLock, int nLock, int eType){ Win32File *pWin32File = (Win32File *)pFile; DWORD flags = LOCKFILE_FAIL_IMMEDIATELY; OVERLAPPED ovlp; assert( LSM_LOCK_UNLOCK==0 ); assert( LSM_LOCK_SHARED==1 ); assert( LSM_LOCK_EXCL==2 ); |
︙ | ︙ | |||
632 633 634 635 636 637 638 | return LSM_IOERR_BKPT; } } UnlockFileEx(pWin32File->hFile, 0, (DWORD)nLock, 0, &ovlp); return LSM_OK; } | | | 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 | return LSM_IOERR_BKPT; } } UnlockFileEx(pWin32File->hFile, 0, (DWORD)nLock, 0, &ovlp); 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; int iOffsetShift = iOffset % pWin32File->sysInfo.dwAllocationGranularity; int nNew = iChunk + 1; lsm_i64 nReq = nNew * sz; |
︙ | ︙ | |||
721 722 723 724 725 726 727 | *ppShm = (void *)&p[iOffsetShift]; }else{ *ppShm = pWin32File->apShm[iChunk]; } return LSM_OK; } | | | | 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 | *ppShm = (void *)&p[iOffsetShift]; }else{ *ppShm = pWin32File->apShm[iChunk]; } return LSM_OK; } static void lsmWin32OsShmBarrier(void){ MemoryBarrier(); } static int lsmWin32OsShmUnmap(lsm_file *pFile, int bDelete){ Win32File *pWin32File = (Win32File *)pFile; if( pWin32File->hShmFile!=NULL ){ int i; for(i=0; i<pWin32File->nShm; i++){ if( pWin32File->apShm[i]!=NULL ){ UnmapViewOfFile(pWin32File->apShm[i]); |
︙ | ︙ |