add namespace-protected name for sysinfo function

it will be needed to implement some things in sysconf, and the syscall
can't easily be used directly because the x32 syscall uses the wrong
structure layout. the l (uncreative, for "linux") prefix is used since
the symbol name __sysinfo is already taken for AT_SYSINFO from the aux
vector.

the way the x32 override of this function works is also changed to be
simpler and avoid the useless jump instruction.
This commit is contained in:
Rich Felker 2014-04-15 18:16:37 -04:00
parent 6cf7d17f53
commit de20a8ffc5
3 changed files with 9 additions and 7 deletions

View File

@ -1,5 +1,6 @@
#include <sys/sysinfo.h>
#include "syscall.h"
#include "libc.h"
#define klong long long
#define kulong unsigned long long
@ -20,7 +21,7 @@ struct kernel_sysinfo {
unsigned mem_unit;
};
int __x32_sysinfo(struct sysinfo *info)
int __lsysinfo(struct sysinfo *info)
{
struct kernel_sysinfo tmp;
int ret = syscall(SYS_sysinfo, &tmp);
@ -45,3 +46,5 @@ int __x32_sysinfo(struct sysinfo *info)
info->mem_unit = (tmp.mem_unit ? tmp.mem_unit : 1) << shifts;
return ret;
}
weak_alias(__lsysinfo, sysinfo);

View File

@ -1,7 +1,10 @@
#include <sys/sysinfo.h>
#include "syscall.h"
#include "libc.h"
int sysinfo(struct sysinfo *info)
int __lsysinfo(struct sysinfo *info)
{
return syscall(SYS_sysinfo, info);
}
weak_alias(__lsysinfo, sysinfo);

View File

@ -1,5 +1 @@
.text
.global sysinfo
.type sysinfo,@function
sysinfo:
jmp __x32_sysinfo
# see arch/x32/src/sysinfo.c