提交 8a6b1c61 编写于 作者: I iveresov

7082645: Hotspot doesn't compile on old linuxes after 7060836

Summary: Move syscall ids definitions into os_linux.cpp
Reviewed-by: johnc
上级 07e21486
...@@ -125,10 +125,6 @@ ...@@ -125,10 +125,6 @@
# include <inttypes.h> # include <inttypes.h>
# include <sys/ioctl.h> # include <sys/ioctl.h>
#ifdef AMD64
#include <asm/vsyscall.h>
#endif
#define MAX_PATH (2 * K) #define MAX_PATH (2 * K)
// for timer info max values which include all bits // for timer info max values which include all bits
...@@ -2600,8 +2596,17 @@ int os::Linux::sched_getcpu_syscall(void) { ...@@ -2600,8 +2596,17 @@ int os::Linux::sched_getcpu_syscall(void) {
int retval = -1; int retval = -1;
#if defined(IA32) #if defined(IA32)
# ifndef SYS_getcpu
# define SYS_getcpu 318
# endif
retval = syscall(SYS_getcpu, &cpu, NULL, NULL); retval = syscall(SYS_getcpu, &cpu, NULL, NULL);
#elif defined(AMD64) #elif defined(AMD64)
// Unfortunately we have to bring all these macros here from vsyscall.h
// to be able to compile on old linuxes.
# define __NR_vgetcpu 2
# define VSYSCALL_START (-10UL << 20)
# define VSYSCALL_SIZE 1024
# define VSYSCALL_ADDR(vsyscall_nr) (VSYSCALL_START+VSYSCALL_SIZE*(vsyscall_nr))
typedef long (*vgetcpu_t)(unsigned int *cpu, unsigned int *node, unsigned long *tcache); typedef long (*vgetcpu_t)(unsigned int *cpu, unsigned int *node, unsigned long *tcache);
vgetcpu_t vgetcpu = (vgetcpu_t)VSYSCALL_ADDR(__NR_vgetcpu); vgetcpu_t vgetcpu = (vgetcpu_t)VSYSCALL_ADDR(__NR_vgetcpu);
retval = vgetcpu(&cpu, NULL, NULL); retval = vgetcpu(&cpu, NULL, NULL);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册