Changeset View
Changeset View
Standalone View
Standalone View
head/shells/ksh93/files/patch-src_lib_libast_vmalloc_vmdcsystem.c
Property | Old Value | New Value |
---|---|---|
fbsd:nokeywords | null | yes \ No newline at end of property |
svn:eol-style | null | native \ No newline at end of property |
svn:mime-type | null | text/plain \ No newline at end of property |
--- src/lib/libast/vmalloc/vmdcsystem.c.orig 2016-02-28 17:09:23 UTC | |||||
+++ src/lib/libast/vmalloc/vmdcsystem.c | |||||
@@ -66,18 +66,16 @@ static Vmemory_f _Vmemoryf = 0; | |||||
#if _std_malloc | |||||
#undef _mem_mmap_anon | |||||
-#undef _mem_mmap_zero | |||||
#undef _mem_sbrk | |||||
#undef _mem_win32 | |||||
#endif | |||||
#if _mem_win32 | |||||
#undef _mem_mmap_anon | |||||
-#undef _mem_mmap_zero | |||||
#undef _mem_sbrk | |||||
#endif | |||||
-#if _mem_mmap_anon || _mem_mmap_zero /* may get space using mmap */ | |||||
+#if _mem_mmap_anon /* may get space using mmap */ | |||||
#include <sys/mman.h> | |||||
#ifndef MAP_ANON | |||||
#ifdef MAP_ANONYMOUS | |||||
@@ -86,7 +84,7 @@ static Vmemory_f _Vmemoryf = 0; | |||||
#define MAP_ANON 0 | |||||
#endif /*MAP_ANONYMOUS*/ | |||||
#endif /*MAP_ANON*/ | |||||
-#endif /*_mem_mmap_anon || _mem_mmap_zero*/ | |||||
+#endif /*_mem_mmap_anon*/ | |||||
/* | |||||
* hint at "transparent huge pages" (=largepages) if | |||||
@@ -259,73 +257,6 @@ static Void_t* mmapanonmem(Vmalloc_t* vm | |||||
} | |||||
#endif /* _mem_mmap_anon */ | |||||
-#if _mem_mmap_zero /* get space by mmapping from /dev/zero */ | |||||
-#include <fcntl.h> | |||||
-#ifndef OPEN_MAX | |||||
-#define OPEN_MAX 64 | |||||
-#endif | |||||
-#define FD_PRIVATE (3*OPEN_MAX/4) /* private file descriptor */ | |||||
-#define FD_NONE (-2) /* no mapping with file desc */ | |||||
- | |||||
-/* this is called after an initial successful call of mmapzeromeminit() */ | |||||
-static Void_t* mmapzeromem(Vmalloc_t* vm, Void_t* caddr, size_t csize, size_t nsize, Vmdisc_t* disc) | |||||
-{ | |||||
- Memdisc_t* mmdc = (Memdisc_t*)disc; | |||||
- off_t offset; | |||||
- | |||||
- GETMEMCHK(vm, caddr, csize, nsize, disc); | |||||
- if(csize == 0) | |||||
- { nsize = ROUND(nsize, _Vmpagesize); | |||||
- offset = asoaddoff(&mmdc->offset, nsize); | |||||
- RESTARTMEM(caddr, mmap(NIL(Void_t*), nsize, PROT_READ|PROT_WRITE, MAP_PRIVATE, mmdc->fd, offset)); | |||||
- ADVISE(vm, caddr, nsize); | |||||
- RETURN(vm, caddr, nsize); | |||||
- } | |||||
- else if(nsize == 0) | |||||
- { Vmuchar_t *addr = (Vmuchar_t*)sbrk(0); | |||||
- if(addr < (Vmuchar_t*)caddr ) /* in sbrk space */ | |||||
- return NIL(Void_t*); | |||||
- (void)munmap(caddr, csize); | |||||
- RETURN(vm, caddr, nsize); | |||||
- } | |||||
- else return NIL(Void_t*); | |||||
-} | |||||
- | |||||
-/* if this call succeeds then mmapzeromem() is the implementation */ | |||||
-static Void_t* mmapzeromeminit(Vmalloc_t* vm, Void_t* caddr, size_t csize, size_t nsize, Vmdisc_t* disc) | |||||
-{ | |||||
- Memdisc_t* mmdc = (Memdisc_t*)disc; | |||||
- int fd; | |||||
- | |||||
- GETMEMCHK(vm, caddr, csize, nsize, disc); | |||||
- if(mmdc->fd != FD_INIT) | |||||
- return NIL(Void_t*); | |||||
- RESTARTSYS(fd, open("/dev/zero", O_RDONLY|O_CLOEXEC)); | |||||
- if(fd < 0) | |||||
- { mmdc->fd = FD_NONE; | |||||
- return NIL(Void_t*); | |||||
- } | |||||
-#if O_CLOEXEC == 0 | |||||
- else | |||||
- SETCLOEXEC(fd); | |||||
-#endif | |||||
- if(fd >= FD_PRIVATE || (mmdc->fd = fcntl(fd, F_DUPFD_CLOEXEC, FD_PRIVATE)) < 0) | |||||
- mmdc->fd = fd; | |||||
- else | |||||
- { close(fd); | |||||
-#if F_DUPFD_CLOEXEC == F_DUPFD | |||||
- SETCLOEXEC(mmdc->fd); | |||||
-#endif | |||||
- } | |||||
- RESTARTMEM(caddr, mmapzeromem(vm, caddr, csize, nsize, disc)); | |||||
- if(!caddr) | |||||
- { close(mmdc->fd); | |||||
- mmdc->fd = FD_NONE; | |||||
- } | |||||
- RETURN(vm, caddr, nsize); | |||||
-} | |||||
-#endif /* _mem_mmap_zero */ | |||||
- | |||||
#if _std_malloc /* using native malloc as a last resort */ | |||||
static Void_t* mallocmem(Vmalloc_t* vm, Void_t* caddr, size_t csize, size_t nsize, Vmdisc_t* disc) | |||||
{ | |||||
@@ -364,12 +295,6 @@ static Void_t* getmemory(Vmalloc_t* vm, | |||||
return (Void_t*)addr; | |||||
} | |||||
#endif | |||||
-#if _mem_mmap_zero | |||||
- if((_Vmassert & VM_zero) && (addr = mmapzeromeminit(vm, caddr, csize, nsize, disc))) | |||||
- { GETMEMUSE(mmapzeromem, disc); | |||||
- return (Void_t*)addr; | |||||
- } | |||||
-#endif | |||||
#if _mem_sbrk | |||||
if((_Vmassert & VM_break) && (addr = sbrkmem(vm, caddr, csize, nsize, disc))) | |||||
{ GETMEMUSE(sbrkmem, disc); | |||||
@@ -386,6 +311,7 @@ static Void_t* getmemory(Vmalloc_t* vm, | |||||
if((_Vmassert & VM_native) && (addr = mallocmem(vm, caddr, csize, nsize, disc))) | |||||
{ GETMEMUSE(mallocmem, disc); | |||||
return (Void_t*)addr; | |||||
+ } | |||||
#endif | |||||
write(2, "vmalloc: panic: all memory allocation disciplines failed\n", 57); | |||||
abort(); |