Patchwork [2/2] linux-user: in linux-user/strace.c, tswap() is useless

login
register
mail settings
Submitter Laurent Vivier
Date Feb. 15, 2011, 8:10 p.m.
Message ID <1297800644-30773-2-git-send-email-laurent@vivier.eu>
Download mbox | patch
Permalink /patch/83294/
State New
Headers show

Comments

Laurent Vivier - Feb. 15, 2011, 8:10 p.m.
Syscall parameters are already swapped by the caller.

This patch removes useless tswap() from strace.c

$ QEMU_STRACE=1 chroot /m68k mknod myramdisk b 1 1
with tswap()
...
29944 mknod("myramdisk",026630200000) = 0
...

without tswap()

...
30042 mknod("myramdisk",S_IFBLK|0666,makedev(1,1)) = 0
...

natively:

$ strace touch mytouch
...
open("mytouch", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
...

$ QEMU_STRACE=1 chroot /m68k touch mytouch
with tswap()
...
30368 open("/usr/share/locale/locale.alias",O_RDONLY) = 3
30368 fstat64(50331648,0x4080032c) = 0
...
30368 open("mytouch",O_RDONLY|O_CREAT|O_LARGEFILE|O_NOCTTY|O_NONBLOCK|0x1) = 0
...
without tswap()
...
30572 open("/usr/share/locale/locale.alias",O_RDONLY) = 3
30572 fstat64(3,0x4080032c) = 0
...
30572 open("mytouch",O_WRONLY|O_CREAT|O_LARGEFILE|O_NOCTTY|O_NONBLOCK,0666) = 0

Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---
 linux-user/strace.c |   71 +++++++++++++++++++++------------------------------
 1 files changed, 29 insertions(+), 42 deletions(-)
Riku Voipio - Feb. 16, 2011, 10:25 a.m.
Hi,


On Tue, Feb 15, 2011 at 09:10:44PM +0100, Laurent Vivier wrote:
> Syscall parameters are already swapped by the caller.
> 
> This patch removes useless tswap() from strace.c

Thanks. Added to next linux-user que.

I modified your patch to have casts to the given printf format
specifiers, so we don't get compiler warnings.
 
> $ QEMU_STRACE=1 chroot /m68k mknod myramdisk b 1 1
> with tswap()
> ...
> 29944 mknod("myramdisk",026630200000) = 0
> ...
> 
> without tswap()
> 
> ...
> 30042 mknod("myramdisk",S_IFBLK|0666,makedev(1,1)) = 0
> ...
> 
> natively:
> 
> $ strace touch mytouch
> ...
> open("mytouch", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
> ...
> 
> $ QEMU_STRACE=1 chroot /m68k touch mytouch
> with tswap()
> ...
> 30368 open("/usr/share/locale/locale.alias",O_RDONLY) = 3
> 30368 fstat64(50331648,0x4080032c) = 0
> ...
> 30368 open("mytouch",O_RDONLY|O_CREAT|O_LARGEFILE|O_NOCTTY|O_NONBLOCK|0x1) = 0
> ...
> without tswap()
> ...
> 30572 open("/usr/share/locale/locale.alias",O_RDONLY) = 3
> 30572 fstat64(3,0x4080032c) = 0
> ...
> 30572 open("mytouch",O_WRONLY|O_CREAT|O_LARGEFILE|O_NOCTTY|O_NONBLOCK,0666) = 0
> 
> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
> ---
>  linux-user/strace.c |   71 +++++++++++++++++++++------------------------------
>  1 files changed, 29 insertions(+), 42 deletions(-)
> 
> diff --git a/linux-user/strace.c b/linux-user/strace.c
> index 05277c0..86ad5aa 100644
> --- a/linux-user/strace.c
> +++ b/linux-user/strace.c
> @@ -441,14 +441,11 @@ get_comma(int last)
>  }
>  
>  static void
> -print_flags(const struct flags *f, abi_long tflags, int last)
> +print_flags(const struct flags *f, abi_long flags, int last)
>  {
>      const char *sep = "";
> -    int flags;
>      int n;
>  
> -    flags = (int)tswap32(tflags);
> -
>      if ((flags == 0) && (f->f_value == 0)) {
>          gemu_log("%s%s", f->f_string, get_comma(last));
>          return;
> @@ -476,10 +473,8 @@ print_flags(const struct flags *f, abi_long tflags, int last)
>  }
>  
>  static void
> -print_at_dirfd(abi_long tdirfd, int last)
> +print_at_dirfd(abi_long dirfd, int last)
>  {
> -    int dirfd = tswap32(tdirfd);
> -
>  #ifdef AT_FDCWD
>      if (dirfd == AT_FDCWD) {
>          gemu_log("AT_FDCWD%s", get_comma(last));
> @@ -490,11 +485,10 @@ print_at_dirfd(abi_long tdirfd, int last)
>  }
>  
>  static void
> -print_file_mode(abi_long tmode, int last)
> +print_file_mode(abi_long mode, int last)
>  {
>      const char *sep = "";
>      const struct flags *m;
> -    mode_t mode = (mode_t)tswap32(tmode);
>  
>      for (m = &mode_flags[0]; m->f_string != NULL; m++) {
>          if ((m->f_value & mode) == m->f_value) {
> @@ -514,10 +508,8 @@ print_file_mode(abi_long tmode, int last)
>  }
>  
>  static void
> -print_open_flags(abi_long tflags, int last)
> +print_open_flags(abi_long flags, int last)
>  {
> -    int flags = tswap32(tflags);
> -
>      print_flags(open_access_flags, flags & TARGET_O_ACCMODE, 1);
>      flags &= ~TARGET_O_ACCMODE;
>      if (flags == 0) {
> @@ -620,7 +612,7 @@ print_accept(const struct syscallname *name,
>      abi_long arg3, abi_long arg4, abi_long arg5)
>  {
>      print_syscall_prologue(name);
> -    print_raw_param("%d", tswap32(arg0), 0);
> +    print_raw_param("%d", arg0, 0);
>      print_pointer(arg1, 0);
>      print_number(arg2, 1);
>      print_syscall_epilogue(name);
> @@ -698,7 +690,7 @@ print_execv(const struct syscallname *name,
>  {
>      print_syscall_prologue(name);
>      print_string(arg0, 0);
> -    print_raw_param("0x" TARGET_ABI_FMT_lx, tswapl(arg1), 1);
> +    print_raw_param("0x" TARGET_ABI_FMT_lx, arg1, 1);
>      print_syscall_epilogue(name);
>  }
>  #endif
> @@ -742,13 +734,8 @@ print_fchownat(const struct syscallname *name,
>      print_syscall_prologue(name);
>      print_at_dirfd(arg0, 0);
>      print_string(arg1, 0);
> -#ifdef USE_UID16
> -    print_raw_param("%d", tswap16(arg2), 0);
> -    print_raw_param("%d", tswap16(arg3), 0);
> -#else
> -    print_raw_param("%d", tswap32(arg2), 0);
> -    print_raw_param("%d", tswap32(arg3), 0);
> -#endif
> +    print_raw_param("%d", arg2, 0);
> +    print_raw_param("%d", arg3, 0);
>      print_flags(at_file_flags, arg4, 1);
>      print_syscall_epilogue(name);
>  }
> @@ -761,7 +748,7 @@ print_fcntl(const struct syscallname *name,
>      abi_long arg3, abi_long arg4, abi_long arg5)
>  {
>      print_syscall_prologue(name);
> -    print_raw_param("%d", tswap32(arg0), 0);
> +    print_raw_param("%d", arg0, 0);
>      print_flags(fcntl_flags, arg1, 0);
>      /*
>       * TODO: check flags and print following argument only
> @@ -842,7 +829,7 @@ print_fstat(const struct syscallname *name,
>      abi_long arg3, abi_long arg4, abi_long arg5)
>  {
>      print_syscall_prologue(name);
> -    print_raw_param("%d", tswap32(arg0), 0);
> +    print_raw_param("%d", arg0, 0);
>      print_pointer(arg1, 1);
>      print_syscall_epilogue(name);
>  }
> @@ -894,14 +881,14 @@ print_mknod(const struct syscallname *name,
>      abi_long arg0, abi_long arg1, abi_long arg2,
>      abi_long arg3, abi_long arg4, abi_long arg5)
>  {
> -    int hasdev = (tswapl(arg1) & (S_IFCHR|S_IFBLK));
> +    int hasdev = (arg1 & (S_IFCHR|S_IFBLK));
>  
>      print_syscall_prologue(name);
>      print_string(arg0, 0);
>      print_file_mode(arg1, (hasdev == 0));
>      if (hasdev) {
> -        print_raw_param("makedev(%d", major(tswapl(arg2)), 0);
> -        print_raw_param("%d)", minor(tswapl(arg2)), 1);
> +        print_raw_param("makedev(%d", major(arg2), 0);
> +        print_raw_param("%d)", minor(arg2), 1);
>      }
>      print_syscall_epilogue(name);
>  }
> @@ -913,15 +900,15 @@ print_mknodat(const struct syscallname *name,
>      abi_long arg0, abi_long arg1, abi_long arg2,
>      abi_long arg3, abi_long arg4, abi_long arg5)
>  {
> -    int hasdev = (tswapl(arg2) & (S_IFCHR|S_IFBLK));
> +    int hasdev = (arg2 & (S_IFCHR|S_IFBLK));
>  
>      print_syscall_prologue(name);
>      print_at_dirfd(arg0, 0);
>      print_string(arg1, 0);
>      print_file_mode(arg2, (hasdev == 0));
>      if (hasdev) {
> -        print_raw_param("makedev(%d", major(tswapl(arg3)), 0);
> -        print_raw_param("%d)", minor(tswapl(arg3)), 1);
> +        print_raw_param("makedev(%d", major(arg3), 0);
> +        print_raw_param("%d)", minor(arg3), 1);
>      }
>      print_syscall_epilogue(name);
>  }
> @@ -933,7 +920,7 @@ print_mq_open(const struct syscallname *name,
>      abi_long arg0, abi_long arg1, abi_long arg2,
>      abi_long arg3, abi_long arg4, abi_long arg5)
>  {
> -    int is_creat = (tswapl(arg1) & TARGET_O_CREAT);
> +    int is_creat = (arg1 & TARGET_O_CREAT);
>  
>      print_syscall_prologue(name);
>      print_string(arg0, 0);
> @@ -952,7 +939,7 @@ print_open(const struct syscallname *name,
>      abi_long arg0, abi_long arg1, abi_long arg2,
>      abi_long arg3, abi_long arg4, abi_long arg5)
>  {
> -    int is_creat = (tswap32(arg1) & TARGET_O_CREAT);
> +    int is_creat = (arg1 & TARGET_O_CREAT);
>  
>      print_syscall_prologue(name);
>      print_string(arg0, 0);
> @@ -969,7 +956,7 @@ print_openat(const struct syscallname *name,
>      abi_long arg0, abi_long arg1, abi_long arg2,
>      abi_long arg3, abi_long arg4, abi_long arg5)
>  {
> -    int is_creat = (tswap32(arg2) & TARGET_O_CREAT);
> +    int is_creat = (arg2 & TARGET_O_CREAT);
>  
>      print_syscall_prologue(name);
>      print_at_dirfd(arg0, 0);
> @@ -1018,7 +1005,7 @@ print_readlink(const struct syscallname *name,
>      print_syscall_prologue(name);
>      print_string(arg0, 0);
>      print_pointer(arg1, 0);
> -    print_raw_param("%u", tswapl(arg2), 1);
> +    print_raw_param("%u", arg2, 1);
>      print_syscall_epilogue(name);
>  }
>  #endif
> @@ -1033,7 +1020,7 @@ print_readlinkat(const struct syscallname *name,
>      print_at_dirfd(arg0, 0);
>      print_string(arg1, 0);
>      print_pointer(arg2, 0);
> -    print_raw_param("%u", tswapl(arg3), 1);
> +    print_raw_param("%u", arg3, 1);
>      print_syscall_epilogue(name);
>  }
>  #endif
> @@ -1223,11 +1210,11 @@ print_mmap(const struct syscallname *name,
>  {
>      print_syscall_prologue(name);
>      print_pointer(arg0, 0);
> -    print_raw_param("%d", tswapl(arg1), 0);
> +    print_raw_param("%d", arg1, 0);
>      print_flags(mmap_prot_flags, arg2, 0);
>      print_flags(mmap_flags, arg3, 0);
> -    print_raw_param("%d", tswapl(arg4), 0);
> -    print_raw_param("%#x", tswapl(arg5), 1);
> +    print_raw_param("%d", arg4, 0);
> +    print_raw_param("%#x", arg5, 1);
>      print_syscall_epilogue(name);
>  }
>  #define print_mmap2     print_mmap
> @@ -1241,7 +1228,7 @@ print_mprotect(const struct syscallname *name,
>  {
>      print_syscall_prologue(name);
>      print_pointer(arg0, 0);
> -    print_raw_param("%d", tswapl(arg1), 0);
> +    print_raw_param("%d", arg1, 0);
>      print_flags(mmap_prot_flags, arg2, 1);
>      print_syscall_epilogue(name);
>  }
> @@ -1255,7 +1242,7 @@ print_munmap(const struct syscallname *name,
>  {
>      print_syscall_prologue(name);
>      print_pointer(arg0, 0);
> -    print_raw_param("%d", tswapl(arg1), 1);
> +    print_raw_param("%d", arg1, 1);
>      print_syscall_epilogue(name);
>  }
>  #endif
> @@ -1269,7 +1256,7 @@ if( cmd == val ) { \
>      return; \
>  }
>  
> -    int cmd = (int)tswap32(tflag);
> +    int cmd = (int)tflag;
>  #ifdef FUTEX_PRIVATE_FLAG
>      if (cmd & FUTEX_PRIVATE_FLAG) {
>          gemu_log("FUTEX_PRIVATE_FLAG|");
> @@ -1303,10 +1290,10 @@ print_futex(const struct syscallname *name,
>      print_syscall_prologue(name);
>      print_pointer(arg0, 0);
>      print_futex_op(arg1, 0);
> -    print_raw_param(",%d", tswapl(arg2), 0);
> +    print_raw_param(",%d", arg2, 0);
>      print_pointer(arg3, 0); /* struct timespec */
>      print_pointer(arg4, 0);
> -    print_raw_param("%d", tswapl(arg4), 1);
> +    print_raw_param("%d", arg4, 1);
>      print_syscall_epilogue(name);
>  }
>  #endif
> -- 
> 1.7.1
>

Patch

diff --git a/linux-user/strace.c b/linux-user/strace.c
index 05277c0..86ad5aa 100644
--- a/linux-user/strace.c
+++ b/linux-user/strace.c
@@ -441,14 +441,11 @@  get_comma(int last)
 }
 
 static void
-print_flags(const struct flags *f, abi_long tflags, int last)
+print_flags(const struct flags *f, abi_long flags, int last)
 {
     const char *sep = "";
-    int flags;
     int n;
 
-    flags = (int)tswap32(tflags);
-
     if ((flags == 0) && (f->f_value == 0)) {
         gemu_log("%s%s", f->f_string, get_comma(last));
         return;
@@ -476,10 +473,8 @@  print_flags(const struct flags *f, abi_long tflags, int last)
 }
 
 static void
-print_at_dirfd(abi_long tdirfd, int last)
+print_at_dirfd(abi_long dirfd, int last)
 {
-    int dirfd = tswap32(tdirfd);
-
 #ifdef AT_FDCWD
     if (dirfd == AT_FDCWD) {
         gemu_log("AT_FDCWD%s", get_comma(last));
@@ -490,11 +485,10 @@  print_at_dirfd(abi_long tdirfd, int last)
 }
 
 static void
-print_file_mode(abi_long tmode, int last)
+print_file_mode(abi_long mode, int last)
 {
     const char *sep = "";
     const struct flags *m;
-    mode_t mode = (mode_t)tswap32(tmode);
 
     for (m = &mode_flags[0]; m->f_string != NULL; m++) {
         if ((m->f_value & mode) == m->f_value) {
@@ -514,10 +508,8 @@  print_file_mode(abi_long tmode, int last)
 }
 
 static void
-print_open_flags(abi_long tflags, int last)
+print_open_flags(abi_long flags, int last)
 {
-    int flags = tswap32(tflags);
-
     print_flags(open_access_flags, flags & TARGET_O_ACCMODE, 1);
     flags &= ~TARGET_O_ACCMODE;
     if (flags == 0) {
@@ -620,7 +612,7 @@  print_accept(const struct syscallname *name,
     abi_long arg3, abi_long arg4, abi_long arg5)
 {
     print_syscall_prologue(name);
-    print_raw_param("%d", tswap32(arg0), 0);
+    print_raw_param("%d", arg0, 0);
     print_pointer(arg1, 0);
     print_number(arg2, 1);
     print_syscall_epilogue(name);
@@ -698,7 +690,7 @@  print_execv(const struct syscallname *name,
 {
     print_syscall_prologue(name);
     print_string(arg0, 0);
-    print_raw_param("0x" TARGET_ABI_FMT_lx, tswapl(arg1), 1);
+    print_raw_param("0x" TARGET_ABI_FMT_lx, arg1, 1);
     print_syscall_epilogue(name);
 }
 #endif
@@ -742,13 +734,8 @@  print_fchownat(const struct syscallname *name,
     print_syscall_prologue(name);
     print_at_dirfd(arg0, 0);
     print_string(arg1, 0);
-#ifdef USE_UID16
-    print_raw_param("%d", tswap16(arg2), 0);
-    print_raw_param("%d", tswap16(arg3), 0);
-#else
-    print_raw_param("%d", tswap32(arg2), 0);
-    print_raw_param("%d", tswap32(arg3), 0);
-#endif
+    print_raw_param("%d", arg2, 0);
+    print_raw_param("%d", arg3, 0);
     print_flags(at_file_flags, arg4, 1);
     print_syscall_epilogue(name);
 }
@@ -761,7 +748,7 @@  print_fcntl(const struct syscallname *name,
     abi_long arg3, abi_long arg4, abi_long arg5)
 {
     print_syscall_prologue(name);
-    print_raw_param("%d", tswap32(arg0), 0);
+    print_raw_param("%d", arg0, 0);
     print_flags(fcntl_flags, arg1, 0);
     /*
      * TODO: check flags and print following argument only
@@ -842,7 +829,7 @@  print_fstat(const struct syscallname *name,
     abi_long arg3, abi_long arg4, abi_long arg5)
 {
     print_syscall_prologue(name);
-    print_raw_param("%d", tswap32(arg0), 0);
+    print_raw_param("%d", arg0, 0);
     print_pointer(arg1, 1);
     print_syscall_epilogue(name);
 }
@@ -894,14 +881,14 @@  print_mknod(const struct syscallname *name,
     abi_long arg0, abi_long arg1, abi_long arg2,
     abi_long arg3, abi_long arg4, abi_long arg5)
 {
-    int hasdev = (tswapl(arg1) & (S_IFCHR|S_IFBLK));
+    int hasdev = (arg1 & (S_IFCHR|S_IFBLK));
 
     print_syscall_prologue(name);
     print_string(arg0, 0);
     print_file_mode(arg1, (hasdev == 0));
     if (hasdev) {
-        print_raw_param("makedev(%d", major(tswapl(arg2)), 0);
-        print_raw_param("%d)", minor(tswapl(arg2)), 1);
+        print_raw_param("makedev(%d", major(arg2), 0);
+        print_raw_param("%d)", minor(arg2), 1);
     }
     print_syscall_epilogue(name);
 }
@@ -913,15 +900,15 @@  print_mknodat(const struct syscallname *name,
     abi_long arg0, abi_long arg1, abi_long arg2,
     abi_long arg3, abi_long arg4, abi_long arg5)
 {
-    int hasdev = (tswapl(arg2) & (S_IFCHR|S_IFBLK));
+    int hasdev = (arg2 & (S_IFCHR|S_IFBLK));
 
     print_syscall_prologue(name);
     print_at_dirfd(arg0, 0);
     print_string(arg1, 0);
     print_file_mode(arg2, (hasdev == 0));
     if (hasdev) {
-        print_raw_param("makedev(%d", major(tswapl(arg3)), 0);
-        print_raw_param("%d)", minor(tswapl(arg3)), 1);
+        print_raw_param("makedev(%d", major(arg3), 0);
+        print_raw_param("%d)", minor(arg3), 1);
     }
     print_syscall_epilogue(name);
 }
@@ -933,7 +920,7 @@  print_mq_open(const struct syscallname *name,
     abi_long arg0, abi_long arg1, abi_long arg2,
     abi_long arg3, abi_long arg4, abi_long arg5)
 {
-    int is_creat = (tswapl(arg1) & TARGET_O_CREAT);
+    int is_creat = (arg1 & TARGET_O_CREAT);
 
     print_syscall_prologue(name);
     print_string(arg0, 0);
@@ -952,7 +939,7 @@  print_open(const struct syscallname *name,
     abi_long arg0, abi_long arg1, abi_long arg2,
     abi_long arg3, abi_long arg4, abi_long arg5)
 {
-    int is_creat = (tswap32(arg1) & TARGET_O_CREAT);
+    int is_creat = (arg1 & TARGET_O_CREAT);
 
     print_syscall_prologue(name);
     print_string(arg0, 0);
@@ -969,7 +956,7 @@  print_openat(const struct syscallname *name,
     abi_long arg0, abi_long arg1, abi_long arg2,
     abi_long arg3, abi_long arg4, abi_long arg5)
 {
-    int is_creat = (tswap32(arg2) & TARGET_O_CREAT);
+    int is_creat = (arg2 & TARGET_O_CREAT);
 
     print_syscall_prologue(name);
     print_at_dirfd(arg0, 0);
@@ -1018,7 +1005,7 @@  print_readlink(const struct syscallname *name,
     print_syscall_prologue(name);
     print_string(arg0, 0);
     print_pointer(arg1, 0);
-    print_raw_param("%u", tswapl(arg2), 1);
+    print_raw_param("%u", arg2, 1);
     print_syscall_epilogue(name);
 }
 #endif
@@ -1033,7 +1020,7 @@  print_readlinkat(const struct syscallname *name,
     print_at_dirfd(arg0, 0);
     print_string(arg1, 0);
     print_pointer(arg2, 0);
-    print_raw_param("%u", tswapl(arg3), 1);
+    print_raw_param("%u", arg3, 1);
     print_syscall_epilogue(name);
 }
 #endif
@@ -1223,11 +1210,11 @@  print_mmap(const struct syscallname *name,
 {
     print_syscall_prologue(name);
     print_pointer(arg0, 0);
-    print_raw_param("%d", tswapl(arg1), 0);
+    print_raw_param("%d", arg1, 0);
     print_flags(mmap_prot_flags, arg2, 0);
     print_flags(mmap_flags, arg3, 0);
-    print_raw_param("%d", tswapl(arg4), 0);
-    print_raw_param("%#x", tswapl(arg5), 1);
+    print_raw_param("%d", arg4, 0);
+    print_raw_param("%#x", arg5, 1);
     print_syscall_epilogue(name);
 }
 #define print_mmap2     print_mmap
@@ -1241,7 +1228,7 @@  print_mprotect(const struct syscallname *name,
 {
     print_syscall_prologue(name);
     print_pointer(arg0, 0);
-    print_raw_param("%d", tswapl(arg1), 0);
+    print_raw_param("%d", arg1, 0);
     print_flags(mmap_prot_flags, arg2, 1);
     print_syscall_epilogue(name);
 }
@@ -1255,7 +1242,7 @@  print_munmap(const struct syscallname *name,
 {
     print_syscall_prologue(name);
     print_pointer(arg0, 0);
-    print_raw_param("%d", tswapl(arg1), 1);
+    print_raw_param("%d", arg1, 1);
     print_syscall_epilogue(name);
 }
 #endif
@@ -1269,7 +1256,7 @@  if( cmd == val ) { \
     return; \
 }
 
-    int cmd = (int)tswap32(tflag);
+    int cmd = (int)tflag;
 #ifdef FUTEX_PRIVATE_FLAG
     if (cmd & FUTEX_PRIVATE_FLAG) {
         gemu_log("FUTEX_PRIVATE_FLAG|");
@@ -1303,10 +1290,10 @@  print_futex(const struct syscallname *name,
     print_syscall_prologue(name);
     print_pointer(arg0, 0);
     print_futex_op(arg1, 0);
-    print_raw_param(",%d", tswapl(arg2), 0);
+    print_raw_param(",%d", arg2, 0);
     print_pointer(arg3, 0); /* struct timespec */
     print_pointer(arg4, 0);
-    print_raw_param("%d", tswapl(arg4), 1);
+    print_raw_param("%d", arg4, 1);
     print_syscall_epilogue(name);
 }
 #endif