2004-04-16  Roland McGrath  <roland@redhat.com>

	* linux/syscall.h: Support new mq_* syscalls on Linux.
	* linux/syscallent.h: Likewise.
	* linux/dummy.h: Likewise.
	* ipc.c: Likewise.
	* time.c (printsigevent): Handle SIGEV_THREAD.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#120701.
diff --git a/linux/dummy.h b/linux/dummy.h
index 63e5aa8..281e24d 100644
--- a/linux/dummy.h
+++ b/linux/dummy.h
@@ -64,6 +64,7 @@
 #define sys_mlock		sys_munmap
 #define sys_munlock		sys_munmap
 #define sys_clock_getres	sys_clock_gettime
+#define sys_mq_unlink		sys_unlink
 
 /* printargs does the right thing */
 #define	sys_setup		printargs
diff --git a/linux/syscall.h b/linux/syscall.h
index c135f65..783d556 100644
--- a/linux/syscall.h
+++ b/linux/syscall.h
@@ -94,6 +94,8 @@
 int sys_timer_gettime(), sys_timer_settime(), sys_clock_settime();
 int sys_clock_gettime(), sys_clock_getres(), sys_clock_nanosleep();
 int sys_semtimedop(), sys_statfs64(), sys_fstatfs64(), sys_tgkill();
+int sys_mq_open(), sys_mq_timedsend(), sys_mq_timedreceive();
+int sys_mq_notify(), sys_mq_getsetattr();
 
 
 /* sys_socketcall subcalls */
diff --git a/linux/syscallent.h b/linux/syscallent.h
index 9b2250e..53b5dc8 100644
--- a/linux/syscallent.h
+++ b/linux/syscallent.h
@@ -323,12 +323,12 @@
 	{ 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 */
+	{ 4,	0,	sys_mq_open,		"mq_open"	}, /* 277 */
+	{ 1,	0,	sys_mq_unlink,		"mq_unlink"	}, /* 278 */
+	{ 5,	0,	sys_mq_timedsend,	"mq_timedsend"	}, /* 279 */
+	{ 5,	0,	sys_mq_timedreceive,	"mq_timedreceive" }, /* 280 */
+	{ 2,	0,	sys_mq_notify,		"mq_notify"	}, /* 281 */
+	{ 3,	0,	sys_mq_getsetattr,	"mq_getsetattr"	}, /* 282 */
 	{ 5,	0,	printargs,		"SYS_283"	}, /* 283 */
 	{ 5,	0,	printargs,		"SYS_284"	}, /* 284 */
 	{ 5,	0,	printargs,		"SYS_285"	}, /* 285 */
diff --git a/time.c b/time.c
index 12d00f2..eb02f4c 100644
--- a/time.c
+++ b/time.c
@@ -438,6 +438,9 @@
 			   present in the userlevel definition of the
 			   struct.  */
 			tprintf("{%d}", sev._sigev_un._pad[0]);
+		else if (sev.sigev_notify == SIGEV_THREAD)
+			tprintf("{%p, %p}", sev.sigev_notify_function,
+				sev.sigev_notify_attributes);
 		else
 			tprintf("{...}");
 		tprintf("}");