This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[COMMITTED PATCH] Name space hygeine for madvise.
- From: Roland McGrath <roland at hack dot frob dot com>
- To: libc-alpha at sourceware dot org
- Date: Thu, 4 Oct 2012 16:54:48 -0700 (PDT)
- Subject: [COMMITTED PATCH] Name space hygeine for madvise.
Some day we really should grow a test for name space hygiene issues.
2012-10-04 Roland McGrath <roland@hack.frob.com>
* misc/Versions (GLIBC_PRIVATE): New set, add __madvise.
* misc/madvise.c (madvise): Renamed to __madvise.
Make madvise a weak alias.
* include/sys/mman.h: Declare __madvise.
Replace libc_hidden_proto (madvise) with libc_hidden_proto (__madvise).
* sysdeps/unix/syscalls.list
(madvise): Make __madvise the strong name, and madvise a weak alias.
* sysdeps/unix/sysv/linux/syscalls.list
(madvise, mmap): Remove redundant entries.
* malloc/arena.c (shrink_heap): Use __madvise, not madvise.
* malloc/malloc.c (mtrim): Likewise.
* sysdeps/mach/hurd/malloc-machine.h (madvise): Renamed to __madvise.
nptl/
2012-10-04 Roland McGrath <roland@hack.frob.com>
* pthread_create.c (start_thread): Use __madvise, not madvise.
diff --git a/include/sys/mman.h b/include/sys/mman.h
index 0a0e4a6..fd125ec 100644
--- a/include/sys/mman.h
+++ b/include/sys/mman.h
@@ -10,11 +10,12 @@ extern void *__mmap64 (void *__addr, size_t __len, int __prot,
extern int __munmap (void *__addr, size_t __len);
extern int __mprotect (void *__addr, size_t __len, int __prot);
+extern int __madvise (void *__addr, size_t __len, int __advice);
+libc_hidden_proto (__madvise)
+
/* This one is Linux specific. */
extern void *__mremap (void *__addr, size_t __old_len,
size_t __new_len, int __flags, ...);
-
-libc_hidden_proto (madvise);
#endif
#endif
diff --git a/malloc/arena.c b/malloc/arena.c
index b209e3b..eb9180e 100644
--- a/malloc/arena.c
+++ b/malloc/arena.c
@@ -634,7 +634,7 @@ shrink_heap(heap_info *h, long diff)
h->mprotect_size = new_size;
}
else
- madvise ((char *)h + new_size, diff, MADV_DONTNEED);
+ __madvise ((char *)h + new_size, diff, MADV_DONTNEED);
/*fprintf(stderr, "shrink %p %08lx\n", h, new_size);*/
h->size = new_size;
diff --git a/malloc/malloc.c b/malloc/malloc.c
index 892bc64..3f0b6b1 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -4450,7 +4450,7 @@ static int mtrim(mstate av, size_t pad)
content. */
memset (paligned_mem, 0x89, size & ~psm1);
#endif
- madvise (paligned_mem, size & ~psm1, MADV_DONTNEED);
+ __madvise (paligned_mem, size & ~psm1, MADV_DONTNEED);
result = 1;
}
diff --git a/misc/Versions b/misc/Versions
index 7f525ea..b2a9147 100644
--- a/misc/Versions
+++ b/misc/Versions
@@ -149,4 +149,7 @@ libc {
GLIBC_2.16 {
__getauxval; getauxval;
}
+ GLIBC_PRIVATE {
+ __madvise;
+ }
}
diff --git a/misc/madvise.c b/misc/madvise.c
index 8f1c873..4e9681a 100644
--- a/misc/madvise.c
+++ b/misc/madvise.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1994,1995,1996,1997,2000,2007 Free Software Foundation, Inc.
+/* Advise system about intentions for a memory region. Stub version.
+ Copyright (C) 1994-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -23,11 +24,13 @@
for the region starting at ADDR and extending LEN bytes. */
int
-madvise (__ptr_t addr, size_t len, int advice)
+__madvise (void *addr, size_t len, int advice)
{
__set_errno (ENOSYS);
return -1;
}
-libc_hidden_def (madvise)
+libc_hidden_def (__madvise)
+weak_alias (__madvise, madvise)
+
stub_warning (madvise)
#include <stub-tag.h>
diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
index 6ba9c6f..197dfa7 100644
--- a/nptl/pthread_create.c
+++ b/nptl/pthread_create.c
@@ -399,7 +399,7 @@ start_thread (void *arg)
#endif
assert (freesize < pd->stackblock_size);
if (freesize > PTHREAD_STACK_MIN)
- madvise (pd->stackblock, freesize - PTHREAD_STACK_MIN, MADV_DONTNEED);
+ __madvise (pd->stackblock, freesize - PTHREAD_STACK_MIN, MADV_DONTNEED);
/* If the thread is detached free the TCB. */
if (IS_DETACHED (pd))
diff --git a/sysdeps/mach/hurd/malloc-machine.h b/sysdeps/mach/hurd/malloc-machine.h
index 4a8bd16..16e054f 100644
--- a/sysdeps/mach/hurd/malloc-machine.h
+++ b/sysdeps/mach/hurd/malloc-machine.h
@@ -66,8 +66,9 @@ __libc_tsd_define (static, void *, MALLOC) /* declaration/common definition */
#include <sys/mman.h>
-#undef madvise
-#define madvise(addr, len, advice) ((void) (addr), (void) (len), (void) (advice))
+#undef __madvise
+#define __madvise(addr, len, advice) \
+ ((void) (addr), (void) (len), (void) (advice))
#include <sysdeps/generic/malloc-machine.h>
diff --git a/sysdeps/unix/syscalls.list b/sysdeps/unix/syscalls.list
index b38b03e..4620582 100644
--- a/sysdeps/unix/syscalls.list
+++ b/sysdeps/unix/syscalls.list
@@ -41,7 +41,7 @@ kill - kill i:ii __kill kill
link - link i:ss __link link
listen - listen i:ii __listen listen
lseek - lseek i:iii __libc_lseek __lseek lseek
-madvise - madvise i:pii madvise
+madvise - madvise i:pii __madvise madvise
mkdir - mkdir i:si __mkdir mkdir
mmap - mmap b:aniiii __mmap mmap
mprotect - mprotect i:aii __mprotect mprotect
diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
index 6343272..2e6cf9c 100644
--- a/sysdeps/unix/sysv/linux/syscalls.list
+++ b/sysdeps/unix/sysv/linux/syscalls.list
@@ -36,11 +36,9 @@ ioperm - ioperm i:iii ioperm
iopl - iopl i:i iopl
klogctl EXTRA syslog i:isi klogctl
lchown - lchown i:sii __lchown lchown
-madvise - madvise i:pii madvise
mincore - mincore i:anV mincore
mlock - mlock i:bn mlock
mlockall - mlockall i:i mlockall
-mmap - mmap b:aniiii __mmap mmap
mount EXTRA mount i:sssip __mount mount
mremap EXTRA mremap b:ainip __mremap mremap
munlock - munlock i:ai munlock