|
From: <sv...@va...> - 2005-08-05 07:32:06
|
Author: tom
Date: 2005-08-05 08:32:04 +0100 (Fri, 05 Aug 2005)
New Revision: 4329
Log:
Implement the waitid system call. Fixes bug #110202.
Modified:
trunk/coregrind/m_syswrap/priv_syswrap-generic.h
trunk/coregrind/m_syswrap/syswrap-amd64-linux.c
trunk/coregrind/m_syswrap/syswrap-generic.c
trunk/coregrind/m_syswrap/syswrap-x86-linux.c
Modified: trunk/coregrind/m_syswrap/priv_syswrap-generic.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/priv_syswrap-generic.h 2005-08-05 07:22:00 =
UTC (rev 4328)
+++ trunk/coregrind/m_syswrap/priv_syswrap-generic.h 2005-08-05 07:32:04 =
UTC (rev 4329)
@@ -146,6 +146,7 @@
DECL_TEMPLATE(generic, sys_gettimeofday);
DECL_TEMPLATE(generic, sys_madvise);
DECL_TEMPLATE(generic, sys_sigpending);
+DECL_TEMPLATE(generic, sys_waitid);
=20
// These ones aren't POSIX, but are in some standard and look reasonably
// generic, and are the same for all architectures under Linux.
Modified: trunk/coregrind/m_syswrap/syswrap-amd64-linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/syswrap-amd64-linux.c 2005-08-05 07:22:00 U=
TC (rev 4328)
+++ trunk/coregrind/m_syswrap/syswrap-amd64-linux.c 2005-08-05 07:32:04 U=
TC (rev 4329)
@@ -1473,7 +1473,7 @@
GENX_(__NR_mq_notify, sys_mq_notify), // 244=20
GENXY(__NR_mq_getsetattr, sys_mq_getsetattr), // 245=20
// (__NR_kexec_load, sys_ni_syscall), // 246=20
- // (__NR_waitid, sys_waitid), // 247=20
+ GENXY(__NR_waitid, sys_waitid), // 247=20
};
=20
const UInt ML_(syscall_table_size) =3D=20
Modified: trunk/coregrind/m_syswrap/syswrap-generic.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/syswrap-generic.c 2005-08-05 07:22:00 UTC (=
rev 4328)
+++ trunk/coregrind/m_syswrap/syswrap-generic.c 2005-08-05 07:32:04 UTC (=
rev 4329)
@@ -5735,6 +5735,24 @@
POST_MEM_WRITE( ARG4, sizeof(struct vki_timespec) );
}
=20
+PRE(sys_waitid)
+{
+ *flags |=3D SfMayBlock;
+ PRINT("sys_waitid( %d, %d, %p, %d, %p )", ARG1,ARG2,ARG3,ARG4,ARG5);
+ PRE_REG_READ5(int32_t, "sys_waitid",
+ int, which, vki_pid_t, pid, struct vki_siginfo *, infop=
,
+ int, options, struct vki_rusage *, ru);
+ PRE_MEM_WRITE( "waitid(infop)", ARG3, sizeof(struct vki_siginfo) );
+ if (ARG5 !=3D 0)
+ PRE_MEM_WRITE( "waitid(ru)", ARG5, sizeof(struct vki_rusage) );
+}
+POST(sys_waitid)
+{
+ POST_MEM_WRITE( ARG3, sizeof(struct vki_siginfo) );
+ if (ARG5 !=3D 0)
+ POST_MEM_WRITE( ARG5, sizeof(struct vki_rusage) );
+}
+
#undef PRE
#undef POST
=20
Modified: trunk/coregrind/m_syswrap/syswrap-x86-linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/syswrap-x86-linux.c 2005-08-05 07:22:00 UTC=
(rev 4328)
+++ trunk/coregrind/m_syswrap/syswrap-x86-linux.c 2005-08-05 07:32:04 UTC=
(rev 4329)
@@ -2277,7 +2277,7 @@
GENX_(__NR_mq_notify, sys_mq_notify), // (mq_open+4)
GENXY(__NR_mq_getsetattr, sys_mq_getsetattr), // (mq_open+5)
GENX_(__NR_sys_kexec_load, sys_ni_syscall), // 283
-// GENXY(__NR_waitid, sys_waitid), // 284
+ GENXY(__NR_waitid, sys_waitid), // 284
=20
GENX_(285, sys_ni_syscall), // 285
// LINX_(__NR_add_key, sys_add_key), // 286
|