+2006-10-13 Ulrich Drepper <drepper@redhat.com>
+ Bernhard Kaindl <bk@suse.de>
+ Dmitry V. Levin <ldv@altlinux.org>
+ Michael Holzheu <holzheu@de.ibm.com>
+
+ Add hooks for new syscalls. Add decoders for *at, inotify*,
+ pselect6, ppoll and unshare syscalls.
+
+ * defs.h: Declare print_sigset.
+ * desc.c (sys_pselect6): New function.
+ * file.c (decode_open, decode_access, decode_mkdir,
+ decode_readlink, decode_chmod, decode_utimes, decode_mknod):
+ New functions.
+ (sys_open, sys_access, sys_mkdir, sys_readlink, sys_chmod,
+ sys_utimes, sys_mknod): Use them.
+ [LINUX] (fstatatflags, unlinkatflags, inotify_modes): New
+ variables.
+ [LINUX] (print_dirfd, sys_openat, sys_faccessat,
+ sys_newfstatat, sys_mkdirat, sys_linkat, sys_unlinkat,
+ sys_symlinkat, sys_readlinkat, sys_renameat, sys_fchownat,
+ sys_fchmodat, sys_futimesat, sys_mknodat, sys_inotify_add_watch,
+ sys_inotify_rm_watch): New functions.
+ * process.c [LINUX] (sys_unshare): New function.
+ * signal.c (print_sigset): New function.
+ (sys_sigprocmask): Use it.
+ * stream.c (decode_poll): New function.
+ (sys_poll): Use it.
+ [LINUX] (sys_ppoll): New function.
+ * linux/syscall.h: Delcare new syscall handlers.
+ * linux/syscallent.h: Hook up new syscalls.
+ * linux/alpha/syscallent.h: Likewise.
+ * linux/hppa/syscallent.h: Likewise.
+ * linux/ia64/syscallent.h: Likewise.
+ * linux/mips/syscallent.h: Likewise.
+ * linux/powerpc/syscallent.h: Likewise.
+ * linux/s390/syscallent.h: Likewise.
+ * linux/s390x/syscallent.h: Likewise.
+ * linux/sparc/syscallent.h: Likewise.
+ * linux/sparc64/syscallent.h: Likewise.
+ * linux/x86_64/syscallent.h: Likewise.
+ Fixes RH#178633.
+
2006-10-06 Dmitry V. Levin <ldv@altlinux.org>
* strace.c [!USE_PROCFS] (trace): Presence of PT_GETSIGINFO
extern int sigishandled P((struct tcb *, int));
extern void printcall P((struct tcb *));
extern const char *signame P((int));
+extern void print_sigset P((struct tcb *, long, int));
extern void printsignal P((int));
extern void printleader P((struct tcb *));
extern void printtrailer P((struct tcb *));
sys_select(tcp)
struct tcb *tcp;
{
- long *args = tcp->u_arg;
- return decode_select(tcp, args, 0);
+ return decode_select(tcp, tcp->u_arg, 0);
+}
+
+#ifdef LINUX
+int
+sys_pselect6(struct tcb *tcp)
+{
+ int rc = decode_select(tcp, tcp->u_arg, 0);
+ if (exiting(tcp)) {
+ struct {
+ void *ss;
+ unsigned long len;
+ } data;
+ if (umove(tcp, tcp->u_arg[5], &data) < 0)
+ tprintf(", %#lx", tcp->u_arg[5]);
+ else {
+ tprintf(", {");
+ if (data.len < sizeof(sigset_t))
+ tprintf("%#lx", (long)data.ss);
+ else
+ print_sigset(tcp, (long)data.ss, 0);
+ tprintf(", %lu}", data.len);
+ }
+ }
+ return rc;
}
+#endif
{ 0, NULL },
};
-int
-sys_open(tcp)
-struct tcb *tcp;
+#ifdef LINUX
+
+#ifndef AT_FDCWD
+# define AT_FDCWD -100
+#endif
+
+static void
+print_dirfd(long fd)
+{
+ if (fd == AT_FDCWD)
+ tprintf("AT_FDCWD, ");
+ else
+ tprintf("%ld, ", fd);
+}
+#endif
+
+static int
+decode_open(struct tcb *tcp, int offset)
{
if (entering(tcp)) {
- printpath(tcp, tcp->u_arg[0]);
+ printpath(tcp, tcp->u_arg[offset]);
tprintf(", ");
/* flags */
- printflags(openmodes, tcp->u_arg[1] + 1, "O_???");
- if (tcp->u_arg[1] & O_CREAT) {
+ printflags(openmodes, tcp->u_arg[offset + 1] + 1, "O_???");
+ if (tcp->u_arg[offset + 1] & O_CREAT) {
/* mode */
- tprintf(", %#lo", tcp->u_arg[2]);
+ tprintf(", %#lo", tcp->u_arg[offset + 2]);
}
}
return 0;
}
+int
+sys_open(struct tcb *tcp)
+{
+ return decode_open(tcp, 0);
+}
+
+#ifdef LINUX
+int
+sys_openat(struct tcb *tcp)
+{
+ if (entering(tcp))
+ print_dirfd(tcp->u_arg[0]);
+ return decode_open(tcp, 1);
+}
+#endif
+
#ifdef LINUXSPARC
static const struct xlat openmodessol[] = {
{ 0, "O_RDWR" },
{ 0, NULL },
};
-int
-sys_access(tcp)
-struct tcb *tcp;
+static int
+decode_access(struct tcb *tcp, int offset)
{
if (entering(tcp)) {
- printpath(tcp, tcp->u_arg[0]);
+ printpath(tcp, tcp->u_arg[offset]);
tprintf(", ");
- printflags(access_flags, tcp->u_arg[1], "?_OK");
+ printflags(access_flags, tcp->u_arg[offset + 1], "?_OK");
}
return 0;
}
+int
+sys_access(struct tcb *tcp)
+{
+ return decode_access(tcp, 0);
+}
+
+#ifdef LINUX
+int
+sys_faccessat(struct tcb *tcp)
+{
+ if (entering(tcp))
+ print_dirfd(tcp->u_arg[0]);
+ return decode_access(tcp, 1);
+}
+#endif
+
int
sys_umask(tcp)
struct tcb *tcp;
#endif
}
+#ifdef LINUX
+static const struct xlat fstatatflags[] = {
+#ifndef AT_SYMLINK_NOFOLLOW
+# define AT_SYMLINK_NOFOLLOW 0x100
+#endif
+ { AT_SYMLINK_NOFOLLOW, "AT_SYMLINK_NOFOLLOW" },
+ { 0, NULL },
+};
+
+int
+sys_newfstatat(struct tcb *tcp)
+{
+ if (entering(tcp)) {
+ print_dirfd(tcp->u_arg[0]);
+ printpath(tcp, tcp->u_arg[1]);
+ tprintf(", ");
+ } else {
+#ifdef HAVE_STAT64
+ printstat64(tcp, tcp->u_arg[2]);
+#else
+ printstat(tcp, tcp->u_arg[2]);
+#endif
+ tprintf(", ");
+ printflags(fstatatflags, tcp->u_arg[3], "AT_???");
+ }
+ return 0;
+}
+#endif
+
#if defined(LINUX) && defined(HAVE_STRUCT___OLD_KERNEL_STAT)
int
sys_oldstat(tcp)
return 0;
}
-int
-sys_mkdir(tcp)
-struct tcb *tcp;
+static int
+decode_mkdir(struct tcb *tcp, int offset)
{
if (entering(tcp)) {
- printpath(tcp, tcp->u_arg[0]);
- tprintf(", %#lo", tcp->u_arg[1]);
+ printpath(tcp, tcp->u_arg[offset]);
+ tprintf(", %#lo", tcp->u_arg[offset + 1]);
}
return 0;
}
+int
+sys_mkdir(struct tcb *tcp)
+{
+ return decode_mkdir(tcp, 0);
+}
+
+#ifdef LINUX
+int
+sys_mkdirat(struct tcb *tcp)
+{
+ if (entering(tcp))
+ print_dirfd(tcp->u_arg[0]);
+ return decode_mkdir(tcp, 1);
+}
+#endif
+
int
sys_rmdir(tcp)
struct tcb *tcp;
return 0;
}
+#ifdef LINUX
+int
+sys_linkat(struct tcb *tcp)
+{
+ if (entering(tcp)) {
+ print_dirfd(tcp->u_arg[0]);
+ printpath(tcp, tcp->u_arg[1]);
+ tprintf(", ");
+ print_dirfd(tcp->u_arg[2]);
+ printpath(tcp, tcp->u_arg[3]);
+ tprintf(", %ld", tcp->u_arg[4]);
+ }
+ return 0;
+}
+#endif
+
int
sys_unlink(tcp)
struct tcb *tcp;
return 0;
}
+#ifdef LINUX
+static const struct xlat unlinkatflags[] = {
+#ifndef AT_REMOVEDIR
+# define AT_REMOVEDIR 0x200
+#endif
+ { AT_REMOVEDIR, "AT_REMOVEDIR" },
+ { 0, NULL },
+};
+
+int
+sys_unlinkat(struct tcb *tcp)
+{
+ if (entering(tcp)) {
+ print_dirfd(tcp->u_arg[0]);
+ printpath(tcp, tcp->u_arg[1]);
+ tprintf(", ");
+ printflags(unlinkatflags, tcp->u_arg[2], "AT_???");
+ }
+ return 0;
+}
+#endif
+
int
sys_symlink(tcp)
struct tcb *tcp;
return 0;
}
+#ifdef LINUX
int
-sys_readlink(tcp)
-struct tcb *tcp;
+sys_symlinkat(struct tcb *tcp)
{
if (entering(tcp)) {
printpath(tcp, tcp->u_arg[0]);
tprintf(", ");
+ print_dirfd(tcp->u_arg[1]);
+ printpath(tcp, tcp->u_arg[2]);
+ }
+ return 0;
+}
+#endif
+
+static int
+decode_readlink(struct tcb *tcp, int offset)
+{
+ if (entering(tcp)) {
+ printpath(tcp, tcp->u_arg[offset]);
+ tprintf(", ");
} else {
if (syserror(tcp))
- tprintf("%#lx", tcp->u_arg[1]);
+ tprintf("%#lx", tcp->u_arg[offset + 1]);
else
- printpathn(tcp, tcp->u_arg[1], tcp->u_rval);
- tprintf(", %lu", tcp->u_arg[2]);
+ printpathn(tcp, tcp->u_arg[offset + 1], tcp->u_rval);
+ tprintf(", %lu", tcp->u_arg[offset + 2]);
}
return 0;
}
+int
+sys_readlink(struct tcb *tcp)
+{
+ return decode_readlink(tcp, 0);
+}
+
+#ifdef LINUX
+int
+sys_readlinkat(struct tcb *tcp)
+{
+ if (entering(tcp))
+ print_dirfd(tcp->u_arg[0]);
+ return decode_readlink(tcp, 1);
+}
+#endif
+
int
sys_rename(tcp)
struct tcb *tcp;
return 0;
}
+#ifdef LINUX
+int
+sys_renameat(struct tcb *tcp)
+{
+ if (entering(tcp)) {
+ print_dirfd(tcp->u_arg[0]);
+ printpath(tcp, tcp->u_arg[1]);
+ tprintf(", ");
+ print_dirfd(tcp->u_arg[2]);
+ printpath(tcp, tcp->u_arg[3]);
+ }
+ return 0;
+}
+#endif
+
int
sys_chown(tcp)
struct tcb *tcp;
return 0;
}
+#ifdef LINUX
+int
+sys_fchownat(struct tcb *tcp)
+{
+ if (entering(tcp)) {
+ print_dirfd(tcp->u_arg[0]);
+ printpath(tcp, tcp->u_arg[1]);
+ printuid(", ", tcp->u_arg[2]);
+ printuid(", ", tcp->u_arg[3]);
+ tprintf(", ");
+ printflags(fstatatflags, tcp->u_arg[4], "AT_???");
+ }
+ return 0;
+}
+#endif
+
int
sys_fchown(tcp)
struct tcb *tcp;
return 0;
}
-int
-sys_chmod(tcp)
-struct tcb *tcp;
+static int
+decode_chmod(struct tcb *tcp, int offset)
{
if (entering(tcp)) {
- printpath(tcp, tcp->u_arg[0]);
- tprintf(", %#lo", tcp->u_arg[1]);
+ printpath(tcp, tcp->u_arg[offset]);
+ tprintf(", %#lo", tcp->u_arg[offset + 1]);
}
return 0;
}
+int
+sys_chmod(struct tcb *tcp)
+{
+ return decode_chmod(tcp, 0);
+}
+
+#ifdef LINUX
+int
+sys_fchmodat(struct tcb *tcp)
+{
+ if (entering(tcp))
+ print_dirfd(tcp->u_arg[0]);
+ return decode_chmod(tcp, 1);
+}
+#endif
+
int
sys_fchmod(tcp)
struct tcb *tcp;
}
#endif
-int
-sys_utimes(tcp)
-struct tcb *tcp;
+static int
+decode_utimes(struct tcb *tcp, int offset)
{
if (entering(tcp)) {
- printpath(tcp, tcp->u_arg[0]);
+ printpath(tcp, tcp->u_arg[offset]);
tprintf(", ");
- printtv(tcp, tcp->u_arg[1]);
+ printtv(tcp, tcp->u_arg[offset + 1]);
}
return 0;
}
+int
+sys_utimes(struct tcb *tcp)
+{
+ return decode_utimes(tcp, 0);
+}
+
+#ifdef LINUX
+int
+sys_futimesat(struct tcb *tcp)
+{
+ if (entering(tcp))
+ print_dirfd(tcp->u_arg[0]);
+ return decode_utimes(tcp, 1);
+}
+#endif
+
int
sys_utime(tcp)
struct tcb *tcp;
return 0;
}
-int
-sys_mknod(tcp)
-struct tcb *tcp;
+static int
+decode_mknod(struct tcb *tcp, int offset)
{
- int mode = tcp->u_arg[1];
+ int mode = tcp->u_arg[offset + 1];
if (entering(tcp)) {
- printpath(tcp, tcp->u_arg[0]);
+ printpath(tcp, tcp->u_arg[offset]);
tprintf(", %s", sprintmode(mode));
switch (mode & S_IFMT) {
case S_IFCHR: case S_IFBLK:
#ifdef LINUXSPARC
if (current_personality == 1)
tprintf(", makedev(%lu, %lu)",
- (unsigned long) ((tcp->u_arg[2] >> 18) & 0x3fff),
- (unsigned long) (tcp->u_arg[2] & 0x3ffff));
+ (unsigned long) ((tcp->u_arg[offset + 2] >> 18) & 0x3fff),
+ (unsigned long) (tcp->u_arg[offset + 2] & 0x3ffff));
else
#endif
tprintf(", makedev(%lu, %lu)",
- (unsigned long) major(tcp->u_arg[2]),
- (unsigned long) minor(tcp->u_arg[2]));
+ (unsigned long) major(tcp->u_arg[offset + 2]),
+ (unsigned long) minor(tcp->u_arg[offset + 2]));
break;
default:
break;
return 0;
}
+int
+sys_mknod(struct tcb *tcp)
+{
+ return decode_mknod(tcp, 0);
+}
+
+#ifdef LINUX
+int
+sys_mknodat(struct tcb *tcp)
+{
+ if (entering(tcp))
+ print_dirfd(tcp->u_arg[0]);
+ return decode_mknod(tcp, 1);
+}
+#endif
+
int
sys_mkfifo(tcp)
struct tcb *tcp;
}
return 0;
}
+
+#ifdef LINUX
+static const struct xlat inotify_modes[] = {
+ { 0x00000001, "IN_ACCESS" },
+ { 0x00000002, "IN_MODIFY" },
+ { 0x00000004, "IN_ATTRIB" },
+ { 0x00000008, "IN_CLOSE_WRITE" },
+ { 0x00000010, "IN_CLOSE_NOWRITE" },
+ { 0x00000020, "IN_OPEN" },
+ { 0x00000040, "IN_MOVED_FROM" },
+ { 0x00000080, "IN_MOVED_TO" },
+ { 0x00000100, "IN_CREATE" },
+ { 0x00000200, "IN_DELETE" },
+ { 0x00000400, "IN_DELETE_SELF" },
+ { 0x00000800, "IN_MOVE_SELF" },
+ { 0x00002000, "IN_UNMOUNT" },
+ { 0x00004000, "IN_Q_OVERFLOW" },
+ { 0x00008000, "IN_IGNORED" },
+ { 0x01000000, "IN_ONLYDIR" },
+ { 0x02000000, "IN_DONT_FOLLOW" },
+ { 0x20000000, "IN_MASK_ADD" },
+ { 0x40000000, "IN_ISDIR" },
+ { 0x80000000, "IN_ONESHOT" }
+};
+
+int
+sys_inotify_add_watch(struct tcb *tcp)
+{
+ if (entering(tcp)) {
+ tprintf("%ld, ", tcp->u_arg[0]);
+ printpath(tcp, tcp->u_arg[1]);
+ tprintf(", ");
+ printflags(inotify_modes, tcp->u_arg[2], "IN_???");
+ }
+ return 0;
+}
+
+int
+sys_inotify_rm_watch(struct tcb *tcp)
+{
+ if (entering(tcp)) {
+ tprintf("%ld, %ld", tcp->u_arg[0], tcp->u_arg[1]);
+ }
+ return 0;
+}
+#endif
{ 2, 0, sys_mq_notify, "mq_notify" }, /* 436 */
{ 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 437 */
{ 4, 0, printargs, "waitid" }, /* 438 */
+ { 5, 0, printargs, "add_key" }, /* 439 */
+ { 4, 0, printargs, "request_key" }, /* 440 */
+ { 5, 0, printargs, "keyctl" }, /* 441 */
+ { 3, 0, printargs, "ioprio_set" }, /* 442 */
+ { 2, 0, printargs, "ioprio_get" }, /* 443 */
+ { 0, TD, printargs, "inotify_init" }, /* 444 */
+ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 445 */
+ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 446 */
{ 5, 0, printargs, "mbind" }, /* 260 */
{ 5, 0, printargs, "get_mempolicy" }, /* 261 */
{ 5, 0, printargs, "set_mempolicy" }, /* 262 */
- { 5, 0, printargs, "SYS_263" }, /* 263 */
- { 5, 0, printargs, "SYS_264" }, /* 264 */
- { 5, 0, printargs, "SYS_265" }, /* 265 */
- { 5, 0, printargs, "SYS_266" }, /* 266 */
- { 5, 0, printargs, "SYS_267" }, /* 267 */
- { 5, 0, printargs, "SYS_268" }, /* 268 */
- { 5, 0, printargs, "SYS_269" }, /* 269 */
- { 5, 0, printargs, "SYS_270" }, /* 270 */
- { 5, 0, printargs, "SYS_271" }, /* 271 */
- { 5, 0, printargs, "SYS_272" }, /* 272 */
- { 5, 0, printargs, "SYS_273" }, /* 273 */
- { 5, 0, printargs, "SYS_274" }, /* 274 */
- { 5, 0, printargs, "SYS_275" }, /* 275 */
- { 5, 0, printargs, "SYS_276" }, /* 276 */
- { 5, 0, printargs, "SYS_277" }, /* 277 */
- { 5, 0, printargs, "SYS_278" }, /* 278 */
- { 5, 0, printargs, "SYS_279" }, /* 279 */
- { 5, 0, printargs, "SYS_280" }, /* 280 */
- { 5, 0, printargs, "SYS_281" }, /* 281 */
- { 5, 0, printargs, "SYS_282" }, /* 282 */
- { 5, 0, printargs, "SYS_283" }, /* 283 */
- { 5, 0, printargs, "SYS_284" }, /* 284 */
- { 5, 0, printargs, "SYS_285" }, /* 285 */
- { 5, 0, printargs, "SYS_286" }, /* 286 */
- { 5, 0, printargs, "SYS_287" }, /* 287 */
- { 5, 0, printargs, "SYS_288" }, /* 288 */
- { 5, 0, printargs, "SYS_289" }, /* 289 */
- { 5, 0, printargs, "SYS_290" }, /* 290 */
- { 5, 0, printargs, "SYS_291" }, /* 291 */
- { 5, 0, printargs, "SYS_292" }, /* 292 */
- { 5, 0, printargs, "SYS_293" }, /* 293 */
- { 5, 0, printargs, "SYS_294" }, /* 294 */
+ { 5, 0, printargs, "vserver" }, /* 263 */
+ { 5, 0, printargs, "add_key" }, /* 264 */
+ { 4, 0, printargs, "request_key" }, /* 265 */
+ { 5, 0, printargs, "keyctl" }, /* 266 */
+ { 3, 0, printargs, "ioprio_set" }, /* 267 */
+ { 2, 0, printargs, "ioprio_get" }, /* 268 */
+ { 0, TD, printargs, "inotify_init" }, /* 269 */
+ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 270 */
+ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 271 */
+ { 4, 0, printargs, "migrate_pages" }, /* 272 */
+ { 6, TD, sys_pselect6, "pselect6" }, /* 273 */
+ { 5, TD, sys_ppoll, "ppoll" }, /* 274 */
+ { 4, TD|TF, sys_openat, "openat" }, /* 275 */
+ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 276 */
+ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 277 */
+ { 5, TD|TF, sys_fchownat, "fchownat" }, /* 278 */
+ { 3, TD|TF, sys_futimesat, "futimesat" }, /* 279 */
+ { 4, TD|TD, sys_newfstatat, "newfstatat" }, /* 280 */
+ { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 281 */
+ { 4, TD|TF, sys_renameat, "renameat" }, /* 282 */
+ { 5, TD|TF, sys_linkat, "linkat" }, /* 283 */
+ { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 284 */
+ { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 285 */
+ { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 286 */
+ { 3, TD|TF, sys_faccessat, "faccessat" }, /* 287 */
+ { 1, TP, sys_unshare, "unshare" }, /* 288 */
+ { 2, 0, printargs, "set_robust_list" }, /* 289 */
+ { 3, 0, printargs, "get_robust_list" }, /* 290 */
+ { 6, TD, printargs, "splice" }, /* 291 */
+ { 4, TD, printargs, "sync_file_range" }, /* 292 */
+ { 4, TD, printargs, "tee" }, /* 293 */
+ { 4, TD, printargs, "vmsplice" }, /* 294 */
starts where that one leaves off.
*/
- { 8, 0, printargs, "SYS_343" }, /* 343 */
- { 8, 0, printargs, "SYS_344" }, /* 344 */
- { 8, 0, printargs, "SYS_345" }, /* 345 */
- { 8, 0, printargs, "SYS_346" }, /* 346 */
- { 8, 0, printargs, "SYS_347" }, /* 347 */
- { 8, 0, printargs, "SYS_348" }, /* 348 */
- { 8, 0, printargs, "SYS_349" }, /* 349 */
- { 8, 0, printargs, "SYS_350" }, /* 350 */
- { 8, 0, printargs, "SYS_351" }, /* 351 */
- { 8, 0, printargs, "SYS_352" }, /* 352 */
- { 8, 0, printargs, "SYS_353" }, /* 353 */
- { 8, 0, printargs, "SYS_354" }, /* 354 */
- { 8, 0, printargs, "SYS_355" }, /* 355 */
- { 8, 0, printargs, "SYS_356" }, /* 356 */
- { 8, 0, printargs, "SYS_357" }, /* 357 */
- { 8, 0, printargs, "SYS_358" }, /* 358 */
- { 8, 0, printargs, "SYS_359" }, /* 359 */
- { 8, 0, printargs, "SYS_360" }, /* 360 */
- { 8, 0, printargs, "SYS_361" }, /* 361 */
- { 8, 0, printargs, "SYS_362" }, /* 362 */
- { 8, 0, printargs, "SYS_363" }, /* 363 */
- { 8, 0, printargs, "SYS_364" }, /* 364 */
- { 8, 0, printargs, "SYS_365" }, /* 365 */
- { 8, 0, printargs, "SYS_366" }, /* 366 */
- { 8, 0, printargs, "SYS_367" }, /* 367 */
- { 8, 0, printargs, "SYS_368" }, /* 368 */
- { 8, 0, printargs, "SYS_369" }, /* 369 */
- { 8, 0, printargs, "SYS_370" }, /* 370 */
- { 8, 0, printargs, "SYS_371" }, /* 371 */
- { 8, 0, printargs, "SYS_372" }, /* 372 */
- { 8, 0, printargs, "SYS_373" }, /* 373 */
- { 8, 0, printargs, "SYS_374" }, /* 374 */
- { 8, 0, printargs, "SYS_375" }, /* 375 */
- { 8, 0, printargs, "SYS_376" }, /* 376 */
- { 8, 0, printargs, "SYS_377" }, /* 377 */
- { 8, 0, printargs, "SYS_378" }, /* 378 */
- { 8, 0, printargs, "SYS_379" }, /* 379 */
- { 8, 0, printargs, "SYS_380" }, /* 380 */
- { 8, 0, printargs, "SYS_381" }, /* 381 */
- { 8, 0, printargs, "SYS_382" }, /* 382 */
- { 8, 0, printargs, "SYS_383" }, /* 383 */
- { 8, 0, printargs, "SYS_384" }, /* 384 */
- { 8, 0, printargs, "SYS_385" }, /* 385 */
- { 8, 0, printargs, "SYS_386" }, /* 386 */
- { 8, 0, printargs, "SYS_387" }, /* 387 */
- { 8, 0, printargs, "SYS_388" }, /* 388 */
- { 8, 0, printargs, "SYS_389" }, /* 389 */
- { 8, 0, printargs, "SYS_390" }, /* 390 */
- { 8, 0, printargs, "SYS_391" }, /* 391 */
- { 8, 0, printargs, "SYS_392" }, /* 392 */
- { 8, 0, printargs, "SYS_393" }, /* 393 */
- { 8, 0, printargs, "SYS_394" }, /* 394 */
- { 8, 0, printargs, "SYS_395" }, /* 395 */
- { 8, 0, printargs, "SYS_396" }, /* 396 */
- { 8, 0, printargs, "SYS_397" }, /* 397 */
- { 8, 0, printargs, "SYS_398" }, /* 398 */
- { 8, 0, printargs, "SYS_399" }, /* 399 */
- { 8, 0, printargs, "SYS_400" }, /* 400 */
- { 8, 0, printargs, "SYS_401" }, /* 401 */
- { 8, 0, printargs, "SYS_402" }, /* 402 */
- { 8, 0, printargs, "SYS_403" }, /* 403 */
- { 8, 0, printargs, "SYS_404" }, /* 404 */
- { 8, 0, printargs, "SYS_405" }, /* 405 */
- { 8, 0, printargs, "SYS_406" }, /* 406 */
- { 8, 0, printargs, "SYS_407" }, /* 407 */
- { 8, 0, printargs, "SYS_408" }, /* 408 */
- { 8, 0, printargs, "SYS_409" }, /* 409 */
- { 8, 0, printargs, "SYS_410" }, /* 410 */
- { 8, 0, printargs, "SYS_411" }, /* 411 */
- { 8, 0, printargs, "SYS_412" }, /* 412 */
- { 8, 0, printargs, "SYS_413" }, /* 413 */
- { 8, 0, printargs, "SYS_414" }, /* 414 */
- { 8, 0, printargs, "SYS_415" }, /* 415 */
- { 8, 0, printargs, "SYS_416" }, /* 416 */
- { 8, 0, printargs, "SYS_417" }, /* 417 */
- { 8, 0, printargs, "SYS_418" }, /* 418 */
- { 8, 0, printargs, "SYS_419" }, /* 419 */
- { 8, 0, printargs, "SYS_420" }, /* 420 */
- { 8, 0, printargs, "SYS_421" }, /* 421 */
- { 8, 0, printargs, "SYS_422" }, /* 422 */
- { 8, 0, printargs, "SYS_423" }, /* 423 */
- { 8, 0, printargs, "SYS_424" }, /* 424 */
- { 8, 0, printargs, "SYS_425" }, /* 425 */
- { 8, 0, printargs, "SYS_426" }, /* 426 */
- { 8, 0, printargs, "SYS_427" }, /* 427 */
- { 8, 0, printargs, "SYS_428" }, /* 428 */
- { 8, 0, printargs, "SYS_429" }, /* 429 */
- { 8, 0, printargs, "SYS_430" }, /* 430 */
- { 8, 0, printargs, "SYS_431" }, /* 431 */
- { 8, 0, printargs, "SYS_432" }, /* 432 */
- { 8, 0, printargs, "SYS_433" }, /* 433 */
- { 8, 0, printargs, "SYS_434" }, /* 434 */
- { 8, 0, printargs, "SYS_435" }, /* 435 */
- { 8, 0, printargs, "SYS_436" }, /* 436 */
- { 8, 0, printargs, "SYS_437" }, /* 437 */
- { 8, 0, printargs, "SYS_438" }, /* 438 */
- { 8, 0, printargs, "SYS_439" }, /* 439 */
- { 8, 0, printargs, "SYS_440" }, /* 440 */
- { 8, 0, printargs, "SYS_441" }, /* 441 */
- { 8, 0, printargs, "SYS_442" }, /* 442 */
{ 8, 0, printargs, "SYS_443" }, /* 443 */
{ 8, 0, printargs, "SYS_444" }, /* 444 */
{ 8, 0, printargs, "SYS_445" }, /* 445 */
{ 5, 0, printargs, "sys_kexec_load" }, /* 1268 */
{ 5, 0, printargs, "vserver" }, /* 1269 */
{ 5, TP, sys_waitid, "waitid" }, /* 1270 */
- { 8, 0, printargs, "SYS_1271" }, /* 1271 */
- { 8, 0, printargs, "SYS_1272" }, /* 1272 */
- { 8, 0, printargs, "SYS_1273" }, /* 1273 */
- { 8, 0, printargs, "SYS_1274" }, /* 1274 */
- { 8, 0, printargs, "SYS_1275" }, /* 1275 */
+ { 5, 0, printargs, "add_key" }, /* 1271 */
+ { 4, 0, printargs, "request_key" }, /* 1272 */
+ { 5, 0, printargs, "keyctl" }, /* 1273 */
+ { 3, 0, printargs, "ioprio_set" }, /* 1274 */
+ { 2, 0, printargs, "ioprio_get" }, /* 1275 */
{ 8, 0, printargs, "SYS_1276" }, /* 1276 */
- { 8, 0, printargs, "SYS_1277" }, /* 1277 */
- { 8, 0, printargs, "SYS_1278" }, /* 1278 */
- { 8, 0, printargs, "SYS_1279" }, /* 1279 */
- { 8, 0, printargs, "SYS_1280" }, /* 1280 */
- { 8, 0, printargs, "SYS_1281" }, /* 1281 */
- { 8, 0, printargs, "SYS_1282" }, /* 1282 */
- { 8, 0, printargs, "SYS_1283" }, /* 1283 */
- { 8, 0, printargs, "SYS_1284" }, /* 1284 */
- { 8, 0, printargs, "SYS_1285" }, /* 1285 */
- { 8, 0, printargs, "SYS_1286" }, /* 1286 */
- { 8, 0, printargs, "SYS_1287" }, /* 1287 */
- { 8, 0, printargs, "SYS_1288" }, /* 1288 */
- { 8, 0, printargs, "SYS_1289" }, /* 1289 */
- { 8, 0, printargs, "SYS_1290" }, /* 1290 */
- { 8, 0, printargs, "SYS_1291" }, /* 1291 */
- { 8, 0, printargs, "SYS_1292" }, /* 1292 */
- { 8, 0, printargs, "SYS_1293" }, /* 1293 */
- { 8, 0, printargs, "SYS_1294" }, /* 1294 */
- { 8, 0, printargs, "SYS_1295" }, /* 1295 */
- { 8, 0, printargs, "SYS_1296" }, /* 1296 */
- { 8, 0, printargs, "SYS_1297" }, /* 1297 */
- { 8, 0, printargs, "SYS_1298" }, /* 1298 */
- { 8, 0, printargs, "SYS_1299" }, /* 1299 */
- { 8, 0, printargs, "SYS_1300" }, /* 1300 */
- { 8, 0, printargs, "SYS_1301" }, /* 1301 */
- { 8, 0, printargs, "SYS_1302" }, /* 1302 */
+ { 0, TD, printargs, "inotify_init" }, /* 1277 */
+ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 1278 */
+ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 1279 */
+ { 4, 0, printargs, "migrate_pages" }, /* 1280 */
+ { 4, TD|TF, sys_openat, "openat" }, /* 1281 */
+ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 1282 */
+ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 1283 */
+ { 5, TD|TF, sys_fchownat, "fchownat" }, /* 1284 */
+ { 3, TD|TF, sys_futimesat, "futimesat" }, /* 1285 */
+ { 4, TD|TD, sys_newfstatat, "newfstatat" }, /* 1286 */
+ { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 1287 */
+ { 4, TD|TF, sys_renameat, "renameat" }, /* 1288 */
+ { 5, TD|TF, sys_linkat, "linkat" }, /* 1289 */
+ { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 1290 */
+ { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 1291 */
+ { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 1292 */
+ { 3, TD|TF, sys_faccessat, "faccessat" }, /* 1293 */
+ { 6, TD, sys_pselect6, "pselect6" }, /* 1294 */
+ { 5, TD, sys_ppoll, "ppoll" }, /* 1295 */
+ { 1, TP, sys_unshare, "unshare" }, /* 1296 */
+ { 2, 0, printargs, "set_robust_list" }, /* 1297 */
+ { 3, 0, printargs, "get_robust_list" }, /* 1298 */
+ { 6, TD, printargs, "splice" }, /* 1299 */
+ { 4, TD, printargs, "sync_file_range" }, /* 1300 */
+ { 4, TD, printargs, "tee" }, /* 1301 */
+ { 4, TD, printargs, "vmsplice" }, /* 1302 */
{ 8, 0, printargs, "SYS_1303" }, /* 1303 */
{ 8, 0, printargs, "SYS_1304" }, /* 1304 */
{ 8, 0, printargs, "SYS_1305" }, /* 1305 */
{ 5, 0, printargs, "add_key" }, /* 4280 */
{ 4, 0, printargs, "request_key" }, /* 4281 */
{ 5, 0, printargs, "keyctl" }, /* 4282 */
- { 0, 0, printargs, "SYS_4283" }, /* 4283 */
- { 0, 0, printargs, "SYS_4284" }, /* 4284 */
- { 0, 0, printargs, "SYS_4285" }, /* 4285 */
- { 0, 0, printargs, "SYS_4286" }, /* 4286 */
- { 0, 0, printargs, "SYS_4287" }, /* 4287 */
- { 0, 0, printargs, "SYS_4288" }, /* 4288 */
- { 0, 0, printargs, "SYS_4289" }, /* 4289 */
- { 0, 0, printargs, "SYS_4290" }, /* 4290 */
- { 0, 0, printargs, "SYS_4291" }, /* 4291 */
- { 0, 0, printargs, "SYS_4292" }, /* 4292 */
- { 0, 0, printargs, "SYS_4293" }, /* 4293 */
- { 0, 0, printargs, "SYS_4294" }, /* 4294 */
- { 0, 0, printargs, "SYS_4295" }, /* 4295 */
- { 0, 0, printargs, "SYS_4296" }, /* 4296 */
- { 0, 0, printargs, "SYS_4297" }, /* 4297 */
- { 0, 0, printargs, "SYS_4298" }, /* 4298 */
- { 0, 0, printargs, "SYS_4299" }, /* 4299 */
- { 0, 0, printargs, "SYS_4300" }, /* 4300 */
- { 0, 0, printargs, "SYS_4301" }, /* 4301 */
- { 0, 0, printargs, "SYS_4302" }, /* 4302 */
- { 0, 0, printargs, "SYS_4303" }, /* 4303 */
- { 0, 0, printargs, "SYS_4304" }, /* 4304 */
- { 0, 0, printargs, "SYS_4305" }, /* 4305 */
+ { 1, 0, sys_set_thread_area, "set_thread_area" }, /* 4283 */
+ { 0, TD, printargs, "inotify_init" }, /* 4284 */
+ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 4285 */
+ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 4286 */
+ { 4, 0, printargs, "migrate_pages" }, /* 4287 */
+ { 4, TD|TF, sys_openat, "openat" }, /* 4288 */
+ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 4289 */
+ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 4290 */
+ { 5, TD|TF, sys_fchownat, "fchownat" }, /* 4291 */
+ { 3, TD|TF, sys_futimesat, "futimesat" }, /* 4292 */
+ { 4, TD|TD, sys_newfstatat, "newfstatat" }, /* 4293 */
+ { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 4294 */
+ { 4, TD|TF, sys_renameat, "renameat" }, /* 4295 */
+ { 5, TD|TF, sys_linkat, "linkat" }, /* 4296 */
+ { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 4297 */
+ { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 4298 */
+ { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 4299 */
+ { 3, TD|TF, sys_faccessat, "faccessat" }, /* 4300 */
+ { 6, TD, sys_pselect6, "pselect6" }, /* 4301 */
+ { 5, TD, sys_ppoll, "ppoll" }, /* 4302 */
+ { 1, TP, sys_unshare, "unshare" }, /* 4303 */
+ { 6, TD, printargs, "splice" }, /* 4304 */
+ { 4, TD, printargs, "sync_file_range" }, /* 4305 */
{ 0, 0, printargs, "SYS_4306" }, /* 4306 */
{ 0, 0, printargs, "SYS_4307" }, /* 4307 */
{ 0, 0, printargs, "SYS_4308" }, /* 4308 */
{ 5, 0, printargs, "request_key" }, /* 270 */
{ 5, 0, printargs, "keyctl" }, /* 271 */
{ 5, TP, sys_waitid, "waitid" }, /* 272 */
- { 5, 0, printargs, "SYS_273" }, /* 273 */
- { 5, 0, printargs, "SYS_274" }, /* 274 */
- { 5, 0, printargs, "SYS_275" }, /* 275 */
- { 5, 0, printargs, "SYS_276" }, /* 276 */
- { 5, 0, printargs, "SYS_277" }, /* 277 */
- { 5, 0, printargs, "SYS_278" }, /* 278 */
- { 5, 0, printargs, "SYS_279" }, /* 279 */
- { 5, 0, printargs, "SYS_280" }, /* 280 */
- { 5, 0, printargs, "SYS_281" }, /* 281 */
- { 5, 0, printargs, "SYS_282" }, /* 282 */
- { 5, 0, printargs, "SYS_283" }, /* 283 */
- { 5, 0, printargs, "SYS_284" }, /* 284 */
- { 5, 0, printargs, "SYS_285" }, /* 285 */
- { 5, 0, printargs, "SYS_286" }, /* 286 */
- { 5, 0, printargs, "SYS_287" }, /* 287 */
- { 5, 0, printargs, "SYS_288" }, /* 288 */
- { 5, 0, printargs, "SYS_289" }, /* 289 */
- { 5, 0, printargs, "SYS_290" }, /* 290 */
- { 5, 0, printargs, "SYS_291" }, /* 291 */
- { 5, 0, printargs, "SYS_292" }, /* 292 */
- { 5, 0, printargs, "SYS_293" }, /* 293 */
- { 5, 0, printargs, "SYS_294" }, /* 294 */
- { 5, 0, printargs, "SYS_295" }, /* 295 */
- { 5, 0, printargs, "SYS_296" }, /* 296 */
- { 5, 0, printargs, "SYS_297" }, /* 297 */
- { 5, 0, printargs, "SYS_298" }, /* 298 */
- { 5, 0, printargs, "SYS_299" }, /* 299 */ { 5, 0, printargs, "SYS_300" }, /* 300 */
+ { 3, 0, printargs, "ioprio_set" }, /* 273 */
+ { 2, 0, printargs, "ioprio_get" }, /* 274 */
+ { 0, TD, printargs, "inotify_init" }, /* 275 */
+ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 276 */
+ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 277 */
+ { 5, 0, printargs, "spu_run" }, /* 278 */
+ { 5, 0, printargs, "spu_create" }, /* 279 */
+ { 6, TD, sys_pselect6, "pselect6" }, /* 280 */
+ { 5, TD, sys_ppoll, "ppoll" }, /* 281 */
+ { 1, TP, sys_unshare, "unshare" }, /* 282 */
+ { 6, TD, printargs, "splice" }, /* 283 */
+ { 4, TD, printargs, "tee" }, /* 284 */
+ { 4, TD, printargs, "vmsplice" }, /* 285 */
+ { 4, TD|TF, sys_openat, "openat" }, /* 286 */
+ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 287 */
+ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 288 */
+ { 5, TD|TF, sys_fchownat, "fchownat" }, /* 289 */
+ { 3, TD|TF, sys_futimesat, "futimesat" }, /* 290 */
+ { 4, TD|TD, sys_newfstatat, "newfstatat" }, /* 291 */
+ { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 292 */
+ { 4, TD|TF, sys_renameat, "renameat" }, /* 293 */
+ { 5, TD|TF, sys_linkat, "linkat" }, /* 294 */
+ { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 295 */
+ { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 296 */
+ { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 297 */
+ { 3, TD|TF, sys_faccessat, "faccessat" }, /* 298 */
+ { 2, 0, printargs, "set_robust_list" }, /* 299 */
+ { 3, 0, printargs, "get_robust_list" }, /* 300 */
{ 5, 0, printargs, "SYS_301" }, /* 301 */
{ 5, 0, printargs, "SYS_302" }, /* 302 */
{ 5, 0, printargs, "SYS_303" }, /* 303 */
{ 5, TP, sys_waitid, "waitid" }, /* 281 */
{ 3, 0, printargs, "ioprio_set" }, /* 282 */
{ 2, 0, printargs, "ioprio_get" }, /* 283 */
- { 0, 0, printargs, "inotify_init" }, /* 284 */
- { 3, 0, printargs, "inotify_add_watch" }, /* 285 */
- { 2, 0, printargs, "inotify_rm_watch" }, /* 286 */
+ { 0, TD, printargs, "inotify_init" }, /* 284 */
+ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 285 */
+ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 286 */
+ { 4, 0, printargs, "migrate_pages" }, /* 287 */
+ { 4, TD|TF, sys_openat, "openat" }, /* 288 */
+ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 289 */
+ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 290 */
+ { 5, TD|TF, sys_fchownat, "fchownat" }, /* 291 */
+ { 3, TD|TF, sys_futimesat, "futimesat" }, /* 292 */
+ { 4, TD|TD, sys_newfstatat, "fstatat64" }, /* 293 */
+ { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 294 */
+ { 4, TD|TF, sys_renameat, "renameat" }, /* 295 */
+ { 5, TD|TF, sys_linkat, "linkat" }, /* 296 */
+ { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 297 */
+ { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 298 */
+ { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 299 */
+ { 3, TD|TF, sys_faccessat, "faccessat" }, /* 300 */
+ { 6, TD, sys_pselect6, "pselect6" }, /* 301 */
+ { 5, TD, sys_ppoll, "ppoll" }, /* 302 */
+ { 1, TP, sys_unshare, "unshare" }, /* 303 */
+ { 2, 0, printargs, "set_robust_list" }, /* 304 */
+ { 3, 0, printargs, "get_robust_list" }, /* 305 */
+ { 6, TD, printargs, "splice" }, /* 306 */
+ { 4, TD, printargs, "sync_file_range" }, /* 307 */
+ { 4, TD, printargs, "tee" }, /* 308 */
+ { 4, TD, printargs, "vmsplice" }, /* 309 */
- { 5, 0, printargs, "SYS_287" }, /* 287 */
- { 5, 0, printargs, "SYS_288" }, /* 288 */
- { 5, 0, printargs, "SYS_289" }, /* 289 */
- { 5, 0, printargs, "SYS_290" }, /* 290 */
- { 5, 0, printargs, "SYS_291" }, /* 291 */
- { 5, 0, printargs, "SYS_292" }, /* 292 */
- { 5, 0, printargs, "SYS_293" }, /* 293 */
- { 5, 0, printargs, "SYS_294" }, /* 294 */
- { 5, 0, printargs, "SYS_295" }, /* 295 */
- { 5, 0, printargs, "SYS_296" }, /* 296 */
- { 5, 0, printargs, "SYS_297" }, /* 297 */
- { 5, 0, printargs, "SYS_298" }, /* 298 */
- { 5, 0, printargs, "SYS_299" }, /* 299 */
- { 5, 0, printargs, "SYS_300" }, /* 300 */
- { 5, 0, printargs, "SYS_301" }, /* 301 */
- { 5, 0, printargs, "SYS_302" }, /* 302 */
- { 5, 0, printargs, "SYS_303" }, /* 303 */
- { 5, 0, printargs, "SYS_304" }, /* 304 */
- { 5, 0, printargs, "SYS_305" }, /* 305 */
- { 5, 0, printargs, "SYS_306" }, /* 306 */
- { 5, 0, printargs, "SYS_307" }, /* 307 */
- { 5, 0, printargs, "SYS_308" }, /* 308 */
- { 5, 0, printargs, "SYS_309" }, /* 309 */
{ 5, 0, printargs, "SYS_310" }, /* 310 */
{ 5, 0, printargs, "SYS_311" }, /* 311 */
{ 5, 0, printargs, "SYS_312" }, /* 312 */
{ 5, TP, sys_waitid, "waitid" }, /* 281 */
{ 3, 0, printargs, "ioprio_set" }, /* 282 */
{ 2, 0, printargs, "ioprio_get" }, /* 283 */
- { 0, 0, printargs, "inotify_init" }, /* 284 */
- { 3, 0, printargs, "inotify_add_watch" }, /* 285 */
- { 2, 0, printargs, "inotify_rm_watch" }, /* 286 */
+ { 0, TD, printargs, "inotify_init" }, /* 284 */
+ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 285 */
+ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 286 */
+ { 4, 0, printargs, "migrate_pages" }, /* 287 */
+ { 4, TD|TF, sys_openat, "openat" }, /* 288 */
+ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 289 */
+ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 290 */
+ { 5, TD|TF, sys_fchownat, "fchownat" }, /* 291 */
+ { 3, TD|TF, sys_futimesat, "futimesat" }, /* 292 */
+ { 4, TD|TD, sys_newfstatat, "newfstatat" }, /* 293 */
+ { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 294 */
+ { 4, TD|TF, sys_renameat, "renameat" }, /* 295 */
+ { 5, TD|TF, sys_linkat, "linkat" }, /* 296 */
+ { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 297 */
+ { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 298 */
+ { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 299 */
+ { 3, TD|TF, sys_faccessat, "faccessat" }, /* 300 */
+ { 6, TD, sys_pselect6, "pselect6" }, /* 301 */
+ { 5, TD, sys_ppoll, "ppoll" }, /* 302 */
+ { 1, TP, sys_unshare, "unshare" }, /* 303 */
+ { 2, 0, printargs, "set_robust_list" }, /* 304 */
+ { 3, 0, printargs, "get_robust_list" }, /* 305 */
+ { 6, TD, printargs, "splice" }, /* 306 */
+ { 4, TD, printargs, "sync_file_range" }, /* 307 */
+ { 4, TD, printargs, "tee" }, /* 308 */
+ { 4, TD, printargs, "vmsplice" }, /* 309 */
- { 5, 0, printargs, "SYS_287" }, /* 287 */
- { 5, 0, printargs, "SYS_288" }, /* 288 */
- { 5, 0, printargs, "SYS_289" }, /* 289 */
- { 5, 0, printargs, "SYS_290" }, /* 290 */
- { 5, 0, printargs, "SYS_291" }, /* 291 */
- { 5, 0, printargs, "SYS_292" }, /* 292 */
- { 5, 0, printargs, "SYS_293" }, /* 293 */
- { 5, 0, printargs, "SYS_294" }, /* 294 */
- { 5, 0, printargs, "SYS_295" }, /* 295 */
- { 5, 0, printargs, "SYS_296" }, /* 296 */
- { 5, 0, printargs, "SYS_297" }, /* 297 */
- { 5, 0, printargs, "SYS_298" }, /* 298 */
- { 5, 0, printargs, "SYS_299" }, /* 299 */
- { 5, 0, printargs, "SYS_300" }, /* 300 */
- { 5, 0, printargs, "SYS_301" }, /* 301 */
- { 5, 0, printargs, "SYS_302" }, /* 302 */
- { 5, 0, printargs, "SYS_303" }, /* 303 */
- { 5, 0, printargs, "SYS_304" }, /* 304 */
- { 5, 0, printargs, "SYS_305" }, /* 305 */
- { 5, 0, printargs, "SYS_306" }, /* 306 */
- { 5, 0, printargs, "SYS_307" }, /* 307 */
- { 5, 0, printargs, "SYS_308" }, /* 308 */
- { 5, 0, printargs, "SYS_309" }, /* 309 */
{ 5, 0, printargs, "SYS_310" }, /* 310 */
{ 5, 0, printargs, "SYS_311" }, /* 311 */
{ 5, 0, printargs, "SYS_312" }, /* 312 */
- { 01, 0, sys_restart_syscall,"restart_syscall" },/* 0 */
+ { 0, 0, sys_restart_syscall, "restart_syscall" },/* 0 */
{ 1, TP, sys_exit, "exit" }, /* 1 */
{ 0, TP, sys_fork, "fork" }, /* 2 */
{ 3, TD, sys_read, "read" }, /* 3 */
{ 1, 0, sys_timer_delete,"timer_delete" }, /* 265 */
{ 3, 0, sys_timer_create,"timer_create" }, /* 266 */
{ 5, 0, printargs, "SYS_267" }, /* 267 */
- { 5, 0, printargs, "SYS_268" }, /* 268 */
- { 5, 0, printargs, "SYS_269" }, /* 269 */
- { 5, 0, printargs, "SYS_270" }, /* 270 */
- { 5, 0, printargs, "SYS_271" }, /* 271 */
- { 5, 0, printargs, "SYS_272" }, /* 272 */
- { 5, 0, printargs, "SYS_273" }, /* 273 */
- { 5, 0, printargs, "SYS_274" }, /* 274 */
- { 5, 0, printargs, "SYS_275" }, /* 275 */
- { 5, 0, printargs, "SYS_276" }, /* 276 */
- { 5, 0, printargs, "SYS_277" }, /* 277 */
- { 5, 0, printargs, "SYS_278" }, /* 278 */
- { 5, 0, printargs, "SYS_279" }, /* 279 */
- { 5, 0, printargs, "SYS_280" }, /* 280 */
- { 5, 0, printargs, "SYS_281" }, /* 281 */
- { 5, 0, printargs, "SYS_282" }, /* 282 */
- { 5, 0, printargs, "SYS_283" }, /* 283 */
- { 5, 0, printargs, "SYS_284" }, /* 284 */
- { 5, 0, printargs, "SYS_285" }, /* 285 */
- { 5, 0, printargs, "SYS_286" }, /* 286 */
- { 5, 0, printargs, "SYS_287" }, /* 287 */
- { 5, 0, printargs, "SYS_288" }, /* 288 */
- { 5, 0, printargs, "SYS_289" }, /* 289 */
- { 5, 0, printargs, "SYS_290" }, /* 290 */
- { 5, 0, printargs, "SYS_291" }, /* 291 */
- { 5, 0, printargs, "SYS_292" }, /* 292 */
- { 5, 0, printargs, "SYS_293" }, /* 293 */
- { 5, 0, printargs, "SYS_294" }, /* 294 */
- { 5, 0, printargs, "SYS_295" }, /* 295 */
- { 5, 0, printargs, "SYS_296" }, /* 296 */
- { 5, 0, printargs, "SYS_297" }, /* 297 */
- { 5, 0, printargs, "SYS_298" }, /* 298 */
- { 5, 0, printargs, "SYS_299" }, /* 299 */
- { 5, 0, printargs, "SYS_300" }, /* 300 */
- { 5, 0, printargs, "SYS_301" }, /* 301 */
+ { 2, 0, sys_io_setup, "io_setup" }, /* 268 */
+ { 1, 0, sys_io_destroy, "io_destroy" }, /* 269 */
+ { 3, 0, sys_io_submit, "io_submit" }, /* 270 */
+ { 3, 0, sys_io_cancel, "io_cancel" }, /* 271 */
+ { 5, 0, sys_io_getevents, "io_getevents" }, /* 272 */
+ { 4, 0, sys_mq_open, "mq_open" }, /* 273 */
+ { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 274 */
+ { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 275 */
+ { 5, 0, sys_mq_timedreceive, "mq_timedreceive" }, /* 276 */
+ { 2, 0, sys_mq_notify, "mq_notify" }, /* 277 */
+ { 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 278 */
+ { 5, TP, sys_waitid, "waitid" }, /* 279 */
+ { 4, TD, printargs, "tee" }, /* 280 */
+ { 5, 0, printargs, "add_key" }, /* 281 */
+ { 4, 0, printargs, "request_key" }, /* 282 */
+ { 5, 0, printargs, "keyctl" }, /* 283 */
+ { 4, TD|TF, sys_openat, "openat" }, /* 284 */
+ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 285 */
+ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 286 */
+ { 5, TD|TF, sys_fchownat, "fchownat" }, /* 287 */
+ { 3, TD|TF, sys_futimesat, "futimesat" }, /* 288 */
+ { 4, TD|TD, sys_newfstatat, "fstatat64" }, /* 289 */
+ { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 290 */
+ { 4, TD|TF, sys_renameat, "renameat" }, /* 291 */
+ { 5, TD|TF, sys_linkat, "linkat" }, /* 292 */
+ { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 293 */
+ { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 294 */
+ { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 295 */
+ { 3, TD|TF, sys_faccessat, "faccessat" }, /* 296 */
+ { 6, TD, sys_pselect6, "pselect6" }, /* 297 */
+ { 5, TD, sys_ppoll, "ppoll" }, /* 298 */
+ { 1, TP, sys_unshare, "unshare" }, /* 299 */
+ { 2, 0, printargs, "set_robust_list" }, /* 300 */
+ { 3, 0, printargs, "get_robust_list" }, /* 301 */
{ 5, 0, printargs, "SYS_302" }, /* 302 */
{ 5, 0, printargs, "SYS_303" }, /* 303 */
{ 5, 0, printargs, "SYS_304" }, /* 304 */
{ 1, 0, sys_timer_delete,"timer_delete" }, /* 265 */
{ 3, 0, sys_timer_create,"timer_create" }, /* 266 */
{ 5, 0, printargs, "SYS_267" }, /* 267 */
- { 5, 0, printargs, "SYS_268" }, /* 268 */
- { 5, 0, printargs, "SYS_269" }, /* 269 */
- { 5, 0, printargs, "SYS_270" }, /* 270 */
- { 5, 0, printargs, "SYS_271" }, /* 271 */
- { 5, 0, printargs, "SYS_272" }, /* 272 */
- { 5, 0, printargs, "SYS_273" }, /* 273 */
- { 5, 0, printargs, "SYS_274" }, /* 274 */
- { 5, 0, printargs, "SYS_275" }, /* 275 */
- { 5, 0, printargs, "SYS_276" }, /* 276 */
- { 5, 0, printargs, "SYS_277" }, /* 277 */
- { 5, 0, printargs, "SYS_278" }, /* 278 */
- { 5, 0, printargs, "SYS_279" }, /* 279 */
- { 5, 0, printargs, "SYS_280" }, /* 280 */
- { 5, 0, printargs, "SYS_281" }, /* 281 */
- { 5, 0, printargs, "SYS_282" }, /* 282 */
- { 5, 0, printargs, "SYS_283" }, /* 283 */
- { 5, 0, printargs, "SYS_284" }, /* 284 */
- { 5, 0, printargs, "SYS_285" }, /* 285 */
- { 5, 0, printargs, "SYS_286" }, /* 286 */
- { 5, 0, printargs, "SYS_287" }, /* 287 */
- { 5, 0, printargs, "SYS_288" }, /* 288 */
- { 5, 0, printargs, "SYS_289" }, /* 289 */
- { 5, 0, printargs, "SYS_290" }, /* 290 */
- { 5, 0, printargs, "SYS_291" }, /* 291 */
- { 5, 0, printargs, "SYS_292" }, /* 292 */
- { 5, 0, printargs, "SYS_293" }, /* 293 */
- { 5, 0, printargs, "SYS_294" }, /* 294 */
- { 5, 0, printargs, "SYS_295" }, /* 295 */
- { 5, 0, printargs, "SYS_296" }, /* 296 */
- { 5, 0, printargs, "SYS_297" }, /* 297 */
- { 5, 0, printargs, "SYS_298" }, /* 298 */
- { 5, 0, printargs, "SYS_299" }, /* 299 */
- { 5, 0, printargs, "SYS_300" }, /* 300 */
- { 5, 0, printargs, "SYS_301" }, /* 301 */
+ { 2, 0, sys_io_setup, "io_setup" }, /* 268 */
+ { 1, 0, sys_io_destroy, "io_destroy" }, /* 269 */
+ { 3, 0, sys_io_submit, "io_submit" }, /* 270 */
+ { 3, 0, sys_io_cancel, "io_cancel" }, /* 271 */
+ { 5, 0, sys_io_getevents, "io_getevents" }, /* 272 */
+ { 4, 0, sys_mq_open, "mq_open" }, /* 273 */
+ { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 274 */
+ { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 275 */
+ { 5, 0, sys_mq_timedreceive, "mq_timedreceive" }, /* 276 */
+ { 2, 0, sys_mq_notify, "mq_notify" }, /* 277 */
+ { 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 278 */
+ { 5, TP, sys_waitid, "waitid" }, /* 279 */
+ { 4, TD, printargs, "tee" }, /* 280 */
+ { 5, 0, printargs, "add_key" }, /* 281 */
+ { 4, 0, printargs, "request_key" }, /* 282 */
+ { 5, 0, printargs, "keyctl" }, /* 283 */
+ { 4, TD|TF, sys_openat, "openat" }, /* 284 */
+ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 285 */
+ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 286 */
+ { 5, TD|TF, sys_fchownat, "fchownat" }, /* 287 */
+ { 3, TD|TF, sys_futimesat, "futimesat" }, /* 288 */
+ { 4, TD|TD, sys_newfstatat, "fstatat64" }, /* 289 */
+ { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 290 */
+ { 4, TD|TF, sys_renameat, "renameat" }, /* 291 */
+ { 5, TD|TF, sys_linkat, "linkat" }, /* 292 */
+ { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 293 */
+ { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 294 */
+ { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 295 */
+ { 3, TD|TF, sys_faccessat, "faccessat" }, /* 296 */
+ { 6, TD, sys_pselect6, "pselect6" }, /* 297 */
+ { 5, TD, sys_ppoll, "ppoll" }, /* 298 */
+ { 1, TP, sys_unshare, "unshare" }, /* 299 */
+ { 2, 0, printargs, "set_robust_list" }, /* 300 */
+ { 3, 0, printargs, "get_robust_list" }, /* 301 */
{ 5, 0, printargs, "SYS_302" }, /* 302 */
{ 5, 0, printargs, "SYS_303" }, /* 303 */
{ 5, 0, printargs, "SYS_304" }, /* 304 */
int sys_send(), sys_recv(), sys_sendto(), sys_recvfrom();
int sys_shutdown(), sys_setsockopt(), sys_getsockopt();
+/* *at syscalls */
+int sys_fchmodat();
+int sys_newfstatat();
+int sys_unlinkat();
+int sys_fchownat();
+int sys_openat();
+int sys_renameat();
+int sys_symlinkat();
+int sys_readlinkat();
+int sys_linkat();
+int sys_faccessat();
+int sys_mkdirat();
+int sys_mknodat();
+int sys_futimesat();
+
/* new ones */
int sys_query_module();
int sys_poll();
int sys_mincore();
+int sys_inotify_add_watch();
+int sys_inotify_rm_watch();
+int sys_pselect6();
+int sys_ppoll();
+int sys_unshare();
/* architecture-specific calls */
#ifdef ALPHA
{ 5, 0, printargs, "sys_kexec_load" }, /* 283 */
{ 5, TP, sys_waitid, "waitid", SYS_waitid }, /* 284 */
{ 5, 0, printargs, "SYS_285" }, /* 285 */
- { 5, 0, printargs, "SYS_286" }, /* 286 */
- { 5, 0, printargs, "SYS_287" }, /* 287 */
- { 5, 0, printargs, "SYS_288" }, /* 288 */
- { 5, 0, printargs, "SYS_289" }, /* 289 */
- { 5, 0, printargs, "SYS_290" }, /* 290 */
- { 5, 0, printargs, "SYS_291" }, /* 291 */
- { 5, 0, printargs, "SYS_292" }, /* 292 */
- { 5, 0, printargs, "SYS_293" }, /* 293 */
- { 5, 0, printargs, "SYS_294" }, /* 294 */
- { 5, 0, printargs, "SYS_295" }, /* 295 */
- { 5, 0, printargs, "SYS_296" }, /* 296 */
- { 5, 0, printargs, "SYS_297" }, /* 297 */
- { 5, 0, printargs, "SYS_298" }, /* 298 */
- { 5, 0, printargs, "SYS_299" }, /* 299 */
- { 5, 0, printargs, "SYS_300" }, /* 300 */
- { 5, 0, printargs, "SYS_301" }, /* 301 */
- { 5, 0, printargs, "SYS_302" }, /* 302 */
- { 5, 0, printargs, "SYS_303" }, /* 303 */
- { 5, 0, printargs, "SYS_304" }, /* 304 */
- { 5, 0, printargs, "SYS_305" }, /* 305 */
- { 5, 0, printargs, "SYS_306" }, /* 306 */
- { 5, 0, printargs, "SYS_307" }, /* 307 */
- { 5, 0, printargs, "SYS_308" }, /* 308 */
- { 5, 0, printargs, "SYS_309" }, /* 309 */
- { 5, 0, printargs, "SYS_310" }, /* 310 */
- { 5, 0, printargs, "SYS_311" }, /* 311 */
- { 5, 0, printargs, "SYS_312" }, /* 312 */
- { 5, 0, printargs, "SYS_313" }, /* 313 */
- { 5, 0, printargs, "SYS_314" }, /* 314 */
- { 5, 0, printargs, "SYS_315" }, /* 315 */
- { 5, 0, printargs, "SYS_316" }, /* 316 */
+ { 5, 0, printargs, "add_key" }, /* 286 */
+ { 4, 0, printargs, "request_key" }, /* 287 */
+ { 5, 0, printargs, "keyctl" }, /* 288 */
+ { 3, 0, printargs, "ioprio_set" }, /* 289 */
+ { 2, 0, printargs, "ioprio_get" }, /* 290 */
+ { 0, TD, printargs, "inotify_init" }, /* 291 */
+ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 292 */
+ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 293 */
+ { 4, 0, printargs, "migrate_pages" }, /* 294 */
+ { 4, TD|TF, sys_openat, "openat" }, /* 295 */
+ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 296 */
+ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 297 */
+ { 5, TD|TF, sys_fchownat, "fchownat" }, /* 298 */
+ { 3, TD|TF, sys_futimesat, "futimesat" }, /* 299 */
+ { 4, TD|TD, sys_newfstatat, "fstatat64" }, /* 300 */
+ { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 301 */
+ { 4, TD|TF, sys_renameat, "renameat" }, /* 302 */
+ { 5, TD|TF, sys_linkat, "linkat" }, /* 303 */
+ { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 304 */
+ { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 305 */
+ { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 306 */
+ { 3, TD|TF, sys_faccessat, "faccessat" }, /* 307 */
+ { 6, TD, sys_pselect6, "pselect6" }, /* 308 */
+ { 5, TD, sys_ppoll, "ppoll" }, /* 309 */
+ { 1, TP, sys_unshare, "unshare" }, /* 310 */
+ { 2, 0, printargs, "set_robust_list" }, /* 311 */
+ { 3, 0, printargs, "get_robust_list" }, /* 312 */
+ { 6, TD, printargs, "splice" }, /* 313 */
+ { 4, TD, printargs, "sync_file_range" }, /* 314 */
+ { 4, TD, printargs, "tee" }, /* 315 */
+ { 4, TD, printargs, "vmsplice" }, /* 316 */
{ 5, 0, printargs, "SYS_317" }, /* 317 */
{ 5, 0, printargs, "SYS_318" }, /* 318 */
{ 5, 0, printargs, "SYS_319" }, /* 319 */
{ 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 245 */
{ 5, 0, printargs, "kexec_load" }, /* 246 */
{ 5, TP, sys_waitid, "waitid" }, /* 247 */
- { 5, 0, printargs, "SYS_248" }, /* 248 */
- { 5, 0, printargs, "SYS_249" }, /* 249 */
- { 5, 0, printargs, "SYS_250" }, /* 250 */
- { 5, 0, printargs, "SYS_251" }, /* 251 */
- { 5, 0, printargs, "SYS_252" }, /* 252 */
- { 5, 0, printargs, "SYS_253" }, /* 253 */
+ { 5, 0, printargs, "add_key" }, /* 248 */
+ { 4, 0, printargs, "request_key" }, /* 249 */
+ { 5, 0, printargs, "keyctl" }, /* 250 */
+ { 3, 0, printargs, "ioprio_set" }, /* 251 */
+ { 2, 0, printargs, "ioprio_get" }, /* 252 */
+ { 0, TD, printargs, "inotify_init" }, /* 253 */
+ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 254 */
+ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 255 */
+ { 4, 0, printargs, "migrate_pages" }, /* 256 */
+ { 4, TD|TF, sys_openat, "openat" }, /* 257 */
+ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 258 */
+ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 259 */
+ { 5, TD|TF, sys_fchownat, "fchownat" }, /* 260 */
+ { 3, TD|TF, sys_futimesat, "futimesat" }, /* 261 */
+ { 4, TD|TD, sys_newfstatat, "newfstatat" }, /* 262 */
+ { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 263 */
+ { 4, TD|TF, sys_renameat, "renameat" }, /* 264 */
+ { 5, TD|TF, sys_linkat, "linkat" }, /* 265 */
+ { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 266 */
+ { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 267 */
+ { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 268 */
+ { 3, TD|TF, sys_faccessat, "faccessat" }, /* 269 */
+ { 6, TD, sys_pselect6, "pselect6" }, /* 270 */
+ { 5, TD, sys_ppoll, "ppoll" }, /* 271 */
+ { 1, TP, sys_unshare, "unshare" }, /* 272 */
+ { 2, 0, printargs, "set_robust_list" }, /* 273 */
+ { 3, 0, printargs, "get_robust_list" }, /* 274 */
+ { 6, TD, printargs, "splice" }, /* 275 */
+ { 4, TD, printargs, "sync_file_range" }, /* 276 */
+ { 4, TD, printargs, "tee" }, /* 277 */
+ { 4, TD, printargs, "vmsplice" }, /* 278 */
}
return 0;
}
+
+int
+sys_unshare(struct tcb *tcp)
+{
+ if (entering(tcp))
+ printflags(clone_flags, tcp->u_arg[0], "CLONE_???");
+ return 0;
+}
#endif
int
tprintf(signame(nr));
}
+void
+print_sigset(struct tcb *tcp, long addr, int rt)
+{
+ sigset_t ss;
+
+ if (!addr)
+ tprintf("NULL");
+ else if (copy_sigset(tcp, addr, &ss) < 0)
+ tprintf("%#lx", addr);
+ else
+ printsigmask(&ss, rt);
+}
+
#ifdef LINUX
#ifndef ILL_ILLOPC
return RVAL_HEX | RVAL_STR;
}
#else /* !ALPHA */
- sigset_t sigset;
-
if (entering(tcp)) {
#ifdef SVR4
if (tcp->u_arg[0] == 0)
#endif /* SVR4 */
printxval(sigprocmaskcmds, tcp->u_arg[0], "SIG_???");
tprintf(", ");
- if (!tcp->u_arg[1])
- tprintf("NULL, ");
- else if (copy_sigset(tcp, tcp->u_arg[1], &sigset) < 0)
- tprintf("%#lx, ", tcp->u_arg[1]);
- else {
- printsigmask(&sigset, 0);
- tprintf(", ");
- }
+ print_sigset(tcp, tcp->u_arg[1], 0);
+ tprintf(", ");
}
else {
if (!tcp->u_arg[2])
tprintf("NULL");
else if (syserror(tcp))
tprintf("%#lx", tcp->u_arg[2]);
- else if (copy_sigset(tcp, tcp->u_arg[2], &sigset) < 0)
- tprintf("[?]");
else
- printsigmask(&sigset, 0);
+ print_sigset(tcp, tcp->u_arg[2], 0);
}
#endif /* !ALPHA */
return 0;
{ 0, NULL },
};
-int
-sys_poll(tcp)
-struct tcb *tcp;
+static int
+decode_poll(struct tcb *tcp)
{
struct pollfd fds;
unsigned nfds;
start = tcp->u_arg[0];
end = start + size;
if (nfds == 0 || size / sizeof(fds) != nfds || end < start) {
- tprintf("%#lx, %d, %ld",
- tcp->u_arg[0], nfds, tcp->u_arg[2]);
+ tprintf("%#lx, %d, ",
+ tcp->u_arg[0], nfds);
return 0;
}
if (abbrev(tcp)) {
if (failed)
tprintf(" %#lx", start);
tprintf(", %d, ", nfds);
+ return 0;
+}
+
+int
+sys_poll(struct tcb *tcp)
+{
+ int rc = decode_poll(tcp);
+ if (exiting(tcp)) {
#ifdef INFTIM
- if (tcp->u_arg[2] == INFTIM)
- tprintf("INFTIM");
- else
+ if (tcp->u_arg[2] == INFTIM)
+ tprintf("INFTIM");
+ else
#endif
- tprintf("%ld", tcp->u_arg[2]);
- return 0;
+ tprintf("%ld", tcp->u_arg[2]);
+ }
+ return rc;
}
+#ifdef LINUX
+int
+sys_ppoll(struct tcb *tcp)
+{
+ int rc = decode_poll(tcp);
+ if (exiting(tcp)) {
+ struct timespec ts;
+ if (umove(tcp, tcp->u_arg[2], &ts) == 0)
+ tprintf("{%lu, %lu}, ", ts.tv_sec, ts.tv_nsec);
+ else
+ tprintf("{...}, ");
+ print_sigset(tcp, tcp->u_arg[3], 0);
+ tprintf(", %lu", tcp->u_arg[4]);
+ }
+ return rc;
+}
+#endif
#else /* !HAVE_SYS_POLL_H */
int