PERFORCE change 125147 for review

Poul-Henning Kamp phk at FreeBSD.org
Tue Aug 14 11:19:25 PDT 2007


http://perforce.freebsd.org/chv.cgi?CH=125147

Change 125147 by phk at phk_critter on 2007/08/14 18:19:05

	add three more syscalls:
		sys_thr_self
		sys_thr_set_name
		sys_rtprio_thread

Affected files ...

.. //depot/projects/valgrind/coregrind/m_syswrap/priv_syswrap-freebsd.h#3 edit
.. //depot/projects/valgrind/coregrind/m_syswrap/syswrap-freebsd.c#4 edit
.. //depot/projects/valgrind/include/vki-freebsd.h#2 edit

Differences ...

==== //depot/projects/valgrind/coregrind/m_syswrap/priv_syswrap-freebsd.h#3 (text+ko) ====

@@ -197,6 +197,9 @@
 DECL_TEMPLATE(freebsd, sys_statfs6);
 DECL_TEMPLATE(freebsd, sys_fstatfs6);
 DECL_TEMPLATE(freebsd, sys_fhstatfs6);
+DECL_TEMPLATE(freebsd, sys_thr_self);
+DECL_TEMPLATE(freebsd, sys_thr_set_name);
+DECL_TEMPLATE(freebsd, sys_rtprio_thread);
 DECL_TEMPLATE(freebsd, sys_fork);
 DECL_TEMPLATE(freebsd, sys_vfork);
 DECL_TEMPLATE(freebsd, sys_modfind);

==== //depot/projects/valgrind/coregrind/m_syswrap/syswrap-freebsd.c#4 (text+ko) ====

@@ -1724,6 +1724,47 @@
 #endif
 
 /* ---------------------------------------------------------------------
+   thr* wrappers
+   ------------------------------------------------------------------ */
+
+PRE(sys_thr_self)
+{
+   PRINT( "sys_thr_self ( %p )", ARG1 );
+   PRE_REG_READ1(long, "thr_self", long *, "id");
+   PRE_MEM_WRITE( "thr_self()", ARG1, sizeof(long));
+}
+POST(sys_thr_self)
+{
+   POST_MEM_WRITE( ARG1, sizeof(long));
+}
+
+PRE(sys_thr_set_name)
+{
+   PRINT( "sys_thr_set_name ( %d, %p )", ARG1, ARG2 );
+   PRE_REG_READ2(long, "thr_set_name", long, "id", const char *, "name");
+   PRE_MEM_RASCIIZ( "sys_thr_set_name(threadname)", ARG2);
+}
+
+PRE(sys_rtprio_thread)
+{
+   PRINT( "sys_rtprio_thread ( %d, %d, %p )", ARG1, ARG2, ARG3 );
+   PRE_REG_READ3(long, "rtprio_thread",
+      int, "function", __vki_lwpid_t, "lwpid", struct vki_rtprio *, "rtp");
+   if (ARG1 == VKI_RTP_SET) {
+      PRE_MEM_READ( "rtprio_thread(set)", ARG3, sizeof(struct vki_rtprio));
+   } else if (ARG1 == VKI_RTP_LOOKUP) {
+      PRE_MEM_WRITE( "rtprio_thread(lookup)", ARG3, sizeof(struct vki_rtprio));
+   } else {
+	/* PHK ?? */
+   }
+}
+POST(sys_rtprio_thread)
+{
+   if (ARG1 == VKI_RTP_LOOKUP && RES == 0)
+      POST_MEM_WRITE( ARG3, sizeof(struct vki_rtprio));
+}
+
+/* ---------------------------------------------------------------------
    sig* wrappers
    ------------------------------------------------------------------ */
 
@@ -2628,7 +2669,7 @@
    // thr_create							   430
    // thr_exit								   431
 
-   // thr_self								   432
+   BSDXY(__NR_thr_self, 		sys_thr_self),			// 432
    // thr_kill								   433
    // _umtx_lock							   434
    // _umtx_unlock							   435
@@ -2668,9 +2709,9 @@
    // kmq_unlink							   462
    // abort2								   463
 
-   // thr_set_name							   464
+   BSDX_(__NR_thr_set_name,		sys_thr_set_name),		// 464
    // aio_fsync								   465
-   // rtprio_thread							   466
+   BSDXY(__NR_rtprio_thread,		sys_rtprio_thread),		// 466
    // nosys								   467
 
    // nosys								   468

==== //depot/projects/valgrind/include/vki-freebsd.h#2 (text+ko) ====

@@ -1658,6 +1658,18 @@
 	vki_modspecific_t data;
 };
 
+//----------------------------------------------------------------------
+// From sys/rtprio.h
+//----------------------------------------------------------------------
+
+struct vki_rtprio {
+	vki_uint16_t	type;
+	vki_uint16_t	prio;
+};
+
+#define VKI_RTP_LOOKUP	0
+#define VKI_RTP_SET	1
+
 /*--------------------------------------------------------------------*/
 /*--- end                                                          ---*/
 /*--------------------------------------------------------------------*/


More information about the p4-projects mailing list