increase PIN_SHIFT to 28 for reading large .so-file (temporary, we should use pread instead), and added system-call time

This commit is contained in:
Masamichi Takagi
2012-10-28 00:40:12 +09:00
parent 3142b4d4d6
commit 9fe8d548fb
2 changed files with 35 additions and 1 deletions

View File

@ -179,6 +179,16 @@ SYSCALL_DECLARE(stat)
SYSCALL_FOOTER;
}
SYSCALL_DECLARE(time)
{
SYSCALL_HEADER;
if(aal_mc_syscall_arg0(ctx)) {
SYSCALL_ARGS_1(MO);
} else {
SYSCALL_ARGS_1(D);
}
SYSCALL_FOOTER;
}
SYSCALL_DECLARE(gettimeofday)
{
@ -950,6 +960,7 @@ static long (*syscall_table[])(int, aal_mc_user_context_t *) = {
[110] = sys_getxid,
[111] = sys_getxid,
[158] = sys_arch_prctl,
[201] = sys_time,
[202] = sys_futex,
[203] = sys_sched_setaffinity,
[204] = sys_sched_getaffinity,
@ -999,6 +1010,7 @@ static char *syscall_name[] = {
[110] = "sys_getpgid",
[111] = "sys_getppid",
[158] = "sys_arch_prctl",
[201] = "sys_time",
[202] = "sys_futex",
[203] = "sys_sched_setaffinity",
[204] = "sys_sched_getaffinity",

View File

@ -16,6 +16,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/utsname.h>
#include <time.h>
#include <sys/time.h>
#include <signal.h>
#include <sys/wait.h>
@ -208,7 +209,7 @@ void print_desc(struct program_load_desc *desc)
}
}
#define PIN_SHIFT 24
#define PIN_SHIFT 28
#define PIN_SIZE (1 << PIN_SHIFT)
#define PIN_MASK ~(unsigned long)(PIN_SIZE - 1)
@ -591,6 +592,27 @@ int main_loop(int fd, int cpu, pthread_mutex_t *lock)
}
break;
/*
glibc-2.14.90/sysdeps/unix/sysv/linux/x86_64/time.S
linux-2.6.34.13/arch/x86/kernel/vsyscall_64.c
/usr/include/time.h
/usr/include/bits/types.h
/usr/include/bits/typesizes.h
#define __TIME_T_TYPE __SLONGWORD_TYPE
*/
case __NR_time: {
time_t ret;
if(w.sr.args[0]) {
ret = time((time_t *)dma_buf);
} else {
ret = time(NULL);
}
SET_ERR(ret);
printf("time=%ld\n", ret);
do_syscall_return(fd, cpu, ret, 1, (unsigned long)dma_buf,
w.sr.args[0], sizeof(time_t));
break; }
case __NR_gettimeofday:
ret = gettimeofday((struct timeval *)dma_buf, NULL);
SET_ERR(ret);