Index: Makefile.target =================================================================== RCS file: /cvsroot/qemu/qemu/Makefile.target,v retrieving revision 1.62 diff -u -r1.62 Makefile.target --- Makefile.target 13 Mar 2005 16:52:10 -0000 1.62 +++ Makefile.target 22 Mar 2005 12:42:29 -0000 @@ -209,8 +209,8 @@ ######################################################### -DEFINES+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -LIBS+=-lm +DEFINES+=-D_GNU_SOURCE -D_BSD_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE +LIBS+=-lm -lrt ifndef CONFIG_USER_ONLY LIBS+=-lz endif Index: linux-user/syscall.c =================================================================== RCS file: /cvsroot/qemu/qemu/linux-user/syscall.c,v retrieving revision 1.58 diff -u -r1.58 syscall.c --- linux-user/syscall.c 1 Mar 2005 22:32:06 -0000 1.58 +++ linux-user/syscall.c 22 Mar 2005 12:42:30 -0000 @@ -207,6 +207,7 @@ #define __NR_sys_getdents __NR_getdents #define __NR_sys_getdents64 __NR_getdents64 #define __NR_sys_rt_sigqueueinfo __NR_rt_sigqueueinfo +#define __NR_sys_syslog __NR_syslog #if defined(__alpha__) || defined (__ia64__) || defined(__x86_64__) #define __NR__llseek __NR_lseek @@ -228,6 +229,7 @@ _syscall2(int,sys_statfs,const char *,path,struct kernel_statfs *,buf) _syscall2(int,sys_fstatfs,int,fd,struct kernel_statfs *,buf) _syscall3(int,sys_rt_sigqueueinfo,int,pid,int,sig,siginfo_t *,uinfo) +_syscall3(int,sys_syslog,int,type,char*,bufp,int,len) #ifdef __NR_exit_group _syscall1(int,exit_group,int,error_code) #endif @@ -241,6 +243,7 @@ extern int setresgid(gid_t, gid_t, gid_t); extern int getresgid(gid_t *, gid_t *, gid_t *); extern int setgroups(int, gid_t *); +extern int uselib(const char*); static inline long get_errno(long ret) { @@ -1830,7 +1833,9 @@ goto unimplemented; case TARGET_NR_acct: - goto unimplemented; + ret = get_errno(acct(path((const char*)arg1))); + break; + case TARGET_NR_umount2: ret = get_errno(umount2((const char *)arg1, arg2)); break; @@ -2142,7 +2147,9 @@ ret = get_errno(readlink(path((const char *)arg1), (char *)arg2, arg3)); break; case TARGET_NR_uselib: - goto unimplemented; + ret = get_errno(uselib(path((const char*)arg1))); + break; + case TARGET_NR_swapon: ret = get_errno(swapon((const char *)arg1, arg2)); break; @@ -2257,7 +2264,9 @@ ret = do_socketcall(arg1, (int32_t *)arg2); break; case TARGET_NR_syslog: - goto unimplemented; + ret = get_errno(sys_syslog((int)arg1, (char*)arg2, (int)arg3)); + break; + case TARGET_NR_setitimer: { struct target_itimerval *target_value = (void *)arg2; @@ -2758,7 +2768,8 @@ #endif #ifdef TARGET_NR_ftruncate64 case TARGET_NR_ftruncate64: - goto unimplemented; + ret = get_errno(ftruncate64((int)arg1, (off64_t)arg2)); + break; #endif #ifdef TARGET_NR_stat64 case TARGET_NR_stat64: @@ -3047,11 +3058,14 @@ goto unimplemented; #ifdef TARGET_NR_mincore case TARGET_NR_mincore: - goto unimplemented; + page_unprotect_range((void*)arg3, ((size_t)arg2 + TARGET_PAGE_SIZE - 1) / TARGET_PAGE_SIZE); + ret = get_errno(mincore((void*)arg1, (size_t)arg2, (unsigned char*)arg3)); + break; #endif #ifdef TARGET_NR_madvise case TARGET_NR_madvise: - goto unimplemented; + ret = get_errno(madvise((void*)arg1, (size_t)arg2, (int)arg3)); + break; #endif #if TARGET_LONG_BITS == 32 case TARGET_NR_fcntl64: @@ -3100,7 +3114,8 @@ ret = get_errno(gettid()); break; case TARGET_NR_readahead: - goto unimplemented; + ret = get_errno(readahead((int)arg1, (off64_t)arg2, (size_t)arg3)); + break; #ifdef TARGET_NR_setxattr case TARGET_NR_setxattr: case TARGET_NR_lsetxattr: @@ -3121,6 +3136,22 @@ case TARGET_NR_get_thread_area: goto unimplemented_nowarn; #endif +#ifdef TARGET_NR_clock_gettime + case TARGET_NR_clock_gettime: + { + struct target_timespec* ttp = (struct target_timespec*)arg2; + struct timespec htp; + if(ttp) { + htp.tv_sec = tswapl(ttp->tv_sec); + htp.tv_nsec = tswapl(ttp->tv_nsec); + ret = get_errno(clock_gettime((clockid_t)arg1, &htp)); + ttp->tv_sec = tswapl(htp.tv_sec); + ttp->tv_nsec = tswapl(htp.tv_nsec); + } else + ret = get_errno(clock_gettime((clockid_t)arg1, NULL)); + break; + } +#endif default: unimplemented: gemu_log("qemu: Unsupported syscall: %d\n", num); Index: linux-user/arm/syscall_nr.h =================================================================== RCS file: /cvsroot/qemu/qemu/linux-user/arm/syscall_nr.h,v retrieving revision 1.2 diff -u -r1.2 syscall_nr.h --- linux-user/arm/syscall_nr.h 6 Dec 2004 22:58:05 -0000 1.2 +++ linux-user/arm/syscall_nr.h 22 Mar 2005 12:42:30 -0000 @@ -259,4 +259,5 @@ /* 254 for set_thread_area */ /* 255 for get_thread_area */ /* 256 for set_tid_address */ +#define TARGET_NR_clock_gettime (263) #define TARGET_NR_utimes (269)