mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-14 00:22:38 +03:00
Use mremap() on Linux.
FossilOrigin-Name: 431aecc8600c29c203546e48d256510510238887
This commit is contained in:
14
manifest
14
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Merge\sall\srecent\strunk\schanges\sinto\sthe\sexperimental-mmap\sbranch.
|
C Use\smremap()\son\sLinux.
|
||||||
D 2013-03-25T19:57:26.572
|
D 2013-03-25T20:30:13.313
|
||||||
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
||||||
F Makefile.in df3e48659d80e1b7765785d8d66c86b320f72cc7
|
F Makefile.in df3e48659d80e1b7765785d8d66c86b320f72cc7
|
||||||
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
||||||
@@ -160,7 +160,7 @@ F src/notify.c 976dd0f6171d4588e89e874fcc765e92914b6d30
|
|||||||
F src/os.c 809d0707cec693e1b9b376ab229271ad74c3d35d
|
F src/os.c 809d0707cec693e1b9b376ab229271ad74c3d35d
|
||||||
F src/os.h ae08bcc5f6ec6b339f4a2adf3931bb88cc14c3e4
|
F src/os.h ae08bcc5f6ec6b339f4a2adf3931bb88cc14c3e4
|
||||||
F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04
|
F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04
|
||||||
F src/os_unix.c 54b82f341b3c81630aa8c73efd2effe037b69270
|
F src/os_unix.c a4d7076a6edd4e6a8594191880e540a31b2c8598
|
||||||
F src/os_win.c e4f17ddf79f2a9373e33ed70565e765d65324589
|
F src/os_win.c e4f17ddf79f2a9373e33ed70565e765d65324589
|
||||||
F src/pager.c 4e1b55e7a50db0466b06f8ec114799b432c18131
|
F src/pager.c 4e1b55e7a50db0466b06f8ec114799b432c18131
|
||||||
F src/pager.h 241d72dc0905df042da165f086d03505cb0bb50c
|
F src/pager.h 241d72dc0905df042da165f086d03505cb0bb50c
|
||||||
@@ -1040,7 +1040,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
|
|||||||
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
||||||
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
|
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
|
||||||
F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
|
F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
|
||||||
P 6ec7367d8e98425f00eeb8215ca8964313c1d0b7 5062db672c00c3365d51cd6b39815078f5b6b525
|
P a607d63f0b6a3d3785e9385187d3e6b92e14fc70
|
||||||
R 868df99cd28788ba5be1e70b11892bee
|
R 18e19b2d7d709a7b2b83b278bfc05f98
|
||||||
U drh
|
U dan
|
||||||
Z 7385c5f656a5c7af6e1d7e1f0ea19ddb
|
Z f03c297d3465d1cb9dc069838022accc
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
a607d63f0b6a3d3785e9385187d3e6b92e14fc70
|
431aecc8600c29c203546e48d256510510238887
|
||||||
@@ -4544,21 +4544,28 @@ static int unixMapfile(unixFile *pFd, i64 nByte){
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( nMap!=pFd->mmapSize ){
|
if( nMap!=pFd->mmapSize ){
|
||||||
unixUnmapfile(pFd);
|
void *pNew = 0;
|
||||||
|
|
||||||
if( nMap>0 ){
|
#if defined(__linux__) && defined(_GNU_SOURCE)
|
||||||
void *pNew;
|
if( pFd->pMapRegion && nMap>0 ){
|
||||||
int flags = PROT_READ;
|
pNew = mremap(pFd->pMapRegion, pFd->mmapOrigsize, nMap, MREMAP_MAYMOVE);
|
||||||
if( (pFd->ctrlFlags & UNIXFILE_RDONLY)==0 ) flags |= PROT_WRITE;
|
}else
|
||||||
pNew = osMmap(0, nMap, flags, MAP_SHARED, pFd->h, 0);
|
#endif
|
||||||
if( pNew==MAP_FAILED ){
|
{
|
||||||
return SQLITE_IOERR_MMAP;
|
unixUnmapfile(pFd);
|
||||||
|
if( nMap>0 ){
|
||||||
|
int flags = PROT_READ;
|
||||||
|
if( (pFd->ctrlFlags & UNIXFILE_RDONLY)==0 ) flags |= PROT_WRITE;
|
||||||
|
pNew = osMmap(0, nMap, flags, MAP_SHARED, pFd->h, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
pFd->pMapRegion = pNew;
|
|
||||||
pFd->mmapSize = nMap;
|
|
||||||
pFd->mmapOrigsize = nMap;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( pNew==MAP_FAILED ){
|
||||||
|
return SQLITE_IOERR_MMAP;
|
||||||
|
}
|
||||||
|
pFd->pMapRegion = pNew;
|
||||||
|
pFd->mmapSize = nMap;
|
||||||
|
pFd->mmapOrigsize = nMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
return SQLITE_OK;
|
return SQLITE_OK;
|
||||||
|
|||||||
Reference in New Issue
Block a user