Declare __page_shift and __page_size with C linkage.

__page_shift and __page_size were accidentally declared in unistd.h with
C linkage - their implementation needs to use the same linkage.

Going forward, though, let's stop the inlining madness and let's kill
the non-standard __getpageshift(). This patch takes getpagesize(3) out
of line and removes __getpageshift but fixes __page_shift and __page_size
for backwards binary compatibility.

Change-Id: I35ed66a08989ced1db422eb03e4d154a5d6b5bda
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
This commit is contained in:
Bernhard Rosenkraenzer 2013-09-18 23:29:08 +02:00 committed by Elliott Hughes
parent a259472ca0
commit 9ae59c02ca
3 changed files with 13 additions and 12 deletions

View File

@ -60,10 +60,6 @@ char** environ;
// Declared in <private/bionic_ssp.h>.
uintptr_t __stack_chk_guard = 0;
// Declared in <asm/page.h>.
unsigned int __page_size = PAGE_SIZE;
unsigned int __page_shift = PAGE_SHIFT;
static size_t get_main_thread_stack_size() {
rlimit stack_limit;
int rlimit_result = getrlimit(RLIMIT_STACK, &stack_limit);

View File

@ -469,3 +469,15 @@ void setusershell() {
void endusershell() {
UNIMPLEMENTED;
}
// Portable code should use sysconf(_SC_PAGESIZE) directly instead.
int getpagesize() {
return sysconf(_SC_PAGESIZE);
}
// These were accidentally declared in <unistd.h> because we stupidly used to inline
// getpagesize() and __getpageshift(). Needed for backwards compatibility with old NDK apps.
extern "C" {
unsigned int __page_size = PAGE_SIZE;
unsigned int __page_shift = PAGE_SHIFT;
}

View File

@ -170,14 +170,7 @@ extern int ttyname_r(int, char*, size_t);
extern int acct(const char* filepath);
static __inline__ int getpagesize(void) {
extern unsigned int __page_size;
return __page_size;
}
static __inline__ int __getpageshift(void) {
extern unsigned int __page_shift;
return __page_shift;
}
int getpagesize(void);
extern int sysconf(int name);