From owner-p4-projects@FreeBSD.ORG Thu Sep 16 23:03:50 2010 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id AAC2E1065674; Thu, 16 Sep 2010 23:03:50 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5541C106566C for ; Thu, 16 Sep 2010 23:03:50 +0000 (UTC) (envelope-from stas@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id 3A85D8FC17 for ; Thu, 16 Sep 2010 23:03:50 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id o8GN3or0038479 for ; Thu, 16 Sep 2010 23:03:50 GMT (envelope-from stas@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id o8GN3nfT038476 for perforce@freebsd.org; Thu, 16 Sep 2010 23:03:50 GMT (envelope-from stas@freebsd.org) Date: Thu, 16 Sep 2010 23:03:50 GMT Message-Id: <201009162303.o8GN3nfT038476@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to stas@freebsd.org using -f From: Stanislav Sedov To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 183879 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Sep 2010 23:03:50 -0000 http://p4web.freebsd.org/@@183879?ac=10 Change 183879 by stas@stas_orion on 2010/09/16 23:03:06 - Add support for syscall 510 (new semctl). Affected files ... .. //depot/projects/valgrind/coregrind/m_syswrap/priv_syswrap-freebsd.h#21 edit .. //depot/projects/valgrind/coregrind/m_syswrap/syswrap-freebsd.c#47 edit .. //depot/projects/valgrind/include/vki/vki-scnums-freebsd.h#8 edit Differences ... ==== //depot/projects/valgrind/coregrind/m_syswrap/priv_syswrap-freebsd.h#21 (text+ko) ==== @@ -109,6 +109,7 @@ DECL_TEMPLATE(freebsd, sys_undelete); DECL_TEMPLATE(freebsd, sys_futimes); DECL_TEMPLATE(freebsd, sys_nfs_fhopen); +DECL_TEMPLATE(freebsd, sys___semctl7); DECL_TEMPLATE(freebsd, sys___semctl); DECL_TEMPLATE(freebsd, sys_semget); DECL_TEMPLATE(freebsd, sys_semop); ==== //depot/projects/valgrind/coregrind/m_syswrap/syswrap-freebsd.c#47 (text+ko) ==== @@ -2666,6 +2666,65 @@ ML_(generic_PRE_sys_semop)(tid, ARG1,ARG2,ARG3); } +struct ipc_perm7 { + unsigned short cuid; /* creator user id */ + unsigned short cgid; /* creator group id */ + unsigned short uid; /* user id */ + unsigned short gid; /* group id */ + unsigned short mode; /* r/w permission */ + unsigned short seq; /* sequence # (to generate unique ipcid) */ + vki_key_t key; /* user specified msg/sem/shm key */ +}; + +struct semid_ds7 { + struct ipc_perm7 sem_perm; /* operation permission struct */ + struct sem *sem_base; /* pointer to first semaphore in set */ + unsigned short sem_nsems; /* number of sems in set */ + vki_time_t sem_otime; /* last operation time */ + long sem_pad1; /* SVABI/386 says I need this here */ + vki_time_t sem_ctime; /* last change time */ + /* Times measured in secs since */ + /* 00:00:00 GMT, Jan. 1, 1970 */ + long sem_pad2; /* SVABI/386 says I need this here */ + long sem_pad3[4]; /* SVABI/386 says I need this here */ +}; + +PRE(sys___semctl7) +{ + switch (ARG3) { + case VKI_IPC_INFO: + case VKI_SEM_INFO: + PRINT("sys_semctl ( %ld, %ld, %ld, %#lx )",ARG1,ARG2,ARG3,ARG4); + PRE_REG_READ4(long, "semctl", + int, semid, int, semnum, int, cmd, struct seminfo *, arg); + break; + case VKI_IPC_STAT: + case VKI_SEM_STAT: + case VKI_IPC_SET: + PRINT("sys_semctl ( %ld, %ld, %ld, %#lx )",ARG1,ARG2,ARG3,ARG4); + PRE_REG_READ4(long, "semctl", + int, semid, int, semnum, int, cmd, struct semid_ds7 *, arg); + break; + case VKI_GETALL: + case VKI_SETALL: + PRINT("sys_semctl ( %ld, %ld, %ld, %#lx )",ARG1,ARG2,ARG3,ARG4); + PRE_REG_READ4(long, "semctl", + int, semid, int, semnum, int, cmd, unsigned short *, arg); + break; + default: + PRINT("sys_semctl ( %ld, %ld, %ld )",ARG1,ARG2,ARG3); + PRE_REG_READ3(long, "semctl", + int, semid, int, semnum, int, cmd); + break; + } + ML_(generic_PRE_sys_semctl)(tid, ARG1,ARG2,ARG3,ARG4); +} + +POST(sys___semctl7) +{ + ML_(generic_POST_sys_semctl)(tid, RES,ARG1,ARG2,ARG3,ARG4); +} + PRE(sys___semctl) { switch (ARG3) { @@ -3493,7 +3552,7 @@ BSDX_(__NR_lkmnosys8, sys_lkmnosys8), // 218 // BSDXY(__NR_nfs_fhopen, sys_nfs_fhopen), // 219 - BSDXY(__NR___semctl, sys___semctl), // 220 + BSDXY(__NR___semctl7, sys___semctl7), // 220 BSDX_(__NR_semget, sys_semget), // 221 BSDX_(__NR_semop, sys_semop), // 222 // unimpl semconfig 223 @@ -3850,6 +3909,8 @@ // posix_openpt 504 + BSDXY(__NR___semctl, sys___semctl), // 510 + }; ==== //depot/projects/valgrind/include/vki/vki-scnums-freebsd.h#8 (text+ko) ==== @@ -186,7 +186,7 @@ #define __NR_lkmnosys7 217 #define __NR_lkmnosys8 218 #define __NR_nfs_fhopen 219 -#define __NR___semctl 220 +#define __NR___semctl7 220 #define __NR_semget 221 #define __NR_semop 222 #define __NR_msgctl 224 @@ -405,5 +405,6 @@ #define __NR_symlinkat 502 #define __NR_unlinkat 503 #define __NR_posix_openpt 504 +#define __NR___semctl 510 #endif /* __VKI_UNISTD_FREEBSD_H */