diff -u linux/syscall.h linux/syscall.h
--- linux/syscall.h	24 Jul 2007 03:07:41 -0000
+++ linux/syscall.h	24 Jul 2007 03:26:57 -0000
@@ -102,7 +102,7 @@
 int sys_mbind(), sys_get_mempolicy(), sys_set_mempolicy(), sys_move_pages();
 int sys_arch_prctl();
 int sys_io_setup(), sys_io_submit(), sys_io_cancel(), sys_io_getevents(), sys_io_destroy();
-int sys_utimensat(), sys_epoll_pwait();
+int sys_utimensat(), sys_epoll_pwait(), sys_signalfd();
 
 /* sys_socketcall subcalls */
 
diff -u linux/syscallent.h linux/syscallent.h
--- linux/syscallent.h	24 Jul 2007 03:07:41 -0000
+++ linux/syscallent.h	24 Jul 2007 03:26:57 -0000
@@ -351,7 +351,7 @@
 	{ 5,	0,	printargs,		"SYS_318"	}, /* 318 */
 	{ 5,	TD,	sys_epoll_pwait,	"epoll_pwait"	}, /* 319 */
 	{ 4,	TD|TF,	sys_utimensat,		"utimensat"	}, /* 320 */
-	{ 5,	0,	printargs,		"SYS_321"	}, /* 321 */
+	{ 3,	TD|TS,	sys_signalfd,		"signalfd"	}, /* 321 */
 	{ 5,	0,	printargs,		"SYS_322"	}, /* 322 */
 	{ 5,	0,	printargs,		"SYS_323"	}, /* 323 */
 	{ 5,	0,	printargs,		"SYS_324"	}, /* 324 */
diff -u linux/x86_64/syscallent.h linux/x86_64/syscallent.h
--- linux/x86_64/syscallent.h	24 Jul 2007 03:07:41 -0000
+++ linux/x86_64/syscallent.h	24 Jul 2007 03:26:57 -0000
@@ -282,0 +283 @@
+	{ 3,	TD|TS,	sys_signalfd,		"signalfd"	}, /* 282 */
--- signal.c	5 Jul 2007 20:16:42 -0000	1.60
+++ signal.c	24 Jul 2007 03:26:57 -0000
@@ -1972,4 +1972,15 @@
 	return 0;
 }
 
+int
+sys_signalfd(tcp)
+struct tcb *tcp;
+{
+	if (entering(tcp)) {
+		tprintf("%ld, ", tcp->u_arg[0]);
+		print_sigset(tcp, tcp->u_arg[1], 1);
+		tprintf("%lu", tcp->u_arg[2]);
+	}
+	return 0;
+}
 #endif /* LINUX */
