mirror of
https://git.openldap.org/openldap/openldap.git
synced 2026-01-06 23:19:59 -05:00
ITS#9118 add MAP_NOSYNC for FreeBSD
This commit is contained in:
parent
c3e6b4209e
commit
522c62035c
1 changed files with 8 additions and 3 deletions
|
|
@ -4396,22 +4396,27 @@ mdb_env_map(MDB_env *env, void *addr)
|
|||
return mdb_nt2win32(rc);
|
||||
env->me_map = map;
|
||||
#else
|
||||
int mmap_flags = MAP_SHARED;
|
||||
int prot = PROT_READ;
|
||||
#ifdef MAP_NOSYNC /* Used on FreeBSD */
|
||||
if (flags & MDB_NOSYNC)
|
||||
mmap_flags |= MAP_NOSYNC;
|
||||
#endif
|
||||
#ifdef MDB_VL32
|
||||
(void) flags;
|
||||
env->me_map = mmap(addr, NUM_METAS * env->me_psize, PROT_READ, MAP_SHARED,
|
||||
env->me_map = mmap(addr, NUM_METAS * env->me_psize, prot, mmap_flags,
|
||||
env->me_fd, 0);
|
||||
if (env->me_map == MAP_FAILED) {
|
||||
env->me_map = NULL;
|
||||
return ErrCode();
|
||||
}
|
||||
#else
|
||||
int prot = PROT_READ;
|
||||
if (flags & MDB_WRITEMAP) {
|
||||
prot |= PROT_WRITE;
|
||||
if (ftruncate(env->me_fd, env->me_mapsize) < 0)
|
||||
return ErrCode();
|
||||
}
|
||||
env->me_map = mmap(addr, env->me_mapsize, prot, MAP_SHARED,
|
||||
env->me_map = mmap(addr, env->me_mapsize, prot, mmap_flags,
|
||||
env->me_fd, 0);
|
||||
if (env->me_map == MAP_FAILED) {
|
||||
env->me_map = NULL;
|
||||
|
|
|
|||
Loading…
Reference in a new issue