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.
#include <sys/sysinfo.h>
#include "syscall.h"
+#include "libc.h"
#define klong long long
#define kulong unsigned long long
unsigned mem_unit;
};
-int __x32_sysinfo(struct sysinfo *info)
+int __lsysinfo(struct sysinfo *info)
{
struct kernel_sysinfo tmp;
int ret = syscall(SYS_sysinfo, &tmp);
info->mem_unit = (tmp.mem_unit ? tmp.mem_unit : 1) << shifts;
return ret;
}
+
+weak_alias(__lsysinfo, sysinfo);
#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);
-.text
-.global sysinfo
-.type sysinfo,@function
-sysinfo:
- jmp __x32_sysinfo
+# see arch/x32/src/sysinfo.c