1From dcf30f8225829735e225aa76d1d03bdc372b1de1 Mon Sep 17 00:00:00 2001 2From: Matthew Macy <kmacy@freebsd.org> 3Date: Fri, 7 Nov 2014 22:00:41 -0800 4Subject: [PATCH] initial stab at compiling COMPAT_MACH 5 6(cherry picked from commit 4b74a6db7b2917232414ae57bd2f0cc0c8b443e9) 7Signed-off-by: Scott K <scott@ixsystems.com> 8--- 9 sys/compat/mach/Makefile | 27 +- 10 sys/compat/mach/init_sysent.c | 5 + 11 sys/compat/mach/mach_bootstrap.c | 17 +- 12 sys/compat/mach/mach_bootstrap.h | 2 +- 13 sys/compat/mach/mach_clock.c | 36 +- 14 sys/compat/mach/mach_clock.h | 2 +- 15 sys/compat/mach/mach_errno.c | 4 +- 16 sys/compat/mach/mach_errno.h | 2 +- 17 sys/compat/mach/mach_exception.c | 95 ++-- 18 sys/compat/mach/mach_exception.h | 6 +- 19 sys/compat/mach/mach_exec.c | 36 +- 20 sys/compat/mach/mach_exec.h | 22 +- 21 sys/compat/mach/mach_host.c | 25 +- 22 sys/compat/mach/mach_host.h | 2 +- 23 sys/compat/mach/mach_iokit.c | 111 +++-- 24 sys/compat/mach/mach_iokit.h | 2 +- 25 sys/compat/mach/mach_message.c | 176 ++++---- 26 sys/compat/mach/mach_message.h | 24 +- 27 sys/compat/mach/mach_misc.c | 74 ++-- 28 sys/compat/mach/mach_notify.c | 28 +- 29 sys/compat/mach/mach_notify.h | 8 +- 30 sys/compat/mach/mach_port.c | 124 +++--- 31 sys/compat/mach/mach_port.h | 18 +- 32 sys/compat/mach/mach_proto.h | 276 ++++++++++++ 33 sys/compat/mach/mach_semaphore.c | 61 ++- 34 sys/compat/mach/mach_semaphore.h | 5 +- 35 sys/compat/mach/mach_services.c | 1 - 36 sys/compat/mach/mach_services.h | 1 - 37 sys/compat/mach/mach_services_names.c | 1 - 38 sys/compat/mach/mach_syscall.h | 136 ++---- 39 sys/compat/mach/mach_syscallargs.h | 258 ----------- 40 sys/compat/mach/mach_syscalls.c | 281 ++++++------ 41 sys/compat/mach/mach_sysctl.c | 3 +- 42 sys/compat/mach/mach_sysctl.h | 2 +- 43 sys/compat/mach/mach_sysent.c | 407 ++++++----------- 44 sys/compat/mach/mach_task.c | 99 +++-- 45 sys/compat/mach/mach_task.h | 2 +- 46 sys/compat/mach/mach_thread.c | 61 ++- 47 sys/compat/mach/mach_thread.h | 10 +- 48 sys/compat/mach/mach_types.h | 8 +- 49 sys/compat/mach/mach_vm.c | 216 +++++---- 50 sys/compat/mach/mach_vm.h | 6 +- 51 sys/compat/mach/makemachservices.sh | 20 +- 52 sys/compat/mach/syscalls.c | 5 + 53 sys/compat/mach/syscalls.conf | 10 +- 54 sys/compat/mach/syscalls.master | 301 ++++++------- 55 sys/compat/mach/systrace_args.c | 804 ++++++++++++++++++++++++++++++++++ 56 sys/kern/kern_sig.c | 26 +- 57 sys/sys/signal.h | 15 + 58 49 files changed, 2223 insertions(+), 1638 deletions(-) 59 create mode 100644 sys/compat/mach/init_sysent.c 60 create mode 100644 sys/compat/mach/mach_proto.h 61 delete mode 100644 sys/compat/mach/mach_syscallargs.h 62 create mode 100644 sys/compat/mach/syscalls.c 63 create mode 100644 sys/compat/mach/systrace_args.c 64 65diff --git a/sys/compat/mach/Makefile b/sys/compat/mach/Makefile 66index 7cc43a8..bbc9ce0 100644 67--- a/sys/compat/mach/Makefile 68+++ b/sys/compat/mach/Makefile 69@@ -1,16 +1,17 @@ 70-# $NetBSD: Makefile,v 1.7 2005/12/11 12:20:20 christos Exp $ 71+# Makefile for syscall tables 72+# 73+# $FreeBSD$ 74 75-SYSCALL_DEP= syscalls.conf syscalls.master ../../kern/makesyscalls.sh 76-SYSCALL_OBJS= mach_sysent.c mach_syscalls.c mach_syscall.h mach_syscallargs.h 77-MACH_DEP= mach_services.master makemachservices.sh 78-MACH_OBJ= mach_services.c mach_services.h mach_services_names.c 79+all: 80+ @echo "make sysent only" 81 82-all: ${SYSCALL_OBJS} ${MACH_OBJ} 83+sysent: mach_sysent.c mach_syscall.h mach_proto.h mach_syscalls.c mach_systrace_args.c 84 85-.include <bsd.sys.mk> # for HOST_SH 86- 87-${SYSCALL_OBJS}: ${SYSCALL_DEP} 88- ${HOST_SH} ../../kern/makesyscalls.sh syscalls.conf syscalls.master 89- 90-${MACH_OBJ}: ${MACH_DEP} 91- ${HOSH_SH} ./makemachservices.sh 92+mach_sysent.c mach_syscall.h mach_proto.h mach_syscalls.c mach_systrace_args.c: \ 93+ ../../kern/makesyscalls.sh syscalls.master syscalls.conf 94+ -mv -f mach_sysent.c mach_sysent.c.bak 95+ -mv -f mach_syscall.h mach_syscall.h.bak 96+ -mv -f mach_proto.h mach_proto.h.bak 97+ -mv -f mach_syscalls.c mach_syscalls.c.bak 98+ -mv -f mach_systrace_args.c mach_systrace_args.c.bak 99+ sh ../../kern/makesyscalls.sh syscalls.master syscalls.conf 100diff --git a/sys/compat/mach/init_sysent.c b/sys/compat/mach/init_sysent.c 101new file mode 100644 102index 0000000..68c49ca 103--- /dev/null 104+++ b/sys/compat/mach/init_sysent.c 105@@ -0,0 +1,5 @@ 106+/* 107+ * System call switch table. 108+ * 109+ * DO NOT EDIT-- this file is automatically generated. 110+ * $FreeBSD$ 111diff --git a/sys/compat/mach/mach_bootstrap.c b/sys/compat/mach/mach_bootstrap.c 112index e40c488..5c21f7d 100644 113--- a/sys/compat/mach/mach_bootstrap.c 114+++ b/sys/compat/mach/mach_bootstrap.c 115@@ -1,5 +1,3 @@ 116-/* $NetBSD: mach_bootstrap.c,v 1.14 2008/04/28 20:23:44 martin Exp $ */ 117- 118 /*- 119 * Copyright (c) 2002-2003 The NetBSD Foundation, Inc. 120 * All rights reserved. 121@@ -30,14 +28,18 @@ 122 */ 123 124 #include <sys/cdefs.h> 125-__KERNEL_RCSID(0, "$NetBSD: mach_bootstrap.c,v 1.14 2008/04/28 20:23:44 martin Exp $"); 126+__FBSDID("$FreeBSD$"); 127 128-#include <sys/types.h> 129 #include <sys/param.h> 130+#include <sys/types.h> 131+#include <sys/kernel.h> 132+#include <sys/malloc.h> 133+ 134 #include <sys/systm.h> 135 #include <sys/signal.h> 136 #include <sys/proc.h> 137 138+ 139 #include <compat/mach/mach_types.h> 140 #include <compat/mach/mach_message.h> 141 #include <compat/mach/mach_port.h> 142@@ -45,12 +47,15 @@ __KERNEL_RCSID(0, "$NetBSD: mach_bootstrap.c,v 1.14 2008/04/28 20:23:44 martin E 143 #include <compat/mach/mach_errno.h> 144 #include <compat/mach/mach_services.h> 145 146+MALLOC_DEFINE(M_MACH, "mach", "mach compatibility subsystem"); 147+ 148+ 149 int 150 mach_bootstrap_look_up(struct mach_trap_args *args) 151 { 152 mach_bootstrap_look_up_request_t *req = args->smsg; 153 mach_bootstrap_look_up_reply_t *rep = args->rmsg; 154- struct lwp *l = args->l; 155+ struct thread *td = args->td; 156 size_t *msglen = args->rsize; 157 const char service_name[] = "lookup\021"; /* XXX Why */ 158 int service_name_len; 159@@ -65,7 +70,7 @@ mach_bootstrap_look_up(struct mach_trap_args *args) 160 return mach_msg_error(args, EINVAL); 161 *msglen = len; 162 163- mr = mach_right_get(NULL, l, MACH_PORT_TYPE_DEAD_NAME, 0); 164+ mr = mach_right_get(NULL, td, MACH_PORT_TYPE_DEAD_NAME, 0); 165 166 mach_set_header(rep, req, *msglen); 167 168diff --git a/sys/compat/mach/mach_bootstrap.h b/sys/compat/mach/mach_bootstrap.h 169index b798ace..536f576 100644 170--- a/sys/compat/mach/mach_bootstrap.h 171+++ b/sys/compat/mach/mach_bootstrap.h 172@@ -1,4 +1,4 @@ 173-/* $NetBSD: mach_bootstrap.h,v 1.5 2008/04/28 20:23:44 martin Exp $ */ 174+/* $FreeBSD$ */ 175 176 /*- 177 * Copyright (c) 2002 The NetBSD Foundation, Inc. 178diff --git a/sys/compat/mach/mach_clock.c b/sys/compat/mach/mach_clock.c 179index d802315..f3c9fef 100644 180--- a/sys/compat/mach/mach_clock.c 181+++ b/sys/compat/mach/mach_clock.c 182@@ -1,6 +1,7 @@ 183-/* $NetBSD: mach_clock.c,v 1.19 2008/04/28 20:23:44 martin Exp $ */ 184+/* $FreeBSD$ */ 185 186 /*- 187+ * Copyright (c) 2014 Matthew Macy <kmacy@freebsd.org> 188 * Copyright (c) 2002-2003 The NetBSD Foundation, Inc. 189 * All rights reserved. 190 * 191@@ -30,7 +31,7 @@ 192 */ 193 194 #include <sys/cdefs.h> 195-__KERNEL_RCSID(0, "$NetBSD: mach_clock.c,v 1.19 2008/04/28 20:23:44 martin Exp $"); 196+__FBSDID("$FreeBSD$"); 197 198 #include <sys/types.h> 199 #include <sys/param.h> 200@@ -45,10 +46,21 @@ __KERNEL_RCSID(0, "$NetBSD: mach_clock.c,v 1.19 2008/04/28 20:23:44 martin Exp $ 201 #include <compat/mach/mach_port.h> 202 #include <compat/mach/mach_clock.h> 203 #include <compat/mach/mach_services.h> 204-#include <compat/mach/mach_syscallargs.h> 205+#include <compat/mach/mach_proto.h> 206+ 207+#define timespecsub_netbsd(tsp, usp, vsp) \ 208+ do { \ 209+ (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \ 210+ (vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec; \ 211+ if ((vsp)->tv_nsec < 0) { \ 212+ (vsp)->tv_sec--; \ 213+ (vsp)->tv_nsec += 1000000000L; \ 214+ } \ 215+ } while (/* CONSTCOND */ 0) 216+ 217 218 int 219-mach_sys_clock_sleep_trap(struct lwp *l, const struct mach_sys_clock_sleep_trap_args *uap, register_t *retval) 220+sys_mach_clock_sleep_trap(struct thread *td, struct mach_clock_sleep_trap_args *uap) 221 { 222 /* { 223 syscallarg(mach_clock_port_t) clock_name; 224@@ -63,12 +75,12 @@ mach_sys_clock_sleep_trap(struct lwp *l, const struct mach_sys_clock_sleep_trap_ 225 int error; 226 int ticks; 227 228- mts.tv_sec = SCARG(uap, sleep_sec); 229- mts.tv_nsec = SCARG(uap, sleep_nsec); 230+ mts.tv_sec = uap->sleep_sec; 231+ mts.tv_nsec = uap->sleep_nsec; 232 233- if (SCARG(uap, sleep_type) == MACH_TIME_ABSOLUTE) { 234+ if (uap->sleep_type == MACH_TIME_ABSOLUTE) { 235 nanotime(&cts); 236- timespecsub(&mts, &cts, &tts); 237+ timespecsub_netbsd(&mts, &cts, &tts); 238 } else { 239 tts.tv_sec = mts.tv_sec; 240 tts.tv_nsec = mts.tv_nsec; 241@@ -79,11 +91,11 @@ mach_sys_clock_sleep_trap(struct lwp *l, const struct mach_sys_clock_sleep_trap_ 242 243 tsleep(&dontcare, PZERO|PCATCH, "sleep", ticks); 244 245- if (SCARG(uap, wakeup_time) != NULL) { 246+ if (uap->wakeup_time != NULL) { 247 nanotime(&cts); 248 mcts.tv_sec = cts.tv_sec; 249 mcts.tv_nsec = cts.tv_nsec; 250- error = copyout(&mcts, SCARG(uap, wakeup_time), sizeof(mcts)); 251+ error = copyout(&mcts, uap->wakeup_time, sizeof(mcts)); 252 if (error != 0) 253 return error; 254 } 255@@ -92,7 +104,7 @@ mach_sys_clock_sleep_trap(struct lwp *l, const struct mach_sys_clock_sleep_trap_ 256 } 257 258 int 259-mach_sys_timebase_info(struct lwp *l, const struct mach_sys_timebase_info_args *uap, register_t *retval) 260+sys_mach_timebase_info(struct thread *td, struct mach_timebase_info_args *uap) 261 { 262 /* { 263 syscallarg(mach_timebase_info_t) info; 264@@ -104,7 +116,7 @@ mach_sys_timebase_info(struct lwp *l, const struct mach_sys_timebase_info_args * 265 info.numer = 4000000000UL; 266 info.denom = 75189611UL; 267 268- if ((error = copyout(&info, (void *)SCARG(uap, info), 269+ if ((error = copyout(&info, (void *)uap->info, 270 sizeof(info))) != 0) 271 return error; 272 273diff --git a/sys/compat/mach/mach_clock.h b/sys/compat/mach/mach_clock.h 274index ea3584e..8347837 100644 275--- a/sys/compat/mach/mach_clock.h 276+++ b/sys/compat/mach/mach_clock.h 277@@ -1,4 +1,4 @@ 278-/* $NetBSD: mach_clock.h,v 1.8 2008/04/28 20:23:44 martin Exp $ */ 279+/* $FreeBSD$ */ 280 281 /*- 282 * Copyright (c) 2002-2003 The NetBSD Foundation, Inc. 283diff --git a/sys/compat/mach/mach_errno.c b/sys/compat/mach/mach_errno.c 284index 7e59e98..12919f65 100644 285--- a/sys/compat/mach/mach_errno.c 286+++ b/sys/compat/mach/mach_errno.c 287@@ -1,4 +1,4 @@ 288-/* $NetBSD: mach_errno.c,v 1.18 2008/04/28 20:23:44 martin Exp $ */ 289+/* $FreeBSD$ */ 290 291 /*- 292 * Copyright (c) 2002 The NetBSD Foundation, Inc. 293@@ -30,11 +30,9 @@ 294 */ 295 296 #include <sys/cdefs.h> 297-__KERNEL_RCSID(0, "$NetBSD: mach_errno.c,v 1.18 2008/04/28 20:23:44 martin Exp $"); 298 299 #include <sys/types.h> 300 #include <sys/systm.h> 301-#include <sys/null.h> 302 #include <sys/queue.h> 303 #include <sys/errno.h> 304 305diff --git a/sys/compat/mach/mach_errno.h b/sys/compat/mach/mach_errno.h 306index 8a45e5c..d9a54dc 100644 307--- a/sys/compat/mach/mach_errno.h 308+++ b/sys/compat/mach/mach_errno.h 309@@ -1,4 +1,4 @@ 310-/* $NetBSD: mach_errno.h,v 1.9 2008/04/28 20:23:44 martin Exp $ */ 311+/* $FreeBSD$ */ 312 313 /*- 314 * Copyright (c) 2002 The NetBSD Foundation, Inc. 315diff --git a/sys/compat/mach/mach_exception.c b/sys/compat/mach/mach_exception.c 316index 907e122..ffda2ef 100644 317--- a/sys/compat/mach/mach_exception.c 318+++ b/sys/compat/mach/mach_exception.c 319@@ -1,5 +1,3 @@ 320-/* $NetBSD: mach_exception.c,v 1.14 2009/03/14 21:04:18 dsl Exp $ */ 321- 322 /*- 323 * Copyright (c) 2003 The NetBSD Foundation, Inc. 324 * All rights reserved. 325@@ -30,20 +28,15 @@ 326 */ 327 328 #include <sys/cdefs.h> 329-__KERNEL_RCSID(0, "$NetBSD: mach_exception.c,v 1.14 2009/03/14 21:04:18 dsl Exp $"); 330- 331-#include "opt_compat_darwin.h" 332+__FBSDID("$FreeBSD$"); 333 334 #include <sys/types.h> 335 #include <sys/param.h> 336 #include <sys/signal.h> 337+#include <sys/systm.h> 338 #include <sys/proc.h> 339 #include <sys/malloc.h> 340 341-#ifdef COMPAT_DARWIN 342-#include <compat/darwin/darwin_exec.h> 343-#endif 344- 345 #include <compat/mach/mach_types.h> 346 #include <compat/mach/mach_exec.h> 347 #include <compat/mach/mach_errno.h> 348@@ -68,23 +61,23 @@ static void mach_siginfo_to_exception(const struct ksiginfo *, int *); 349 * mach_trapinfo1 and handle signals if it gets a non zero return value. 350 */ 351 void 352-mach_trapsignal(struct lwp *l, struct ksiginfo *ksi) 353+mach_trapsignal(struct thread *td, struct ksiginfo *ksi) 354 { 355- if (mach_trapsignal1(l, ksi) != 0) 356- trapsignal(l, ksi); 357+ if (mach_trapsignal1(td, ksi) != 0) 358+ trapsignal(td, ksi); 359 return; 360 } 361 362 int 363-mach_trapsignal1(struct lwp *l, struct ksiginfo *ksi) 364+mach_trapsignal1(struct thread *td, struct ksiginfo *ksi) 365 { 366- struct proc *p = l->l_proc; 367+ struct proc *p = td->td_proc; 368 struct mach_emuldata *med; 369 int exc_no; 370 int code[2]; 371 372 /* Don't inhinbit non maskable signals */ 373- if (sigprop[ksi->ksi_signo] & SA_CANTMASK) 374+ if (sigprop(ksi->ksi_signo) & SA_CANTMASK) 375 return EINVAL; 376 377 med = (struct mach_emuldata *)p->p_emuldata; 378@@ -110,12 +103,12 @@ mach_trapsignal1(struct lwp *l, struct ksiginfo *ksi) 379 380 mach_siginfo_to_exception(ksi, code); 381 382- return mach_exception(l, exc_no, code); 383+ return mach_exception(td, exc_no, code); 384 } 385 386 int 387-mach_exception(struct lwp *exc_l, int exc, int *code) 388- /* exc_l: currently running lwp */ 389+mach_exception(struct thread *exc_td, int exc, int *code) 390+ /* exc_td: currently running thread */ 391 { 392 int behavior, flavor; 393 mach_msg_header_t *msgh; 394@@ -125,7 +118,7 @@ mach_exception(struct lwp *exc_l, int exc, int *code) 395 struct mach_lwp_emuldata *exc_mle; 396 struct mach_emuldata *catcher_med; 397 struct mach_right *kernel_mr; 398- struct lwp *catcher_l; /* The lwp catching the exception */ 399+ struct thread *catcher_td; /* The lwp catching the exception */ 400 struct mach_right *exc_task; 401 struct mach_right *exc_thread; 402 struct mach_port *exc_port; 403@@ -133,14 +126,14 @@ mach_exception(struct lwp *exc_l, int exc, int *code) 404 int error = 0; 405 406 #ifdef DIAGNOSTIC 407- if (exc_l == NULL) { 408- printf("mach_exception: exc_l = %p\n", exc_l); 409+ if (exc_td == NULL) { 410+ printf("mach_exception: exc_td = %p\n", exc_td); 411 return ESRCH; 412 } 413 #endif 414 #ifdef DEBUG_MACH 415 printf("mach_exception: %d.%d, exc %d, code (%d, %d)\n", 416- exc_l->l_proc->p_pid, exc_l->l_lid, exc, code[0], code[1]); 417+ exc_td->td_proc->p_pid, exc_td->td_lid, exc, code[0], code[1]); 418 #endif 419 420 /* 421@@ -148,24 +141,22 @@ mach_exception(struct lwp *exc_l, int exc, int *code) 422 * the process at the time it dies. 423 */ 424 if (mach_exception_hang) { 425- struct proc *p = exc_l->l_proc; 426+ struct proc *p = exc_td->td_proc; 427 428- sigminusset(&contsigmask, &exc_l->l_sigpendset->sp_set); 429- lwp_lock(exc_l); 430+ sigminusset(&contsigmask, &exc_td->td_sigpendset->sp_set); 431+ thread_lock(exc_td); 432 p->p_pptr->p_nstopchild++; 433 p->p_stat = SSTOP; 434- exc_l->l_stat = LSSTOP; 435+ exc_td->td_stat = LSSTOP; 436 p->p_nrlwps--; 437- KERNEL_UNLOCK_ALL(exc_l, &exc_l->l_biglocks); 438- mi_switch(exc_l); 439- KERNEL_LOCK(exc_l->l_biglocks, exc_l); 440+ mi_switch(exc_td); 441 } 442 443 /* 444 * No exception if there is no exception port or if it has no receiver 445 */ 446- exc_mle = exc_l->l_emuldata; 447- exc_med = exc_l->l_proc->p_emuldata; 448+ exc_mle = exc_td->td_emuldata; 449+ exc_med = exc_td->td_proc->p_emuldata; 450 if ((exc_port = exc_med->med_exc[exc]) == NULL) 451 return EINVAL; 452 453@@ -177,14 +168,14 @@ mach_exception(struct lwp *exc_l, int exc, int *code) 454 455 #ifdef DEBUG_MACH 456 printf("catcher is %d.%d, state %d\n", 457- exc_port->mp_recv->mr_lwp->l_proc->p_pid, 458+ exc_port->mp_recv->mr_lwp->td_proc->p_pid, 459 exc_port->mp_recv->mr_lwp->l_lid, 460- exc_port->mp_recv->mr_lwp->l_proc->p_stat); 461+ exc_port->mp_recv->mr_lwp->td_proc->p_stat); 462 #endif 463 /* 464 * Don't send exceptions to dying processes 465 */ 466- if (P_ZOMBIE(exc_port->mp_recv->mr_lwp->l_proc)) { 467+ if (P_ZOMBIE(exc_port->mp_recv->mr_lwp->td_proc)) { 468 error = ESRCH; 469 goto out; 470 } 471@@ -209,8 +200,8 @@ mach_exception(struct lwp *exc_l, int exc, int *code) 472 * a dying parent, a signal is sent instead of the 473 * notification, this fixes the problem. 474 */ 475- if ((exc_l->l_proc->p_slflag & PSL_TRACED) && 476- (exc_l->l_proc->p_pptr->p_sflag & PS_WEXIT)) { 477+ if ((exc_td->td_proc->p_slflag & PSL_TRACED) && 478+ (exc_td->td_proc->p_pptr->p_sflag & PS_WEXIT)) { 479 #ifdef DEBUG_MACH 480 printf("mach_exception: deadlock avoided\n"); 481 #endif 482@@ -233,22 +224,22 @@ mach_exception(struct lwp *exc_l, int exc, int *code) 483 * We want the port names in the target process, that is, 484 * the process with receive right for exc_port. 485 */ 486- catcher_l = exc_port->mp_recv->mr_lwp; 487- catcher_med = catcher_l->l_proc->p_emuldata; 488- exc_mr = mach_right_get(exc_port, catcher_l, MACH_PORT_TYPE_SEND, 0); 489+ catcher_td = exc_port->mp_recv->mr_lwp; 490+ catcher_med = catcher_td->td_proc->p_emuldata; 491+ exc_mr = mach_right_get(exc_port, catcher_td, MACH_PORT_TYPE_SEND, 0); 492 kernel_mr = mach_right_get(catcher_med->med_kernel, 493- catcher_l, MACH_PORT_TYPE_SEND, 0); 494+ catcher_td, MACH_PORT_TYPE_SEND, 0); 495 496 exc_task = mach_right_get(exc_med->med_kernel, 497- catcher_l, MACH_PORT_TYPE_SEND, 0); 498+ catcher_td, MACH_PORT_TYPE_SEND, 0); 499 exc_thread = mach_right_get(exc_mle->mle_kernel, 500- catcher_l, MACH_PORT_TYPE_SEND, 0); 501+ catcher_td, MACH_PORT_TYPE_SEND, 0); 502 503 switch (behavior) { 504 case MACH_EXCEPTION_DEFAULT: { 505 mach_exception_raise_request_t *req; 506 507- req = malloc(sizeof(*req), M_EMULDATA, M_WAITOK | M_ZERO); 508+ req = malloc(sizeof(*req), M_MACH, M_WAITOK | M_ZERO); 509 msglen = sizeof(*req); 510 msgh = (mach_msg_header_t *)req; 511 512@@ -277,7 +268,7 @@ mach_exception(struct lwp *exc_l, int exc, int *code) 513 mach_exception_raise_state_request_t *req; 514 int dc; 515 516- req = malloc(sizeof(*req), M_EMULDATA, M_WAITOK | M_ZERO); 517+ req = malloc(sizeof(*req), M_MACH, M_WAITOK | M_ZERO); 518 msglen = sizeof(*req); 519 msgh = (mach_msg_header_t *)req; 520 521@@ -293,7 +284,7 @@ mach_exception(struct lwp *exc_l, int exc, int *code) 522 req->req_codecount = 2; 523 memcpy(&req->req_code[0], code, sizeof(req->req_code)); 524 req->req_flavor = flavor; 525- mach_thread_get_state_machdep(exc_l, 526+ mach_thread_get_state_machdep(exc_td, 527 flavor, req->req_state, &dc); 528 529 msglen = msglen - 530@@ -308,7 +299,7 @@ mach_exception(struct lwp *exc_l, int exc, int *code) 531 mach_exception_raise_state_identity_request_t *req; 532 int dc; 533 534- req = malloc(sizeof(*req), M_EMULDATA, M_WAITOK | M_ZERO); 535+ req = malloc(sizeof(*req), M_MACH, M_WAITOK | M_ZERO); 536 msglen = sizeof(*req); 537 msgh = (mach_msg_header_t *)req; 538 539@@ -329,7 +320,7 @@ mach_exception(struct lwp *exc_l, int exc, int *code) 540 req->req_codecount = 2; 541 memcpy(&req->req_code[0], code, sizeof(req->req_code)); 542 req->req_flavor = flavor; 543- mach_thread_get_state_machdep(exc_l, 544+ mach_thread_get_state_machdep(exc_td, 545 flavor, req->req_state, &dc); 546 547 msglen = msglen - 548@@ -362,7 +353,7 @@ mach_exception(struct lwp *exc_l, int exc, int *code) 549 */ 550 if (((exc_port = exc_med->med_exc[exc]) == NULL) || 551 (exc_port->mp_recv == NULL) || 552- (P_ZOMBIE(exc_port->mp_recv->mr_lwp->l_proc))) { 553+ (P_ZOMBIE(exc_port->mp_recv->mr_lwp->td_proc))) { 554 error = ESRCH; 555 goto out; 556 } 557@@ -376,12 +367,12 @@ mach_exception(struct lwp *exc_l, int exc, int *code) 558 */ 559 #ifdef DEBUG_MACH 560 printf("mach_exception: %d.%d sleep on catcher_med->med_exclock = %p\n", 561- exc_l->l_proc->p_pid, exc_l->l_lid, &catcher_med->med_exclock); 562+ exc_td->td_proc->p_pid, exc_td->td_lid, &catcher_med->med_exclock); 563 #endif 564 error = tsleep(&catcher_med->med_exclock, PZERO, "mach_exc", 0); 565 #ifdef DEBUG_MACH 566 printf("mach_exception: %d.%d resumed, error = %d\n", 567- exc_l->l_proc->p_pid, exc_l->l_lid, error); 568+ exc_td->td_proc->p_pid, exc_td->td_lid, error); 569 #endif 570 571 /* 572@@ -470,7 +461,7 @@ mach_siginfo_to_exception(const struct ksiginfo *ksi, int *code) 573 int 574 mach_exception_raise(struct mach_trap_args *args) 575 { 576- struct lwp *l = args->l; 577+ struct thread *td = args->td; 578 mach_exception_raise_reply_t *rep; 579 struct mach_emuldata *med; 580 581@@ -493,7 +484,7 @@ mach_exception_raise(struct mach_trap_args *args) 582 if (rep->rep_retval != 0) 583 return 0; 584 585- med = l->l_proc->p_emuldata; 586+ med = td->td_proc->p_emuldata; 587 588 /* 589 * Check for unexpected exception acknowledge, whereas 590diff --git a/sys/compat/mach/mach_exception.h b/sys/compat/mach/mach_exception.h 591index de1e630..6ab6ec9 100644 592--- a/sys/compat/mach/mach_exception.h 593+++ b/sys/compat/mach/mach_exception.h 594@@ -152,9 +152,9 @@ struct mach_exc_info { 595 int mei_behavior; 596 }; 597 598-void mach_trapsignal(struct lwp *, struct ksiginfo *); 599-int mach_trapsignal1(struct lwp *, struct ksiginfo *); 600-int mach_exception(struct lwp *, int, int *); 601+void mach_trapsignal(struct thread *, struct ksiginfo *); 602+int mach_trapsignal1(struct thread *, struct ksiginfo *); 603+int mach_exception(struct thread *, int, int *); 604 605 #endif /* _MACH_EXCEPTION_H_ */ 606 607diff --git a/sys/compat/mach/mach_exec.c b/sys/compat/mach/mach_exec.c 608index ac46629..d2009b9 100644 609--- a/sys/compat/mach/mach_exec.c 610+++ b/sys/compat/mach/mach_exec.c 611@@ -1,4 +1,4 @@ 612-/* $NetBSD: mach_exec.c,v 1.74 2010/07/25 11:25:57 jym Exp $ */ 613+/* $FreeBSD$ */ 614 615 /*- 616 * Copyright (c) 2001-2003 The NetBSD Foundation, Inc. 617@@ -30,23 +30,17 @@ 618 */ 619 620 #include <sys/cdefs.h> 621-__KERNEL_RCSID(0, "$NetBSD: mach_exec.c,v 1.74 2010/07/25 11:25:57 jym Exp $"); 622- 623-#include "opt_syscall_debug.h" 624+__FBSDID("$FreeBSD$"); 625 626 #include <sys/param.h> 627 #include <sys/systm.h> 628 #include <sys/proc.h> 629 #include <sys/exec.h> 630 #include <sys/queue.h> 631-#include <sys/exec_macho.h> 632 #include <sys/malloc.h> 633 634+#include <sys/sysent.h> 635 #include <sys/syscall.h> 636-#include <sys/syscallvar.h> 637- 638-#include <uvm/uvm_extern.h> 639-#include <uvm/uvm_param.h> 640 641 #include <compat/mach/mach_types.h> 642 #include <compat/mach/mach_message.h> 643@@ -125,7 +119,7 @@ struct emul emul_mach = { 644 * emulation, and it probably contains Darwin specific bits. 645 */ 646 int 647-exec_mach_copyargs(struct lwp *l, struct exec_package *pack, struct ps_strings *arginfo, char **stackp, void *argp) 648+exec_mach_copyargs(struct thread *l, struct exec_package *pack, struct ps_strings *arginfo, char **stackp, void *argp) 649 { 650 struct exec_macho_emul_arg *emea; 651 struct exec_macho_object_header *macho_hdr; 652@@ -189,7 +183,7 @@ mach_e_proc_exec(struct proc *p, struct exec_package *epp) 653 mach_e_proc_init(p); 654 655 if (p->p_emul != epp->ep_esch->es_emul) { 656- struct lwp *l = LIST_FIRST(&p->p_lwps); 657+ struct thread *l = LIST_FIRST(&p->p_lwps); 658 KASSERT(l != NULL); 659 mach_e_lwp_fork(NULL, l); 660 } 661@@ -198,14 +192,14 @@ mach_e_proc_exec(struct proc *p, struct exec_package *epp) 662 } 663 664 void 665-mach_e_proc_fork(struct proc *p2, struct lwp *l1, int forkflags) 666+mach_e_proc_fork(struct proc *p2, struct thread *l1, int forkflags) 667 { 668 mach_e_proc_fork1(p2, l1, 1); 669 return; 670 } 671 672 void 673-mach_e_proc_fork1(struct proc *p2, struct lwp *l1, int allocate) 674+mach_e_proc_fork1(struct proc *p2, struct thread *l1, int allocate) 675 { 676 struct mach_emuldata *med1; 677 struct mach_emuldata *med2; 678@@ -221,7 +215,7 @@ mach_e_proc_fork1(struct proc *p2, struct lwp *l1, int allocate) 679 mach_e_proc_init(p2); 680 681 med1 = p2->p_emuldata; 682- med2 = l1->l_proc->p_emuldata; 683+ med2 = td1->td_proc->p_emuldata; 684 685 /* 686 * Exception ports are inherited between forks, 687@@ -267,7 +261,7 @@ mach_e_proc_init(struct proc *p) 688 printf("mach_emuldata allocated for non Mach binary\n"); 689 #endif 690 p->p_emuldata = malloc(sizeof(struct mach_emuldata), 691- M_EMULDATA, M_WAITOK | M_ZERO); 692+ M_MACH, M_WAITOK | M_ZERO); 693 } 694 695 med = (struct mach_emuldata *)p->p_emuldata; 696@@ -347,7 +341,7 @@ mach_e_proc_exit(struct proc *p) 697 { 698 struct mach_emuldata *med; 699 struct mach_right *mr; 700- struct lwp *l; 701+ struct thread *l; 702 int i; 703 704 /* There is only one lwp remaining... */ 705@@ -391,18 +385,18 @@ mach_e_proc_exit(struct proc *p) 706 707 rw_destroy(&med->med_exclock); 708 rw_destroy(&med->med_rightlock); 709- free(med, M_EMULDATA); 710+ free(med, M_MACH); 711 p->p_emuldata = NULL; 712 713 return; 714 } 715 716 void 717-mach_e_lwp_fork(struct lwp *l1, struct lwp *l2) 718+mach_e_lwp_fork(struct thread *l1, struct thread *l2) 719 { 720 struct mach_lwp_emuldata *mle; 721 722- mle = malloc(sizeof(*mle), M_EMULDATA, M_WAITOK); 723+ mle = malloc(sizeof(*mle), M_MACH, M_WAITOK); 724 l2->l_emuldata = mle; 725 726 mle->mle_kernel = mach_port_get(); 727@@ -421,7 +415,7 @@ mach_e_lwp_fork(struct lwp *l1, struct lwp *l2) 728 } 729 730 void 731-mach_e_lwp_exit(struct lwp *l) 732+mach_e_lwp_exit(struct thread *l) 733 { 734 struct mach_lwp_emuldata *mle; 735 736@@ -439,7 +433,7 @@ mach_e_lwp_exit(struct lwp *l) 737 mle->mle_kernel->mp_datatype = MACH_MP_NONE; 738 MACH_PORT_UNREF(mle->mle_kernel); 739 740- free(mle, M_EMULDATA); 741+ free(mle, M_MACH); 742 l->l_emuldata = NULL; 743 744 return; 745diff --git a/sys/compat/mach/mach_exec.h b/sys/compat/mach/mach_exec.h 746index 06a8914..28674f1 100644 747--- a/sys/compat/mach/mach_exec.h 748+++ b/sys/compat/mach/mach_exec.h 749@@ -1,4 +1,4 @@ 750-/* $NetBSD: mach_exec.h,v 1.35 2011/03/05 23:51:47 joerg Exp $ */ 751+/* $FreeBSD$ */ 752 753 /*- 754 * Copyright (c) 2001 The NetBSD Foundation, Inc. 755@@ -31,8 +31,8 @@ 756 757 #ifndef _MACH_EXEC_H_ 758 #define _MACH_EXEC_H_ 759- 760-#include <uvm/uvm_extern.h> 761+#include <sys/lock.h> 762+#include <sys/rwlock.h> 763 764 #include <compat/mach/mach_types.h> 765 #include <compat/mach/mach_message.h> 766@@ -44,7 +44,7 @@ struct mach_emuldata { 767 int med_inited; /* Is this structure initialized? */ 768 int med_thpri; /* Saved priority */ 769 LIST_HEAD(med_right, mach_right) med_right; 770- krwlock_t med_rightlock; /* process right list and lock */ 771+ struct rwlock med_rightlock; /* process right list and lock */ 772 mach_port_t med_nextright; /* next unused right */ 773 774 struct mach_port *med_bootstrap;/* task bootstrap port */ 775@@ -54,24 +54,24 @@ struct mach_emuldata { 776 777 int med_dirty_thid; /* Thread id not yet initialized */ 778 int med_suspend; /* Suspend semaphore */ 779- krwlock_t med_exclock; /* Process exception handler lock */ 780+ struct rwlock med_exclock; /* Process exception handler lock */ 781 }; 782 783-struct mach_lwp_emuldata { 784+struct mach_thread_emuldata { 785 struct mach_port *mle_kernel; /* Thread's kernel port */ 786 }; 787 788 struct ps_strings; 789-int exec_mach_copyargs(struct lwp *, struct exec_package *, 790+int exec_mach_copyargs(struct thread *, struct exec_package *, 791 struct ps_strings *, char **, void *); 792 int exec_mach_probe(const char **); 793 void mach_e_proc_init(struct proc *); 794 void mach_e_proc_exit(struct proc *); 795 void mach_e_proc_exec(struct proc *, struct exec_package *); 796-void mach_e_proc_fork(struct proc *, struct lwp *, int); 797-void mach_e_proc_fork1(struct proc *, struct lwp *, int); 798-void mach_e_lwp_fork(struct lwp *, struct lwp *); 799-void mach_e_lwp_exit(struct lwp *); 800+void mach_e_proc_fork(struct proc *, struct thread *, int); 801+void mach_e_proc_fork1(struct proc *, struct thread *, int); 802+void mach_e_lwp_fork(struct thread *, struct thread *); 803+void mach_e_lwp_exit(struct thread *); 804 805 extern struct emul emul_mach; 806 807diff --git a/sys/compat/mach/mach_host.c b/sys/compat/mach/mach_host.c 808index 767348c..c9b7ffc 100644 809--- a/sys/compat/mach/mach_host.c 810+++ b/sys/compat/mach/mach_host.c 811@@ -1,5 +1,3 @@ 812-/* $NetBSD: mach_host.c,v 1.31 2008/04/28 20:23:44 martin Exp $ */ 813- 814 /*- 815 * Copyright (c) 2002-2003 The NetBSD Foundation, Inc. 816 * All rights reserved. 817@@ -30,7 +28,7 @@ 818 */ 819 820 #include <sys/cdefs.h> 821-__KERNEL_RCSID(0, "$NetBSD: mach_host.c,v 1.31 2008/04/28 20:23:44 martin Exp $"); 822+__FBSDID("$FreeBSD$"); 823 824 #include <sys/types.h> 825 #include <sys/malloc.h> 826@@ -40,9 +38,6 @@ __KERNEL_RCSID(0, "$NetBSD: mach_host.c,v 1.31 2008/04/28 20:23:44 martin Exp $" 827 #include <sys/signal.h> 828 #include <sys/proc.h> 829 830-#include <uvm/uvm_extern.h> 831-#include <uvm/uvm_param.h> 832- 833 #include <compat/mach/mach_types.h> 834 #include <compat/mach/mach_host.h> 835 #include <compat/mach/mach_port.h> 836@@ -144,10 +139,10 @@ mach_host_get_clock_service(struct mach_trap_args *args) 837 mach_host_get_clock_service_request_t *req = args->smsg; 838 mach_host_get_clock_service_reply_t *rep = args->rmsg; 839 size_t *msglen = args->rsize; 840- struct lwp *l = args->l; 841+ struct thread *td = args->td; 842 struct mach_right *mr; 843 844- mr = mach_right_get(mach_clock_port, l, MACH_PORT_TYPE_SEND, 0); 845+ mr = mach_right_get(mach_clock_port, td, MACH_PORT_TYPE_SEND, 0); 846 847 *msglen = sizeof(*rep); 848 mach_set_header(rep, req, *msglen); 849@@ -179,10 +174,10 @@ mach_host_get_io_master(struct mach_trap_args *args) 850 mach_host_get_io_master_request_t *req = args->smsg; 851 mach_host_get_io_master_reply_t *rep = args->rmsg; 852 size_t *msglen = args->rsize; 853- struct lwp *l = args->l; 854+ struct thread *td = args->td; 855 struct mach_right *mr; 856 857- mr = mach_right_get(mach_io_master_port, l, MACH_PORT_TYPE_SEND, 0); 858+ mr = mach_right_get(mach_io_master_port, td, MACH_PORT_TYPE_SEND, 0); 859 860 *msglen = sizeof(*rep); 861 mach_set_header(rep, req, *msglen); 862@@ -198,12 +193,12 @@ mach_processor_set_default(struct mach_trap_args *args) 863 mach_processor_set_default_request_t *req = args->smsg; 864 mach_processor_set_default_reply_t *rep = args->rmsg; 865 size_t *msglen = args->rsize; 866- struct lwp *l = args->l; 867+ struct thread *td = args->td; 868 struct mach_right *mr; 869 struct mach_port *mp; 870 871 mp = mach_port_get(); 872- mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0); 873+ mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0); 874 875 *msglen = sizeof(*rep); 876 mach_set_header(rep, req, *msglen); 877@@ -219,18 +214,18 @@ mach_host_processor_set_priv(struct mach_trap_args *args) 878 mach_host_processor_set_priv_request_t *req = args->smsg; 879 mach_host_processor_set_priv_reply_t *rep = args->rmsg; 880 size_t *msglen = args->rsize; 881- struct lwp *l = args->l; 882+ struct thread *td = args->td; 883 mach_port_t mn; 884 struct mach_right *mr; 885 struct mach_right *smr; 886 struct mach_port *smp; 887 888 mn = req->req_set.name; 889- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 890+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 891 return mach_msg_error(args, EINVAL); 892 893 smp = mach_port_get(); 894- smr = mach_right_get(smp, l, MACH_PORT_TYPE_SEND, 0); 895+ smr = mach_right_get(smp, td, MACH_PORT_TYPE_SEND, 0); 896 897 *msglen = sizeof(*rep); 898 mach_set_header(rep, req, *msglen); 899diff --git a/sys/compat/mach/mach_host.h b/sys/compat/mach/mach_host.h 900index ed57c90..abbab10 100644 901--- a/sys/compat/mach/mach_host.h 902+++ b/sys/compat/mach/mach_host.h 903@@ -1,4 +1,4 @@ 904-/* $NetBSD: mach_host.h,v 1.17 2008/04/28 20:23:44 martin Exp $ */ 905+/* $FreeBSD$ */ 906 907 /*- 908 * Copyright (c) 2002-2003 The NetBSD Foundation, Inc. 909diff --git a/sys/compat/mach/mach_iokit.c b/sys/compat/mach/mach_iokit.c 910index 502ea2b..df5ec36 100644 911--- a/sys/compat/mach/mach_iokit.c 912+++ b/sys/compat/mach/mach_iokit.c 913@@ -1,5 +1,3 @@ 914-/* $NetBSD: mach_iokit.c,v 1.36 2008/04/28 20:23:44 martin Exp $ */ 915- 916 /*- 917 * Copyright (c) 2003 The NetBSD Foundation, Inc. 918 * All rights reserved. 919@@ -29,9 +27,8 @@ 920 * POSSIBILITY OF SUCH DAMAGE. 921 */ 922 923-#include "opt_compat_darwin.h" 924 #include <sys/cdefs.h> 925-__KERNEL_RCSID(0, "$NetBSD: mach_iokit.c,v 1.36 2008/04/28 20:23:44 martin Exp $"); 926+__FBSDID("$FreeBSD$"); 927 928 #include <sys/types.h> 929 #include <sys/param.h> 930@@ -87,7 +84,7 @@ mach_io_service_get_matching_services(struct mach_trap_args *args) 931 mach_io_service_get_matching_services_request_t *req = args->smsg; 932 mach_io_service_get_matching_services_reply_t *rep = args->rmsg; 933 size_t *msglen = args->rsize; 934- struct lwp *l = args->l; 935+ struct thread *td = args->td; 936 struct mach_port *mp; 937 struct mach_right *mr; 938 struct mach_iokit_devclass *mid; 939@@ -103,7 +100,7 @@ mach_io_service_get_matching_services(struct mach_trap_args *args) 940 941 mp = mach_port_get(); 942 mp->mp_flags |= MACH_MP_INKERNEL; 943- mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0); 944+ mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0); 945 946 mp->mp_data = NULL; 947 i = 0; 948@@ -114,7 +111,7 @@ mach_io_service_get_matching_services(struct mach_trap_args *args) 949 950 size = sizeof(*mdi) 951 + sizeof(struct mach_device_iterator *); 952- mdi = malloc(size, M_EMULDATA, M_WAITOK); 953+ mdi = malloc(size, M_MACH, M_WAITOK); 954 mdi->mdi_devices[0] = mid; 955 mdi->mdi_devices[1] = NULL; 956 mdi->mdi_current = 0; 957@@ -141,14 +138,14 @@ mach_io_iterator_next(struct mach_trap_args *args) 958 mach_io_iterator_next_request_t *req = args->smsg; 959 mach_io_iterator_next_reply_t *rep = args->rmsg; 960 size_t *msglen = args->rsize; 961- struct lwp *l = args->l; 962+ struct thread *td = args->td; 963 struct mach_port *mp; 964 struct mach_right *mr; 965 struct mach_device_iterator *mdi; 966 mach_port_t mn; 967 968 mn = req->req_msgh.msgh_remote_port; 969- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 970+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 971 return mach_iokit_error(args, MACH_IOKIT_EPERM); 972 973 if (mr->mr_port->mp_datatype != MACH_MP_DEVICE_ITERATOR) 974@@ -165,7 +162,7 @@ mach_io_iterator_next(struct mach_trap_args *args) 975 mp->mp_datatype = MACH_MP_IOKIT_DEVCLASS; 976 mp->mp_data = mdi->mdi_devices[mdi->mdi_current++]; 977 978- mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0); 979+ mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0); 980 981 *msglen = sizeof(*rep); 982 mach_set_header(rep, req, *msglen); 983@@ -181,13 +178,13 @@ mach_io_service_open(struct mach_trap_args *args) 984 mach_io_service_open_request_t *req = args->smsg; 985 mach_io_service_open_reply_t *rep = args->rmsg; 986 size_t *msglen = args->rsize; 987- struct lwp *l = args->l; 988+ struct thread *td = args->td; 989 struct mach_port *mp; 990 struct mach_right *mr; 991 mach_port_t mn; 992 993 mn = req->req_msgh.msgh_remote_port; 994- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 995+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 996 return mach_iokit_error(args, MACH_IOKIT_EPERM); 997 998 mp = mach_port_get(); 999@@ -196,7 +193,7 @@ mach_io_service_open(struct mach_trap_args *args) 1000 mp->mp_datatype = MACH_MP_IOKIT_DEVCLASS; 1001 mp->mp_data = mr->mr_port->mp_data; 1002 } 1003- mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0); 1004+ mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0); 1005 1006 *msglen = sizeof(*rep); 1007 mach_set_header(rep, req, *msglen); 1008@@ -210,7 +207,7 @@ int 1009 mach_io_connect_method_scalari_scalaro(struct mach_trap_args *args) 1010 { 1011 mach_io_connect_method_scalari_scalaro_request_t *req = args->smsg; 1012- struct lwp *l = args->l; 1013+ struct thread *td = args->td; 1014 mach_port_t mn; 1015 struct mach_right *mr; 1016 struct mach_iokit_devclass *mid; 1017@@ -231,7 +228,7 @@ mach_io_connect_method_scalari_scalaro(struct mach_trap_args *args) 1018 return mach_msg_error(args, EINVAL); 1019 1020 mn = req->req_msgh.msgh_remote_port; 1021- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1022+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1023 return mach_iokit_error(args, MACH_IOKIT_EPERM); 1024 1025 if (mr->mr_port->mp_datatype == MACH_MP_IOKIT_DEVCLASS) { 1026@@ -252,13 +249,13 @@ mach_io_connect_get_service(struct mach_trap_args *args) 1027 mach_io_connect_get_service_request_t *req = args->smsg; 1028 mach_io_connect_get_service_reply_t *rep = args->rmsg; 1029 size_t *msglen = args->rsize; 1030- struct lwp *l = args->l; 1031+ struct thread *td = args->td; 1032 struct mach_port *mp; 1033 struct mach_right *mr; 1034 mach_port_t mn; 1035 1036 mn = req->req_msgh.msgh_remote_port; 1037- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1038+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1039 return mach_iokit_error(args, MACH_IOKIT_EPERM); 1040 1041 mp = mach_port_get(); 1042@@ -267,7 +264,7 @@ mach_io_connect_get_service(struct mach_trap_args *args) 1043 mp->mp_datatype = MACH_MP_IOKIT_DEVCLASS; 1044 mp->mp_data = mr->mr_port->mp_data; 1045 } 1046- mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0); 1047+ mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0); 1048 1049 /* 1050 * XXX Bump the refcount to workaround an emulation bug 1051@@ -289,7 +286,7 @@ mach_io_registry_entry_create_iterator(struct mach_trap_args *args) 1052 mach_io_registry_entry_create_iterator_request_t *req = args->smsg; 1053 mach_io_registry_entry_create_iterator_reply_t *rep = args->rmsg; 1054 size_t *msglen = args->rsize; 1055- struct lwp *l = args->l; 1056+ struct thread *td = args->td; 1057 struct mach_port *mp; 1058 mach_port_t mn; 1059 struct mach_right *mr; 1060@@ -310,7 +307,7 @@ mach_io_registry_entry_create_iterator(struct mach_trap_args *args) 1061 return mach_msg_error(args, EINVAL); 1062 1063 mn = req->req_msgh.msgh_remote_port; 1064- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1065+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1066 return mach_iokit_error(args, MACH_IOKIT_EPERM); 1067 if (mr->mr_port->mp_datatype != MACH_MP_IOKIT_DEVCLASS) 1068 return mach_iokit_error(args, MACH_IOKIT_EINVAL); 1069@@ -322,7 +319,7 @@ mach_io_registry_entry_create_iterator(struct mach_trap_args *args) 1070 1071 maxdev = sizeof(mach_iokit_devclasses); 1072 size = sizeof(*mdi) + (maxdev * sizeof(struct mach_iokit_devclass *)); 1073- mdi = malloc(size, M_EMULDATA, M_WAITOK); 1074+ mdi = malloc(size, M_MACH, M_WAITOK); 1075 mp->mp_data = mdi; 1076 1077 if (req->req_options & MACH_IOKIT_PARENT_ITERATOR) 1078@@ -344,7 +341,7 @@ mach_io_registry_entry_create_iterator(struct mach_trap_args *args) 1079 1080 mdi->mdi_current = 0; 1081 1082- mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0); 1083+ mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0); 1084 1085 #ifdef DEBUG_MACH 1086 printf("io_registry_entry_create_iterator\n"); 1087@@ -394,7 +391,7 @@ mach_io_service_add_interest_notification(struct mach_trap_args *args) 1088 mach_io_service_add_interest_notification_request_t *req = args->smsg; 1089 mach_io_service_add_interest_notification_reply_t *rep = args->rmsg; 1090 size_t *msglen = args->rsize; 1091- struct lwp *l = args->l; 1092+ struct thread *td = args->td; 1093 struct mach_port *mp; 1094 struct mach_right *mr; 1095 int end_offset, refcount_offset; 1096@@ -424,7 +421,7 @@ mach_io_service_add_interest_notification(struct mach_trap_args *args) 1097 1098 mp = mach_port_get(); 1099 mp->mp_flags |= MACH_MP_INKERNEL; 1100- mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0); 1101+ mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0); 1102 1103 #ifdef DEBUG_DARWIN 1104 uprintf("Unimplemented mach_io_service_add_interest_notification\n"); 1105@@ -442,7 +439,7 @@ mach_io_connect_set_notification_port(struct mach_trap_args *args) 1106 { 1107 mach_io_connect_set_notification_port_request_t *req = args->smsg; 1108 mach_io_connect_set_notification_port_reply_t *rep = args->rmsg; 1109- struct lwp *l = args->l; 1110+ struct thread *td = args->td; 1111 size_t *msglen = args->rsize; 1112 mach_port_t mnn, mn; 1113 struct mach_right *mrn; 1114@@ -453,11 +450,11 @@ mach_io_connect_set_notification_port(struct mach_trap_args *args) 1115 printf("mach_io_connect_set_notification_port\n"); 1116 #endif 1117 mnn = req->req_port.name; 1118- if ((mrn = mach_right_check(mnn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1119+ if ((mrn = mach_right_check(mnn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1120 return mach_msg_error(args, EINVAL); 1121 1122 mn = req->req_msgh.msgh_remote_port; 1123- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1124+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1125 return mach_msg_error(args, EINVAL); 1126 1127 if (mr->mr_port->mp_datatype != MACH_MP_IOKIT_DEVCLASS) 1128@@ -485,7 +482,7 @@ mach_io_registry_get_root_entry(struct mach_trap_args *args) 1129 mach_io_registry_get_root_entry_request_t *req = args->smsg; 1130 mach_io_registry_get_root_entry_reply_t *rep = args->rmsg; 1131 size_t *msglen = args->rsize; 1132- struct lwp *l = args->l; 1133+ struct thread *td = args->td; 1134 struct mach_port *mp; 1135 struct mach_right *mr; 1136 1137@@ -494,7 +491,7 @@ mach_io_registry_get_root_entry(struct mach_trap_args *args) 1138 mp->mp_datatype = MACH_MP_IOKIT_DEVCLASS; 1139 mp->mp_data = &mach_ioroot_devclass; 1140 1141- mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0); 1142+ mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0); 1143 1144 *msglen = sizeof(*rep); 1145 mach_set_header(rep, req, *msglen); 1146@@ -510,7 +507,7 @@ mach_io_registry_entry_get_child_iterator(struct mach_trap_args *args) 1147 mach_io_registry_entry_get_child_iterator_request_t *req = args->smsg; 1148 mach_io_registry_entry_get_child_iterator_reply_t *rep = args->rmsg; 1149 size_t *msglen = args->rsize; 1150- struct lwp *l = args->l; 1151+ struct thread *td = args->td; 1152 struct mach_port *mp; 1153 struct mach_right *mr; 1154 mach_port_t mn; 1155@@ -529,7 +526,7 @@ mach_io_registry_entry_get_child_iterator(struct mach_trap_args *args) 1156 return mach_msg_error(args, EINVAL); 1157 1158 mn = req->req_msgh.msgh_remote_port; 1159- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1160+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1161 return mach_iokit_error(args, MACH_IOKIT_EPERM); 1162 if (mr->mr_port->mp_datatype != MACH_MP_IOKIT_DEVCLASS) 1163 return mach_iokit_error(args, MACH_IOKIT_EINVAL); 1164@@ -541,13 +538,13 @@ mach_io_registry_entry_get_child_iterator(struct mach_trap_args *args) 1165 1166 maxdev = sizeof(mach_iokit_devclasses); 1167 size = sizeof(*mdi) + (maxdev * sizeof(struct mach_iokit_devclass *)); 1168- mdi = malloc(size, M_EMULDATA, M_WAITOK); 1169+ mdi = malloc(size, M_MACH, M_WAITOK); 1170 mp->mp_data = mdi; 1171 1172 (void)mach_fill_child_iterator(mdi, maxdev, 0, mid); 1173 mdi->mdi_current = 0; 1174 1175- mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0); 1176+ mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0); 1177 1178 *msglen = sizeof(*rep); 1179 mach_set_header(rep, req, *msglen); 1180@@ -563,7 +560,7 @@ mach_io_registry_entry_get_name_in_plane(struct mach_trap_args *args) 1181 mach_io_registry_entry_get_name_in_plane_request_t *req = args->smsg; 1182 mach_io_registry_entry_get_name_in_plane_reply_t *rep = args->rmsg; 1183 size_t *msglen = args->rsize; 1184- struct lwp *l = args->l; 1185+ struct thread *td = args->td; 1186 struct mach_right *mr; 1187 mach_port_t mn; 1188 struct mach_iokit_devclass *mid; 1189@@ -578,7 +575,7 @@ mach_io_registry_entry_get_name_in_plane(struct mach_trap_args *args) 1190 return mach_msg_error(args, EINVAL); 1191 1192 mn = req->req_msgh.msgh_remote_port; 1193- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1194+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1195 return mach_iokit_error(args, MACH_IOKIT_EPERM); 1196 if (mr->mr_port->mp_datatype != MACH_MP_IOKIT_DEVCLASS) 1197 return mach_iokit_error(args, MACH_IOKIT_EINVAL); 1198@@ -655,7 +652,7 @@ mach_io_registry_entry_get_properties(struct mach_trap_args *args) 1199 mach_io_registry_entry_get_properties_request_t *req = args->smsg; 1200 mach_io_registry_entry_get_properties_reply_t *rep = args->rmsg; 1201 size_t *msglen = args->rsize; 1202- struct lwp *l = args->l; 1203+ struct thread *td = args->td; 1204 int error; 1205 void *uaddr; 1206 size_t size; 1207@@ -664,7 +661,7 @@ mach_io_registry_entry_get_properties(struct mach_trap_args *args) 1208 struct mach_iokit_devclass *mid; 1209 1210 mn = req->req_msgh.msgh_remote_port; 1211- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1212+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1213 return mach_iokit_error(args, MACH_IOKIT_EPERM); 1214 1215 if (mr->mr_port->mp_datatype != MACH_MP_IOKIT_DEVCLASS) 1216@@ -679,7 +676,7 @@ mach_io_registry_entry_get_properties(struct mach_trap_args *args) 1217 mid->mid_properties, &uaddr, size, MACH_OOL_TRACE)) != 0) { 1218 #ifdef DEBUG_MACH 1219 printf("pid %d.%d: copyout iokit properties failed\n", 1220- l->l_proc->p_pid, l->l_lid); 1221+ td->td_proc->p_pid, td->td_lid); 1222 #endif 1223 } 1224 1225@@ -700,7 +697,7 @@ mach_io_registry_entry_get_property(struct mach_trap_args *args) 1226 mach_io_registry_entry_get_property_request_t *req = args->smsg; 1227 mach_io_registry_entry_get_property_reply_t *rep = args->rmsg; 1228 size_t *msglen = args->rsize; 1229- struct lwp *l = args->l; 1230+ struct thread *td = args->td; 1231 int error; 1232 void *uaddr; 1233 size_t size; 1234@@ -720,7 +717,7 @@ mach_io_registry_entry_get_property(struct mach_trap_args *args) 1235 1236 /* Find the port */ 1237 mn = req->req_msgh.msgh_remote_port; 1238- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1239+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1240 return mach_iokit_error(args, MACH_IOKIT_EPERM); 1241 1242 /* Find the devclass information */ 1243@@ -746,7 +743,7 @@ mach_io_registry_entry_get_property(struct mach_trap_args *args) 1244 mip->mip_value, &uaddr, size, MACH_OOL_TRACE)) != 0) { 1245 #ifdef DEBUG_MACH 1246 printf("pid %d.%d: copyout iokit property failed\n", 1247- l->l_proc->p_pid, l->l_lid); 1248+ td->td_proc->p_pid, td->td_lid); 1249 #endif 1250 } 1251 1252@@ -812,13 +809,13 @@ int 1253 mach_io_connect_map_memory(struct mach_trap_args *args) 1254 { 1255 mach_io_connect_map_memory_request_t *req = args->smsg; 1256- struct lwp *l = args->l; 1257+ struct thread *td = args->td; 1258 mach_port_t mn; 1259 struct mach_right *mr; 1260 struct mach_iokit_devclass *mid; 1261 1262 mn = req->req_msgh.msgh_remote_port; 1263- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1264+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1265 return mach_iokit_error(args, MACH_IOKIT_EPERM); 1266 1267 if (mr->mr_port->mp_datatype == MACH_MP_IOKIT_DEVCLASS) { 1268@@ -839,13 +836,13 @@ mach_io_iterator_reset(struct mach_trap_args *args) 1269 mach_io_iterator_reset_request_t *req = args->smsg; 1270 mach_io_iterator_reset_reply_t *rep = args->rmsg; 1271 size_t *msglen = args->rsize; 1272- struct lwp *l = args->l; 1273+ struct thread *td = args->td; 1274 mach_port_t mn; 1275 struct mach_right *mr; 1276 struct mach_device_iterator *mdi; 1277 1278 mn = req->req_msgh.msgh_remote_port; 1279- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1280+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1281 return mach_iokit_error(args, MACH_IOKIT_EPERM); 1282 1283 if (mr->mr_port->mp_datatype != MACH_MP_DEVICE_ITERATOR) 1284@@ -868,7 +865,7 @@ int 1285 mach_io_connect_method_scalari_structo(struct mach_trap_args *args) 1286 { 1287 mach_io_connect_method_scalari_structo_request_t *req = args->smsg; 1288- struct lwp *l = args->l; 1289+ struct thread *td = args->td; 1290 mach_port_t mn; 1291 struct mach_right *mr; 1292 struct mach_iokit_devclass *mid; 1293@@ -885,7 +882,7 @@ mach_io_connect_method_scalari_structo(struct mach_trap_args *args) 1294 return mach_msg_error(args, EINVAL); 1295 1296 mn = req->req_msgh.msgh_remote_port; 1297- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1298+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1299 return mach_iokit_error(args, MACH_IOKIT_EPERM); 1300 1301 if (mr->mr_port->mp_datatype == MACH_MP_IOKIT_DEVCLASS) { 1302@@ -904,7 +901,7 @@ int 1303 mach_io_connect_method_structi_structo(struct mach_trap_args *args) 1304 { 1305 mach_io_connect_method_structi_structo_request_t *req = args->smsg; 1306- struct lwp *l = args->l; 1307+ struct thread *td = args->td; 1308 mach_port_t mn; 1309 struct mach_right *mr; 1310 struct mach_iokit_devclass *mid; 1311@@ -923,7 +920,7 @@ mach_io_connect_method_structi_structo(struct mach_trap_args *args) 1312 return mach_msg_error(args, EINVAL); 1313 1314 mn = req->req_msgh.msgh_remote_port; 1315- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1316+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1317 return mach_iokit_error(args, MACH_IOKIT_EPERM); 1318 1319 if (mr->mr_port->mp_datatype == MACH_MP_IOKIT_DEVCLASS) { 1320@@ -1003,7 +1000,7 @@ int 1321 mach_io_connect_method_scalari_structi(struct mach_trap_args *args) 1322 { 1323 mach_io_connect_method_scalari_structi_request_t *req = args->smsg; 1324- struct lwp *l = args->l; 1325+ struct thread *td = args->td; 1326 mach_port_t mn; 1327 struct mach_right *mr; 1328 struct mach_iokit_devclass *mid; 1329@@ -1025,7 +1022,7 @@ mach_io_connect_method_scalari_structi(struct mach_trap_args *args) 1330 return mach_msg_error(args, EINVAL); 1331 1332 mn = req->req_msgh.msgh_remote_port; 1333- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1334+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1335 return mach_iokit_error(args, MACH_IOKIT_EPERM); 1336 1337 if (mr->mr_port->mp_datatype == MACH_MP_IOKIT_DEVCLASS) { 1338@@ -1046,7 +1043,7 @@ mach_io_registry_entry_from_path(struct mach_trap_args *args) 1339 mach_io_registry_entry_from_path_request_t *req = args->smsg; 1340 mach_io_registry_entry_from_path_reply_t *rep = args->rmsg; 1341 size_t *msglen = args->rsize; 1342- struct lwp *l = args->l; 1343+ struct thread *td = args->td; 1344 struct mach_port *mp; 1345 struct mach_right *mr; 1346 struct mach_iokit_devclass *mid; 1347@@ -1067,7 +1064,7 @@ mach_io_registry_entry_from_path(struct mach_trap_args *args) 1348 1349 mp = mach_port_get(); 1350 mp->mp_flags |= MACH_MP_INKERNEL; 1351- mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0); 1352+ mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0); 1353 1354 i = 0; 1355 while ((mid = mach_iokit_devclasses[i++]) != NULL) { 1356@@ -1099,7 +1096,7 @@ mach_io_registry_entry_get_parent_iterator(struct mach_trap_args *args) 1357 mach_io_registry_entry_get_parent_iterator_request_t *req = args->smsg; 1358 mach_io_registry_entry_get_parent_iterator_reply_t *rep = args->rmsg; 1359 size_t *msglen = args->rsize; 1360- struct lwp *l = args->l; 1361+ struct thread *td = args->td; 1362 struct mach_port *mp; 1363 struct mach_right *mr; 1364 struct mach_iokit_devclass *mid; 1365@@ -1123,7 +1120,7 @@ mach_io_registry_entry_get_parent_iterator(struct mach_trap_args *args) 1366 #endif 1367 1368 mn = req->req_msgh.msgh_remote_port; 1369- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1370+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 1371 return mach_iokit_error(args, MACH_IOKIT_EPERM); 1372 1373 if (mr->mr_port->mp_datatype != MACH_MP_IOKIT_DEVCLASS) 1374@@ -1136,13 +1133,13 @@ mach_io_registry_entry_get_parent_iterator(struct mach_trap_args *args) 1375 1376 maxdev = sizeof(mach_iokit_devclasses); 1377 size = sizeof(*mdi) + (maxdev * sizeof(struct mach_iokit_devclass *)); 1378- mdi = malloc(size, M_EMULDATA, M_WAITOK); 1379+ mdi = malloc(size, M_MACH, M_WAITOK); 1380 mp->mp_data = mdi; 1381 1382 (void)mach_fill_parent_iterator(mdi, maxdev, 0, mid); 1383 mdi->mdi_current = 0; 1384 1385- mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0); 1386+ mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0); 1387 1388 *msglen = sizeof(*rep); 1389 mach_set_header(rep, req, *msglen); 1390diff --git a/sys/compat/mach/mach_iokit.h b/sys/compat/mach/mach_iokit.h 1391index 2981964..8308db5 100644 1392--- a/sys/compat/mach/mach_iokit.h 1393+++ b/sys/compat/mach/mach_iokit.h 1394@@ -1,4 +1,4 @@ 1395-/* $NetBSD: mach_iokit.h,v 1.26 2008/04/28 20:23:44 martin Exp $ */ 1396+/* $FreeBSD$ */ 1397 1398 /*- 1399 * Copyright (c) 2003 The NetBSD Foundation, Inc. 1400diff --git a/sys/compat/mach/mach_message.c b/sys/compat/mach/mach_message.c 1401index c7e60a7..0b005e4 100644 1402--- a/sys/compat/mach/mach_message.c 1403+++ b/sys/compat/mach/mach_message.c 1404@@ -1,5 +1,3 @@ 1405-/* $NetBSD: mach_message.c,v 1.59 2009/03/18 16:00:17 cegger Exp $ */ 1406- 1407 /*- 1408 * Copyright (c) 2002-2003 The NetBSD Foundation, Inc. 1409 * All rights reserved. 1410@@ -30,10 +28,9 @@ 1411 */ 1412 1413 #include <sys/cdefs.h> 1414-__KERNEL_RCSID(0, "$NetBSD: mach_message.c,v 1.59 2009/03/18 16:00:17 cegger Exp $"); 1415+__FBSDID("$FreeBSD$"); 1416 1417 #include "opt_compat_mach.h" /* For COMPAT_MACH in <sys/ktrace.h> */ 1418-#include "opt_compat_darwin.h" 1419 1420 #include <sys/types.h> 1421 #include <sys/param.h> 1422@@ -46,15 +43,12 @@ __KERNEL_RCSID(0, "$NetBSD: mach_message.c,v 1.59 2009/03/18 16:00:17 cegger Exp 1423 #include <sys/pool.h> 1424 #include <sys/ktrace.h> 1425 1426-#include <uvm/uvm_extern.h> 1427-#include <uvm/uvm_map.h> 1428- 1429 #include <compat/mach/mach_types.h> 1430 #include <compat/mach/mach_message.h> 1431 #include <compat/mach/mach_port.h> 1432 #include <compat/mach/mach_exec.h> 1433 #include <compat/mach/mach_clock.h> 1434-#include <compat/mach/mach_syscallargs.h> 1435+#include <compat/mach/mach_proto.h> 1436 1437 #ifdef COMPAT_DARWIN 1438 #include <compat/darwin/darwin_exec.h> 1439@@ -64,19 +58,19 @@ __KERNEL_RCSID(0, "$NetBSD: mach_message.c,v 1.59 2009/03/18 16:00:17 cegger Exp 1440 static struct pool mach_message_pool; 1441 1442 static inline 1443- int mach_msg_send(struct lwp *, mach_msg_header_t *, int *, size_t); 1444-static inline int mach_msg_recv(struct lwp *, mach_msg_header_t *, 1445+ int mach_msg_send(struct thread *, mach_msg_header_t *, int *, size_t); 1446+static inline int mach_msg_recv(struct thread *, mach_msg_header_t *, 1447 int, size_t, unsigned int, mach_port_t); 1448 static inline 1449- struct lwp *mach_get_target_task(struct lwp *, struct mach_port *); 1450+ struct thread *mach_get_target_task(struct thread *, struct mach_port *); 1451 static inline void mach_drop_rights(struct mach_right *, int); 1452 static inline 1453- void mach_trade_rights(struct lwp *, struct lwp *, mach_port_t *, int); 1454+ void mach_trade_rights(struct thread *, struct thread *, mach_port_t *, int); 1455 static inline 1456- int mach_trade_rights_complex(struct lwp *, struct mach_message *); 1457+ int mach_trade_rights_complex(struct thread *, struct mach_message *); 1458 1459 int 1460-mach_sys_msg_overwrite_trap(struct lwp *l, const struct mach_sys_msg_overwrite_trap_args *uap, register_t *retval) 1461+mach_sys_msg_overwrite_trap(struct thread *td, const struct mach_sys_msg_overwrite_trap_args *uap) 1462 { 1463 /* { 1464 syscallarg(mach_msg_header_t *) msg; 1465@@ -93,18 +87,18 @@ mach_sys_msg_overwrite_trap(struct lwp *l, const struct mach_sys_msg_overwrite_t 1466 mach_msg_header_t *msg; 1467 int opt; 1468 1469- *retval = MACH_MSG_SUCCESS; 1470- send_size = SCARG(uap, send_size); 1471- recv_size = SCARG(uap, rcv_size); 1472- opt = SCARG(uap, option); 1473+ td->td_retval[0] = MACH_MSG_SUCCESS; 1474+ send_size = uap->send_size; 1475+ recv_size = uap->rcv_size; 1476+ opt = uap->option; 1477 1478 /* XXX not safe enough: lots of big messages will kill us */ 1479 if (send_size > MACH_MAX_MSG_LEN) { 1480- *retval = MACH_SEND_TOO_LARGE; 1481+ td->td_retval[0] = MACH_SEND_TOO_LARGE; 1482 return 0; 1483 } 1484 if (recv_size > MACH_MAX_MSG_LEN) { 1485- *retval = MACH_RCV_TOO_LARGE; 1486+ td->td_retval[0] = MACH_RCV_TOO_LARGE; 1487 return 0; 1488 } 1489 1490@@ -113,25 +107,25 @@ mach_sys_msg_overwrite_trap(struct lwp *l, const struct mach_sys_msg_overwrite_t 1491 * set, we must send, and then receive. If 1492 * send fail, then we skip recieve. 1493 */ 1494- msg = SCARG(uap, msg); 1495+ msg = uap->msg; 1496 if (opt & MACH_SEND_MSG) 1497- *retval = mach_msg_send(l, msg, &opt, send_size); 1498+ td->td_retval[0] = mach_msg_send(td, msg, &opt, send_size); 1499 1500- if ((opt & MACH_RCV_MSG) && (*retval == MACH_MSG_SUCCESS)) { 1501+ if ((opt & MACH_RCV_MSG) && (td->td_retval[0] == MACH_MSG_SUCCESS)) { 1502 /* 1503 * Find a buffer for the reply. 1504 */ 1505- if (SCARG(uap, rcv_msg) != NULL) 1506- msg = SCARG(uap, rcv_msg); 1507- else if (SCARG(uap, msg) != NULL) 1508- msg = SCARG(uap, msg); 1509+ if (uap->rcv_msg != NULL) 1510+ msg = uap->rcv_msg; 1511+ else if (uap->msg != NULL) 1512+ msg = uap->msg; 1513 else { 1514- *retval = MACH_RCV_INVALID_DATA; 1515+ td->td_retval[0] = MACH_RCV_INVALID_DATA; 1516 return 0; 1517 } 1518 1519- *retval = mach_msg_recv(l, msg, opt, recv_size, 1520- SCARG(uap, timeout), SCARG(uap, rcv_name)); 1521+ td->td_retval[0] = mach_msg_recv(td, msg, opt, recv_size, 1522+ uap->timeout, uap->rcv_name); 1523 } 1524 1525 return 0; 1526@@ -141,11 +135,11 @@ mach_sys_msg_overwrite_trap(struct lwp *l, const struct mach_sys_msg_overwrite_t 1527 * Send a Mach message. This returns a Mach message error code. 1528 */ 1529 static inline int 1530-mach_msg_send(struct lwp *l, mach_msg_header_t *msg, int *option, size_t send_size) 1531+mach_msg_send(struct thread *td, mach_msg_header_t *msg, int *option, size_t send_size) 1532 { 1533 struct mach_emuldata *med; 1534 struct mach_port *mp; 1535- struct proc *p = l->l_proc; 1536+ struct proc *p = td->td_proc; 1537 mach_msg_header_t *sm; 1538 struct mach_service *srv; 1539 mach_port_t ln; 1540@@ -165,7 +159,7 @@ mach_msg_send(struct lwp *l, mach_msg_header_t *msg, int *option, size_t send_si 1541 * Allocate memory for the message and its reply, 1542 * and copy the whole message in the kernel. 1543 */ 1544- sm = malloc(send_size, M_EMULDATA, M_WAITOK); 1545+ sm = malloc(send_size, M_MACH, M_WAITOK); 1546 if ((error = copyin(msg, sm, send_size)) != 0) { 1547 ret = MACH_SEND_INVALID_DATA; 1548 goto out1; 1549@@ -180,8 +174,8 @@ mach_msg_send(struct lwp *l, mach_msg_header_t *msg, int *option, size_t send_si 1550 ln = sm->msgh_local_port; 1551 rn = sm->msgh_remote_port; 1552 1553- lr = mach_right_check(ln, l, MACH_PORT_TYPE_ALL_RIGHTS); 1554- rr = mach_right_check(rn, l, MACH_PORT_TYPE_ALL_RIGHTS); 1555+ lr = mach_right_check(ln, td, MACH_PORT_TYPE_ALL_RIGHTS); 1556+ rr = mach_right_check(rn, td, MACH_PORT_TYPE_ALL_RIGHTS); 1557 if ((rr == NULL) || (rr->mr_port == NULL)) { 1558 #ifdef DEBUG_MACH 1559 printf("msg id %d: invalid dest\n", sm->msgh_id); 1560@@ -195,7 +189,7 @@ mach_msg_send(struct lwp *l, mach_msg_header_t *msg, int *option, size_t send_si 1561 * the remote port. 1562 */ 1563 rights = (MACH_PORT_TYPE_SEND | MACH_PORT_TYPE_SEND_ONCE); 1564- if (mach_right_check(rn, l, rights) == NULL) { 1565+ if (mach_right_check(rn, td, rights) == NULL) { 1566 ret = MACH_SEND_INVALID_RIGHT; 1567 goto out1; 1568 } 1569@@ -295,12 +289,12 @@ skip_null_lr: 1570 */ 1571 reply_size = max_replen; 1572 if (lr != NULL) 1573- rm = malloc(reply_size, M_EMULDATA, M_WAITOK | M_ZERO); 1574+ rm = malloc(reply_size, M_MACH, M_WAITOK | M_ZERO); 1575 else 1576 rm = NULL; 1577 1578 args.l = l; 1579- args.tl = mach_get_target_task(l, mp); 1580+ args.tl = mach_get_target_task(td, mp); 1581 args.smsg = sm; 1582 args.rmsg = rm; 1583 args.rsize = &reply_size; 1584@@ -348,7 +342,7 @@ skip_null_lr: 1585 wakeup(mp->mp_recv->mr_sethead); 1586 ret = MACH_MSG_SUCCESS; 1587 out1: 1588- free(sm, M_EMULDATA); 1589+ free(sm, M_MACH); 1590 1591 return ret; 1592 } 1593@@ -363,7 +357,7 @@ out1: 1594 #ifdef DEBUG_MACH 1595 printf("msg id %d: invalid dst\n", sm->msgh_id); 1596 #endif 1597- free(sm, M_EMULDATA); 1598+ free(sm, M_MACH); 1599 return MACH_SEND_INVALID_DEST; 1600 } 1601 1602@@ -398,11 +392,11 @@ out1: 1603 * Receive a Mach message. This returns a Mach message error code. 1604 */ 1605 static inline int 1606-mach_msg_recv(struct lwp *l, mach_msg_header_t *urm, int option, size_t recv_size, unsigned int timeout, mach_port_t mn) 1607+mach_msg_recv(struct thread *td, mach_msg_header_t *urm, int option, size_t recv_size, unsigned int timeout, mach_port_t mn) 1608 { 1609 struct mach_port *mp; 1610 #if defined(DEBUG_MACH_MSG) || defined(KTRACE) 1611- struct proc *p = l->l_proc; 1612+ struct proc *p = td->td_proc; 1613 #endif 1614 struct mach_message *mm; 1615 mach_port_t tmp; 1616@@ -422,13 +416,13 @@ mach_msg_recv(struct lwp *l, mach_msg_header_t *urm, int option, size_t recv_siz 1617 /* 1618 * Check for receive right on the port. 1619 */ 1620- mr = mach_right_check(mn, l, MACH_PORT_TYPE_RECEIVE); 1621+ mr = mach_right_check(mn, td, MACH_PORT_TYPE_RECEIVE); 1622 if (mr == NULL) { 1623 1624 /* 1625 * Is it a port set? 1626 */ 1627- mr = mach_right_check(mn, l, MACH_PORT_TYPE_PORT_SET); 1628+ mr = mach_right_check(mn, td, MACH_PORT_TYPE_PORT_SET); 1629 if (mr == NULL) 1630 return MACH_RCV_INVALID_NAME; 1631 1632@@ -438,7 +432,7 @@ mach_msg_recv(struct lwp *l, mach_msg_header_t *urm, int option, size_t recv_siz 1633 * and check if we have some message. 1634 */ 1635 LIST_FOREACH(cmr, &mr->mr_set, mr_setlist) { 1636- if ((mach_right_check(cmr->mr_name, l, 1637+ if ((mach_right_check(cmr->mr_name, td, 1638 MACH_PORT_TYPE_RECEIVE)) == NULL) 1639 return MACH_RCV_INVALID_NAME; 1640 1641@@ -471,7 +465,7 @@ mach_msg_recv(struct lwp *l, mach_msg_header_t *urm, int option, size_t recv_siz 1642 * Check we did not loose the receive right 1643 * while we were sleeping. 1644 */ 1645- if ((mach_right_check(mn, l, 1646+ if ((mach_right_check(mn, td, 1647 MACH_PORT_TYPE_PORT_SET)) == NULL) 1648 return MACH_RCV_PORT_DIED; 1649 1650@@ -521,7 +515,7 @@ mach_msg_recv(struct lwp *l, mach_msg_header_t *urm, int option, size_t recv_siz 1651 * Check we did not lose the receive right 1652 * while we were sleeping. 1653 */ 1654- if ((mach_right_check(mn, l, 1655+ if ((mach_right_check(mn, td, 1656 MACH_PORT_TYPE_RECEIVE)) == NULL) 1657 return MACH_RCV_PORT_DIED; 1658 1659@@ -552,7 +546,7 @@ mach_msg_recv(struct lwp *l, mach_msg_header_t *urm, int option, size_t recv_siz 1660 * If MACH_RCV_LARGE was not set, destroy the message. 1661 */ 1662 if ((option & MACH_RCV_LARGE) == 0) { 1663- free(mm->mm_msg, M_EMULDATA); 1664+ free(mm->mm_msg, M_MACH); 1665 mach_message_put_shlocked(mm); 1666 goto unlock; 1667 } 1668@@ -593,18 +587,18 @@ mach_msg_recv(struct lwp *l, mach_msg_header_t *urm, int option, size_t recv_siz 1669 */ 1670 bits = MACH_MSGH_LOCAL_BITS(mm->mm_msg->msgh_bits); 1671 mnp = &mm->mm_msg->msgh_local_port; 1672- mach_trade_rights(l, mm->mm_l, mnp, bits); 1673+ mach_trade_rights(td, mm->mm_l, mnp, bits); 1674 1675 bits = MACH_MSGH_REMOTE_BITS(mm->mm_msg->msgh_bits); 1676 mnp = &mm->mm_msg->msgh_remote_port; 1677- mach_trade_rights(l, mm->mm_l, mnp, bits); 1678+ mach_trade_rights(td, mm->mm_l, mnp, bits); 1679 1680 /* 1681 * The same operation must be done to all 1682 * port descriptors carried with the message. 1683 */ 1684 if ((mm->mm_msg->msgh_bits & MACH_MSGH_BITS_COMPLEX) && 1685- ((ret = mach_trade_rights_complex(l, mm)) != 0)) 1686+ ((ret = mach_trade_rights_complex(td, mm)) != 0)) 1687 goto unlock; 1688 1689 /* 1690@@ -631,7 +625,7 @@ mach_msg_recv(struct lwp *l, mach_msg_header_t *urm, int option, size_t recv_siz 1691 /* Dump the Mach message */ 1692 ktrmmsg((char *)mm->mm_msg, mm->mm_size); 1693 1694- free(mm->mm_msg, M_EMULDATA); 1695+ free(mm->mm_msg, M_MACH); 1696 mach_message_put_shlocked(mm); /* decrease mp_count */ 1697 unlock: 1698 rw_exit(&mp->mp_msglock); 1699@@ -641,7 +635,7 @@ unlock: 1700 1701 1702 int 1703-mach_sys_msg_trap(struct lwp *l, const struct mach_sys_msg_trap_args *uap, register_t *retval) 1704+mach_sys_msg_trap(struct thread *td, const struct mach_sys_msg_trap_args *uap) 1705 { 1706 /* { 1707 syscallarg(mach_msg_header_t *) msg; 1708@@ -654,42 +648,42 @@ mach_sys_msg_trap(struct lwp *l, const struct mach_sys_msg_trap_args *uap, regis 1709 } */ 1710 struct mach_sys_msg_overwrite_trap_args cup; 1711 1712- SCARG(&cup, msg) = SCARG(uap, msg); 1713- SCARG(&cup, option) = SCARG(uap, option); 1714- SCARG(&cup, send_size) = SCARG(uap, send_size); 1715- SCARG(&cup, rcv_size) = SCARG(uap, rcv_size); 1716- SCARG(&cup, rcv_name) = SCARG(uap, rcv_name); 1717- SCARG(&cup, timeout) = SCARG(uap, timeout); 1718- SCARG(&cup, notify) = SCARG(uap, notify); 1719- SCARG(&cup, rcv_msg) = NULL; 1720- SCARG(&cup, scatter_list_size) = 0; 1721- 1722- return mach_sys_msg_overwrite_trap(l, &cup, retval); 1723+ cup.msg = uap->msg; 1724+ cup.option = uap->option; 1725+ cup.send_size = uap->send_size; 1726+ cup.rcv_size = uap->rcv_size; 1727+ cup.rcv_name = uap->rcv_name; 1728+ cup.timeout = uap->timeout; 1729+ cup.notify = uap->notify; 1730+ cup.rcv_msg = NULL; 1731+ cup.scatter_list_size = 0; 1732+ 1733+ return mach_sys_msg_overwrite_trap(td, &cup); 1734 } 1735 1736-static inline struct lwp * 1737-mach_get_target_task(struct lwp *l, struct mach_port *mp) 1738+static inline struct thread * 1739+mach_get_target_task(struct thread *td, struct mach_port *mp) 1740 { 1741 struct proc *tp; 1742- struct lwp *tl; 1743+ struct thread *ttd; 1744 1745 switch (mp->mp_datatype) { 1746 case MACH_MP_PROC: 1747 tp = (struct proc *)mp->mp_data; 1748- tl = LIST_FIRST(&tp->p_lwps); 1749+ ttd = TAILQ_FIRST(&tp->p_threads); 1750 KASSERT(tl != NULL); 1751 break; 1752 1753 case MACH_MP_LWP: 1754- tl = (struct lwp *)mp->mp_data; 1755+ ttd = (struct thread *)mp->mp_data; 1756 break; 1757 1758 default: 1759- tl = l; 1760+ ttd = td; 1761 break; 1762 } 1763 1764- return tl; 1765+ return ttd; 1766 } 1767 1768 static inline void 1769@@ -726,7 +720,7 @@ mach_drop_rights(struct mach_right *mr, int bits) 1770 * namespace. 1771 */ 1772 static inline void 1773-mach_trade_rights(struct lwp *ll, struct lwp *rl, mach_port_t *mnp, int bits) 1774+mach_trade_rights(struct thread *tdl, struct thread *rl, mach_port_t *mnp, int bits) 1775 /* ll: local lwp (receiver, current lwp) */ 1776 /* rl: remote lwp (sender) */ 1777 /* mnp: pointer to the port name */ 1778@@ -794,7 +788,7 @@ mach_trade_rights(struct lwp *ll, struct lwp *rl, mach_port_t *mnp, int bits) 1779 * is not done yet. 1780 */ 1781 static inline int 1782-mach_trade_rights_complex(struct lwp *l, struct mach_message *mm) 1783+mach_trade_rights_complex(struct thread *td, struct mach_message *mm) 1784 { 1785 struct mach_complex_msg *mcm; 1786 unsigned int i, count; 1787@@ -828,7 +822,7 @@ mach_trade_rights_complex(struct lwp *l, struct mach_message *mm) 1788 break; 1789 1790 case MACH_MSG_OOL_PORTS_DESCRIPTOR: { /* XXX untested */ 1791- struct lwp *rl; /* remote LWP */ 1792+ struct thread *rl; /* remote LWP */ 1793 void *lumnp; /* local user address */ 1794 void *rumnp; /* remote user address */ 1795 int disp; /* disposition*/ 1796@@ -871,7 +865,7 @@ mach_trade_rights_complex(struct lwp *l, struct mach_message *mm) 1797 #endif 1798 /* FALLTHROUGH */ 1799 case MACH_MSG_OOL_DESCRIPTOR: { /* XXX untested */ 1800- struct lwp *rl; /* remote LWP */ 1801+ struct thread *rl; /* remote LWP */ 1802 void *ludata; /* local user address */ 1803 void *rudata; /* remote user address */ 1804 size_t size; /* data size */ 1805@@ -915,11 +909,11 @@ mach_trade_rights_complex(struct lwp *l, struct mach_message *mm) 1806 } 1807 1808 inline int 1809-mach_ool_copyin(struct lwp *l, const void *uaddr, void **kaddr, size_t size, int flags) 1810+mach_ool_copyin(struct thread *td, const void *uaddr, void **kaddr, size_t size, int flags) 1811 { 1812 int error; 1813 void *kbuf; 1814- struct proc *p = l->l_proc; 1815+ struct proc *p = td->td_proc; 1816 1817 /* 1818 * Sanity check OOL size to avoid DoS on malloc: useless once 1819@@ -932,13 +926,13 @@ mach_ool_copyin(struct lwp *l, const void *uaddr, void **kaddr, size_t size, int 1820 #endif 1821 1822 if (*kaddr == NULL) 1823- kbuf = malloc(size, M_EMULDATA, M_WAITOK); 1824+ kbuf = malloc(size, M_MACH, M_WAITOK); 1825 else 1826 kbuf = *kaddr; 1827 1828 if ((error = copyin_proc(p, uaddr, kbuf, size)) != 0) { 1829 if (*kaddr == NULL) 1830- free(kbuf, M_EMULDATA); 1831+ free(kbuf, M_MACH); 1832 return error; 1833 } 1834 1835@@ -952,11 +946,11 @@ mach_ool_copyin(struct lwp *l, const void *uaddr, void **kaddr, size_t size, int 1836 } 1837 1838 inline int 1839-mach_ool_copyout(struct lwp *l, const void *kaddr, void **uaddr, size_t size, int flags) 1840+mach_ool_copyout(struct thread *td, const void *kaddr, void **uaddr, size_t size, int flags) 1841 { 1842- vaddr_t ubuf; 1843+ vm_offset_t ubuf; 1844 int error = 0; 1845- struct proc *p = l->l_proc; 1846+ struct proc *p = td->td_proc; 1847 1848 /* 1849 * Sanity check OOL size to avoid DoS on malloc: useless once 1850@@ -971,12 +965,12 @@ mach_ool_copyout(struct lwp *l, const void *kaddr, void **uaddr, size_t size, in 1851 #endif 1852 1853 if (*uaddr == NULL) 1854- ubuf = (vaddr_t)vm_map_min(&p->p_vmspace->vm_map); 1855+ ubuf = (vm_offset_t)vm_map_min(&p->p_vmspace->vm_map); 1856 else 1857- ubuf = (vaddr_t)*uaddr; 1858+ ubuf = (vm_offset_t)*uaddr; 1859 1860 /* Never map anything at address zero: this is a red zone */ 1861- if (ubuf == (vaddr_t)NULL) 1862+ if (ubuf == (vm_offset_t)NULL) 1863 ubuf += PAGE_SIZE; 1864 1865 if ((error = uvm_map(&p->p_vmspace->vm_map, &ubuf, 1866@@ -995,7 +989,7 @@ mach_ool_copyout(struct lwp *l, const void *kaddr, void **uaddr, size_t size, in 1867 1868 out: 1869 if (flags & MACH_OOL_FREE) 1870- free(__UNCONST(kaddr), M_EMULDATA); /*XXXUNCONST*/ 1871+ free(__UNCONST(kaddr), M_MACH); /*XXXUNCONST*/ 1872 1873 if (error == 0) 1874 *uaddr = (void *)ubuf; 1875@@ -1110,7 +1104,7 @@ mach_message_init(void) 1876 } 1877 1878 struct mach_message * 1879-mach_message_get(mach_msg_header_t *msgh, size_t size, struct mach_port *mp, struct lwp *l) 1880+mach_message_get(mach_msg_header_t *msgh, size_t size, struct mach_port *mp, struct thread *td) 1881 { 1882 struct mach_message *mm; 1883 1884@@ -1180,7 +1174,7 @@ mach_message_put_exclocked(struct mach_message *mm) 1885 void 1886 mach_debug_message(void) 1887 { 1888- struct lwp *l; 1889+ struct thread *td; 1890 struct mach_emuldata *med; 1891 struct mach_right *mr; 1892 struct mach_right *mrs; 1893@@ -1188,14 +1182,14 @@ mach_debug_message(void) 1894 struct mach_message *mm; 1895 1896 LIST_FOREACH(l, &alllwp, l_list) { 1897- if ((l->l_proc->p_emul != &emul_mach) && 1898+ if ((td->td_proc->p_emul != &emul_mach) && 1899 #ifdef COMPAT_DARWIN 1900- (l->l_proc->p_emul != &emul_darwin) && 1901+ (td->td_proc->p_emul != &emul_darwin) && 1902 #endif 1903 1) 1904 continue; 1905 1906- med = l->l_proc->p_emuldata; 1907+ med = td->td_proc->p_emuldata; 1908 LIST_FOREACH(mr, &med->med_right, mr_list) 1909 if ((mr->mr_type & MACH_PORT_TYPE_PORT_SET) == 0) { 1910 mp = mr->mr_port; 1911diff --git a/sys/compat/mach/mach_message.h b/sys/compat/mach/mach_message.h 1912index 570a336..72f6836 100644 1913--- a/sys/compat/mach/mach_message.h 1914+++ b/sys/compat/mach/mach_message.h 1915@@ -1,4 +1,4 @@ 1916-/* $NetBSD: mach_message.h,v 1.30 2008/04/28 20:23:44 martin Exp $ */ 1917+/* $FreeBSD$ */ 1918 1919 /*- 1920 * Copyright (c) 2001-2003 The NetBSD Foundation, Inc. 1921@@ -223,8 +223,8 @@ struct mach_complex_msg { 1922 /* Kernel-private structures */ 1923 1924 struct mach_trap_args { 1925- struct lwp *l; /* Current task (doing the Mach system call) */ 1926- struct lwp *tl; /* Target task */ 1927+ struct thread *td; /* Current task (doing the Mach system call) */ 1928+ struct thread *ttd; /* Target task */ 1929 void *smsg; /* Sent message */ 1930 void *rmsg; /* Reply message */ 1931 size_t ssize; /* Sent message size */ 1932@@ -248,7 +248,7 @@ struct mach_message { 1933 TAILQ_ENTRY(mach_message) mm_list; 1934 /* List of pending messages */ 1935 struct mach_port *mm_port; /* The port on which msg is queued */ 1936- struct lwp *mm_l; /* The thread that sent it */ 1937+ struct thread *mm_l; /* The thread that sent it */ 1938 }; 1939 1940 /* Flags for mach_ool_copy{in|out} */ 1941@@ -256,16 +256,16 @@ struct mach_message { 1942 #define MACH_OOL_FREE 0x1 /* Free kernel buffer after copyout */ 1943 #define MACH_OOL_TRACE 0x2 /* ktrace OOL data */ 1944 1945-__inline int mach_ool_copyin(struct lwp *, const void *, void **, size_t, int); 1946-__inline int mach_ool_copyout(struct lwp *, const void *, void **, size_t, int); 1947-__inline void mach_set_trailer(void *, size_t); 1948-__inline void mach_set_header(void *, void *, size_t); 1949-__inline void mach_add_port_desc(void *, mach_port_name_t); 1950-__inline void mach_add_ool_ports_desc(void *, void *, int); 1951-__inline void mach_add_ool_desc(void *, void *, size_t); 1952+int mach_ool_copyin(struct thread *, const void *, void **, size_t, int); 1953+int mach_ool_copyout(struct thread *, const void *, void **, size_t, int); 1954+void mach_set_trailer(void *, size_t); 1955+void mach_set_header(void *, void *, size_t); 1956+void mach_add_port_desc(void *, mach_port_name_t); 1957+void mach_add_ool_ports_desc(void *, void *, int); 1958+void mach_add_ool_desc(void *, void *, size_t); 1959 void mach_message_init(void); 1960 struct mach_message *mach_message_get(mach_msg_header_t *, 1961- size_t, struct mach_port *, struct lwp *); 1962+ size_t, struct mach_port *, struct thread *); 1963 void mach_message_put(struct mach_message *); 1964 void mach_message_put_shlocked(struct mach_message *); 1965 void mach_message_put_exclocked(struct mach_message *); 1966diff --git a/sys/compat/mach/mach_misc.c b/sys/compat/mach/mach_misc.c 1967index 84f9c83..5df2eb1 100644 1968--- a/sys/compat/mach/mach_misc.c 1969+++ b/sys/compat/mach/mach_misc.c 1970@@ -1,5 +1,3 @@ 1971-/* $NetBSD: mach_misc.c,v 1.28 2008/04/28 20:23:44 martin Exp $ */ 1972- 1973 /*- 1974 * Copyright (c) 2001 The NetBSD Foundation, Inc. 1975 * All rights reserved. 1976@@ -36,7 +34,7 @@ 1977 */ 1978 1979 #include <sys/cdefs.h> 1980-__KERNEL_RCSID(0, "$NetBSD: mach_misc.c,v 1.28 2008/04/28 20:23:44 martin Exp $"); 1981+__FBSDID("$FreeBSD$"); 1982 1983 #include <sys/param.h> 1984 #include <sys/systm.h> 1985@@ -69,149 +67,135 @@ __KERNEL_RCSID(0, "$NetBSD: mach_misc.c,v 1.28 2008/04/28 20:23:44 martin Exp $" 1986 #include <sys/signalvar.h> 1987 1988 #include <netinet/in.h> 1989-#include <sys/syscallargs.h> 1990+#include <sys/sysproto.h> 1991 1992 #include <miscfs/specfs/specdev.h> 1993 1994 #include <compat/mach/mach_types.h> 1995 #include <compat/mach/mach_message.h> 1996 #include <compat/mach/mach_clock.h> 1997-#include <compat/mach/mach_syscallargs.h> 1998+#include <compat/mach/mach_proto.h> 1999 2000 2001 int 2002-mach_sys_semaphore_timedwait_trap(struct lwp *l, const struct mach_sys_semaphore_timedwait_trap_args *uap, register_t *retval) 2003+mach_sys_semaphore_timedwait_trap(struct thread *td, const struct mach_sys_semaphore_timedwait_trap_args *uap) 2004 { 2005 2006- *retval = 0; 2007 DPRINTF(("mach_sys_semaphore_timedwait_trap(0x%x, %d, %d);\n", 2008- SCARG(uap, wait_name), SCARG(uap, sec), SCARG(uap, nsec))); 2009+ uap->wait_name, uap->sec, uap->nsec)); 2010 return 0; 2011 } 2012 2013 2014 int 2015-mach_sys_semaphore_timedwait_signal_trap(struct lwp *l, const struct mach_sys_semaphore_timedwait_signal_trap_args *uap, register_t *retval) 2016+mach_sys_semaphore_timedwait_signal_trap(struct thread *td, const struct mach_sys_semaphore_timedwait_signal_trap_args *uap) 2017 { 2018 2019- *retval = 0; 2020 DPRINTF(( 2021 "mach_sys_semaphore_timedwait_signal_trap(0x%x, 0x%x, %d, %d);\n", 2022- SCARG(uap, wait_name), SCARG(uap, signal_name), SCARG(uap, sec), 2023- SCARG(uap, nsec))); 2024+ uap->wait_name, uap->signal_name, uap->sec, 2025+ uap->nsec)); 2026 return 0; 2027 } 2028 2029 2030 int 2031-mach_sys_init_process(struct lwp *l, const void *v, register_t *retval) 2032+mach_sys_init_process(struct thread *td, const void *v) 2033 { 2034- *retval = 0; 2035 DPRINTF(("mach_sys_init_process();\n")); 2036 return 0; 2037 } 2038 2039 2040 int 2041-mach_sys_pid_for_task(struct lwp *l, const struct mach_sys_pid_for_task_args *uap, register_t *retval) 2042+mach_sys_pid_for_task(struct thread *td, const struct mach_sys_pid_for_task_args *uap) 2043 { 2044 2045- *retval = 0; 2046 DPRINTF(("mach_sys_pid_for_task(0x%x, %p);\n", 2047- SCARG(uap, t), SCARG(uap, x))); 2048+ uap->t, uap->x)); 2049 return 0; 2050 } 2051 2052 2053 int 2054-mach_sys_macx_swapon(struct lwp *l, const struct mach_sys_macx_swapon_args *uap, register_t *retval) 2055+mach_sys_macx_swapon(struct thread *td, const struct mach_sys_macx_swapon_args *uap) 2056 { 2057 2058- *retval = 0; 2059 DPRINTF(("mach_sys_macx_swapon(%p, %d, %d, %d);\n", 2060- SCARG(uap, name), SCARG(uap, flags), SCARG(uap, size), 2061- SCARG(uap, priority))); 2062+ uap->name, uap->flags, uap->size, 2063+ uap->priority)); 2064 return 0; 2065 } 2066 2067 int 2068-mach_sys_macx_swapoff(struct lwp *l, const struct mach_sys_macx_swapoff_args *uap, register_t *retval) 2069+mach_sys_macx_swapoff(struct thread *td, const struct mach_sys_macx_swapoff_args *uap) 2070 { 2071 2072- *retval = 0; 2073 DPRINTF(("mach_sys_macx_swapoff(%p, %d);\n", 2074- SCARG(uap, name), SCARG(uap, flags))); 2075+ uap->name, uap->flags)); 2076 return 0; 2077 } 2078 2079 int 2080-mach_sys_macx_triggers(struct lwp *l, const struct mach_sys_macx_triggers_args *uap, register_t *retval) 2081+mach_sys_macx_triggers(struct thread *td, const struct mach_sys_macx_triggers_args *uap) 2082 { 2083 2084- *retval = 0; 2085 DPRINTF(("mach_sys_macx_triggers(%d, %d, %d, 0x%x);\n", 2086- SCARG(uap, hi_water), SCARG(uap, low_water), SCARG(uap, flags), 2087- SCARG(uap, alert_port))); 2088+ uap->hi_water, uap->low_water, uap->flags, 2089+ uap->alert_port)); 2090 return 0; 2091 } 2092 2093 2094 int 2095-mach_sys_wait_until(struct lwp *l, const struct mach_sys_wait_until_args *uap, register_t *retval) 2096+mach_sys_wait_until(struct thread *td, const struct mach_sys_wait_until_args *uap) 2097 { 2098 2099- *retval = 0; 2100- DPRINTF(("mach_sys_wait_until(%lld);\n", 2101- SCARG(uap, deadline))); 2102+ DPRINTF(("mach_sys_wait_until(%lld);\n", uap->deadline)); 2103 return 0; 2104 } 2105 2106 2107 int 2108-mach_sys_timer_create(struct lwp *l, const void *v, register_t *retval) 2109+mach_sys_timer_create(struct thread *td, const void *v) 2110 { 2111- *retval = 0; 2112 DPRINTF(("mach_sys_timer_create();\n")); 2113 return 0; 2114 } 2115 2116 2117 int 2118-mach_sys_timer_destroy(struct lwp *l, const struct mach_sys_timer_destroy_args *uap, register_t *retval) 2119+mach_sys_timer_destroy(struct thread *td, const struct mach_sys_timer_destroy_args *uap) 2120 { 2121 2122- *retval = 0; 2123- DPRINTF(("mach_sys_timer_destroy(0x%x);\n", SCARG(uap, name))); 2124+ DPRINTF(("mach_sys_timer_destroy(0x%x);\n", uap->name)); 2125 return 0; 2126 } 2127 2128 2129 int 2130-mach_sys_timer_arm(struct lwp *l, const struct mach_sys_timer_arm_args *uap, register_t *retval) 2131+mach_sys_timer_arm(struct thread *td, const struct mach_sys_timer_arm_args *uap) 2132 { 2133 2134- *retval = 0; 2135 DPRINTF(("mach_sys_timer_arm(0x%x, %d);\n", 2136- SCARG(uap, name), SCARG(uap, expire_time))); 2137+ uap->name, uap->expire_time)); 2138 return 0; 2139 } 2140 2141 2142 int 2143-mach_sys_timer_cancel(struct lwp *l, const struct mach_sys_timer_cancel_args *uap, register_t *retval) 2144+mach_sys_timer_cancel(struct thread *td, const struct mach_sys_timer_cancel_args *uap) 2145 { 2146 2147- *retval = 0; 2148 DPRINTF(("mach_sys_timer_cancel(0x%x, %p);\n", 2149- SCARG(uap, name), SCARG(uap, result_time))); 2150+ uap->name, uap->result_time)); 2151 return 0; 2152 } 2153 2154 2155 int 2156-mach_sys_get_time_base_info(struct lwp *l, const void *v, register_t *retval) 2157+mach_sys_get_time_base_info(struct thread *td, const void *v) 2158 { 2159- *retval = 0; 2160 DPRINTF(("mach_sys_get_time_base_info();\n")); 2161 return 0; 2162 } 2163diff --git a/sys/compat/mach/mach_notify.c b/sys/compat/mach/mach_notify.c 2164index 3f5f8fb..6017c9a 100644 2165--- a/sys/compat/mach/mach_notify.c 2166+++ b/sys/compat/mach/mach_notify.c 2167@@ -1,4 +1,4 @@ 2168-/* $NetBSD: mach_notify.c,v 1.20 2008/04/28 20:23:44 martin Exp $ */ 2169+/* $FreeBSD$ */ 2170 2171 /*- 2172 * Copyright (c) 2003 The NetBSD Foundation, Inc. 2173@@ -30,11 +30,11 @@ 2174 */ 2175 2176 #include <sys/cdefs.h> 2177-__KERNEL_RCSID(0, "$NetBSD: mach_notify.c,v 1.20 2008/04/28 20:23:44 martin Exp $"); 2178 2179 #include <sys/types.h> 2180 #include <sys/param.h> 2181 #include <sys/signal.h> 2182+#include <sys/systm.h> 2183 #include <sys/proc.h> 2184 #include <sys/malloc.h> 2185 2186@@ -46,7 +46,7 @@ __KERNEL_RCSID(0, "$NetBSD: mach_notify.c,v 1.20 2008/04/28 20:23:44 martin Exp 2187 #include <compat/mach/mach_services.h> 2188 2189 void 2190-mach_notify_port_destroyed(struct lwp *l, struct mach_right *mr) 2191+mach_notify_port_destroyed(struct thread *td, struct mach_right *mr) 2192 { 2193 struct mach_port *mp; 2194 mach_notify_port_destroyed_request_t *req; 2195@@ -65,7 +65,7 @@ mach_notify_port_destroyed(struct lwp *l, struct mach_right *mr) 2196 2197 MACH_PORT_REF(mp); 2198 2199- req = malloc(sizeof(*req), M_EMULDATA, M_WAITOK | M_ZERO); 2200+ req = malloc(sizeof(*req), M_MACH, M_WAITOK | M_ZERO); 2201 2202 req->req_msgh.msgh_bits = 2203 MACH_MSGH_REPLY_LOCAL_BITS(MACH_MSG_TYPE_MOVE_SEND_ONCE); 2204@@ -77,10 +77,10 @@ mach_notify_port_destroyed(struct lwp *l, struct mach_right *mr) 2205 2206 mach_set_trailer(req, sizeof(*req)); 2207 2208- (void)mach_message_get((mach_msg_header_t *)req, sizeof(*req), mp, l); 2209+ (void)mach_message_get((mach_msg_header_t *)req, sizeof(*req), mp, td); 2210 #ifdef DEBUG_MACH_MSG 2211 printf("pid %d: message queued on port %p (%d) [%p]\n", 2212- l->l_proc->p_pid, mp, req->req_msgh.msgh_id, 2213+ td->td_proc->p_pid, mp, req->req_msgh.msgh_id, 2214 mp->mp_recv->mr_sethead); 2215 #endif 2216 wakeup(mp->mp_recv->mr_sethead); 2217@@ -91,7 +91,7 @@ mach_notify_port_destroyed(struct lwp *l, struct mach_right *mr) 2218 } 2219 2220 void 2221-mach_notify_port_no_senders(struct lwp *l, struct mach_right *mr) 2222+mach_notify_port_no_senders(struct thread *td, struct mach_right *mr) 2223 { 2224 struct mach_port *mp; 2225 mach_notify_port_no_senders_request_t *req; 2226@@ -113,7 +113,7 @@ mach_notify_port_no_senders(struct lwp *l, struct mach_right *mr) 2227 if ((int)mp->mp_data >= mr->mr_refcount) 2228 goto out; 2229 2230- req = malloc(sizeof(*req), M_EMULDATA, M_WAITOK | M_ZERO); 2231+ req = malloc(sizeof(*req), M_MACH, M_WAITOK | M_ZERO); 2232 2233 req->req_msgh.msgh_bits = 2234 MACH_MSGH_REPLY_LOCAL_BITS(MACH_MSG_TYPE_MOVE_SEND_ONCE); 2235@@ -124,10 +124,10 @@ mach_notify_port_no_senders(struct lwp *l, struct mach_right *mr) 2236 2237 mach_set_trailer(req, sizeof(*req)); 2238 2239- (void)mach_message_get((mach_msg_header_t *)req, sizeof(*req), mp, l); 2240+ (void)mach_message_get((mach_msg_header_t *)req, sizeof(*req), mp, td); 2241 #ifdef DEBUG_MACH_MSG 2242 printf("pid %d: message queued on port %p (%d) [%p]\n", 2243- l->l_proc->p_pid, mp, req->req_msgh.msgh_id, 2244+ td->td_proc->p_pid, mp, req->req_msgh.msgh_id, 2245 mp->mp_recv->mr_sethead); 2246 #endif 2247 wakeup(mp->mp_recv->mr_sethead); 2248@@ -138,7 +138,7 @@ out: 2249 } 2250 2251 void 2252-mach_notify_port_dead_name(struct lwp *l, struct mach_right *mr) 2253+mach_notify_port_dead_name(struct thread *td, struct mach_right *mr) 2254 { 2255 struct mach_port *mp; 2256 mach_notify_port_dead_name_request_t *req; 2257@@ -156,7 +156,7 @@ mach_notify_port_dead_name(struct lwp *l, struct mach_right *mr) 2258 #endif 2259 MACH_PORT_REF(mp); 2260 2261- req = malloc(sizeof(*req), M_EMULDATA, M_WAITOK | M_ZERO); 2262+ req = malloc(sizeof(*req), M_MACH, M_WAITOK | M_ZERO); 2263 2264 req->req_msgh.msgh_bits = 2265 MACH_MSGH_REPLY_LOCAL_BITS(MACH_MSG_TYPE_MOVE_SEND_ONCE); 2266@@ -169,10 +169,10 @@ mach_notify_port_dead_name(struct lwp *l, struct mach_right *mr) 2267 2268 mr->mr_refcount++; 2269 2270- (void)mach_message_get((mach_msg_header_t *)req, sizeof(*req), mp, l); 2271+ (void)mach_message_get((mach_msg_header_t *)req, sizeof(*req), mp, td); 2272 #ifdef DEBUG_MACH_MSG 2273 printf("pid %d: message queued on port %p (%d) [%p]\n", 2274- l->l_proc->p_pid, mp, req->req_msgh.msgh_id, 2275+ td->td_proc->p_pid, mp, req->req_msgh.msgh_id, 2276 mp->mp_recv->mr_sethead); 2277 #endif 2278 wakeup(mp->mp_recv->mr_sethead); 2279diff --git a/sys/compat/mach/mach_notify.h b/sys/compat/mach/mach_notify.h 2280index 06b2bd4..a413854 100644 2281--- a/sys/compat/mach/mach_notify.h 2282+++ b/sys/compat/mach/mach_notify.h 2283@@ -1,4 +1,4 @@ 2284-/* $NetBSD: mach_notify.h,v 1.10 2008/04/28 20:23:44 martin Exp $ */ 2285+/* $FreeBSD$ */ 2286 2287 /*- 2288 * Copyright (c) 2003 The NetBSD Foundation, Inc. 2289@@ -71,9 +71,9 @@ typedef struct { 2290 mach_msg_trailer_t req_trailer; 2291 } mach_notify_port_dead_name_request_t; 2292 2293-void mach_notify_port_destroyed(struct lwp *, struct mach_right *); 2294-void mach_notify_port_no_senders(struct lwp *, struct mach_right *); 2295-void mach_notify_port_dead_name(struct lwp *, struct mach_right *); 2296+void mach_notify_port_destroyed(struct thread *, struct mach_right *); 2297+void mach_notify_port_no_senders(struct thread *, struct mach_right *); 2298+void mach_notify_port_dead_name(struct thread *, struct mach_right *); 2299 2300 #endif /* _MACH_NOTIFICATION_H_ */ 2301 2302diff --git a/sys/compat/mach/mach_port.c b/sys/compat/mach/mach_port.c 2303index a891600..0b0efc9 100644 2304--- a/sys/compat/mach/mach_port.c 2305+++ b/sys/compat/mach/mach_port.c 2306@@ -1,5 +1,3 @@ 2307-/* $NetBSD: mach_port.c,v 1.66 2009/03/18 16:00:17 cegger Exp $ */ 2308- 2309 /*- 2310 * Copyright (c) 2002-2003 The NetBSD Foundation, Inc. 2311 * All rights reserved. 2312@@ -9,12 +7,12 @@ 2313 * 2314 * Redistribution and use in source and binary forms, with or without 2315 * modification, are permitted provided that the following conditions 2316- * are met: 2317- * 1. Redistributions of source code must retain the above copyright 2318- * notice, this list of conditions and the following disclaimer. 2319- * 2. Redistributions in binary form must reproduce the above copyright 2320- * notice, this list of conditions and the following disclaimer in the 2321- * documentation and/or other materials provided with the distribution. 2322+ * are met: 1. Redistributions of source code must retain the above 2323+ * copyright notice, this list of conditions and the following 2324+ * disclaimer. 2. Redistributions in binary form must reproduce the 2325+ * above copyright notice, this list of conditions and the following 2326+ * disclaimer in the documentation and/or other materials provided 2327+ * with the distribution. 2328 * 2329 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 2330 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 2331@@ -29,10 +27,8 @@ 2332 * POSSIBILITY OF SUCH DAMAGE. 2333 */ 2334 2335-#include "opt_compat_darwin.h" 2336- 2337 #include <sys/cdefs.h> 2338-__KERNEL_RCSID(0, "$NetBSD: mach_port.c,v 1.66 2009/03/18 16:00:17 cegger Exp $"); 2339+__FBSDID("$FreeBSD$"); 2340 2341 #include <sys/types.h> 2342 #include <sys/param.h> 2343@@ -52,7 +48,7 @@ __KERNEL_RCSID(0, "$NetBSD: mach_port.c,v 1.66 2009/03/18 16:00:17 cegger Exp $" 2344 #include <compat/mach/mach_errno.h> 2345 #include <compat/mach/mach_notify.h> 2346 #include <compat/mach/mach_services.h> 2347-#include <compat/mach/mach_syscallargs.h> 2348+#include <compat/mach/mach_proto.h> 2349 2350 #ifdef COMPAT_DARWIN 2351 #include <compat/darwin/darwin_exec.h> 2352@@ -68,53 +64,53 @@ struct mach_port *mach_io_master_port; 2353 struct mach_port *mach_saved_bootstrap_port; 2354 2355 int 2356-mach_sys_reply_port(struct lwp *l, const void *v, register_t *retval) 2357+mach_sys_reply_port(struct thread *td, const void *v) 2358 { 2359 struct mach_right *mr; 2360 2361- mr = mach_right_get(mach_port_get(), l, MACH_PORT_TYPE_RECEIVE, 0); 2362- *retval = (register_t)mr->mr_name; 2363+ mr = mach_right_get(mach_port_get(), td, MACH_PORT_TYPE_RECEIVE, 0); 2364+ td->td_retval[0] = (register_t)mr->mr_name; 2365 2366 return 0; 2367 } 2368 2369 int 2370-mach_sys_thread_self_trap(struct lwp *l, const void *v, register_t *retval) 2371+mach_sys_thread_self_trap(struct thread *td, const void *v) 2372 { 2373 struct mach_lwp_emuldata *mle; 2374 struct mach_right *mr; 2375 2376 mle = l->l_emuldata; 2377- mr = mach_right_get(mle->mle_kernel, l, MACH_PORT_TYPE_SEND, 0); 2378- *retval = (register_t)mr->mr_name; 2379+ mr = mach_right_get(mle->mle_kernel, td, MACH_PORT_TYPE_SEND, 0); 2380+ td->td_retval[0] = (register_t)mr->mr_name; 2381 2382 return 0; 2383 } 2384 2385 2386 int 2387-mach_sys_task_self_trap(struct lwp *l, const void *v, register_t *retval) 2388+mach_task_self_trap(struct thread *td, const void *v) 2389 { 2390 struct mach_emuldata *med; 2391 struct mach_right *mr; 2392 2393- med = (struct mach_emuldata *)l->l_proc->p_emuldata; 2394- mr = mach_right_get(med->med_kernel, l, MACH_PORT_TYPE_SEND, 0); 2395- *retval = (register_t)mr->mr_name; 2396+ med = (struct mach_emuldata *)td->td_proc->p_emuldata; 2397+ mr = mach_right_get(med->med_kernel, td, MACH_PORT_TYPE_SEND, 0); 2398+ td->td_retval[0] = (register_t)mr->mr_name; 2399 2400 return 0; 2401 } 2402 2403 2404 int 2405-mach_sys_host_self_trap(struct lwp *l, const void *v, register_t *retval) 2406+mach_sys_host_self_trap(struct thread *td, const void *v) 2407 { 2408 struct mach_emuldata *med; 2409 struct mach_right *mr; 2410 2411- med = (struct mach_emuldata *)l->l_proc->p_emuldata; 2412- mr = mach_right_get(med->med_host, l, MACH_PORT_TYPE_SEND, 0); 2413- *retval = (register_t)mr->mr_name; 2414+ med = (struct mach_emuldata *)td->td_proc->p_emuldata; 2415+ mr = mach_right_get(med->med_host, td, MACH_PORT_TYPE_SEND, 0); 2416+ td->td_retval[0] = (register_t)mr->mr_name; 2417 2418 return 0; 2419 } 2420@@ -125,12 +121,12 @@ mach_port_deallocate(struct mach_trap_args *args) 2421 mach_port_deallocate_request_t *req = args->smsg; 2422 mach_port_deallocate_reply_t *rep = args->rmsg; 2423 size_t *msglen = args->rsize; 2424- struct lwp *l = args->l; 2425+ struct thread *td = args->td; 2426 mach_port_t mn; 2427 struct mach_right *mr; 2428 2429 mn = req->req_name; 2430- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_REF_RIGHTS)) != NULL) 2431+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_REF_RIGHTS)) != NULL) 2432 mach_right_put(mr, MACH_PORT_TYPE_REF_RIGHTS); 2433 2434 *msglen = sizeof(*rep); 2435@@ -149,7 +145,7 @@ mach_port_destroy(struct mach_trap_args *args) 2436 mach_port_destroy_request_t *req = args->smsg; 2437 mach_port_destroy_reply_t *rep = args->rmsg; 2438 size_t *msglen = args->rsize; 2439- struct lwp *l = args->l; 2440+ struct thread *td = args->td; 2441 mach_port_t mn; 2442 struct mach_right *mr; 2443 2444@@ -158,7 +154,7 @@ mach_port_destroy(struct mach_trap_args *args) 2445 #endif 2446 mn = req->req_name; 2447 if ((mr = mach_right_check(mn, 2448- l, MACH_PORT_TYPE_ALL_RIGHTS)) != NULL) { 2449+ td, MACH_PORT_TYPE_ALL_RIGHTS)) != NULL) { 2450 MACH_PORT_UNREF(mr->mr_port); 2451 mr->mr_port = NULL; 2452 mach_right_put(mr, MACH_PORT_TYPE_ALL_RIGHTS); 2453@@ -180,22 +176,22 @@ mach_port_allocate(struct mach_trap_args *args) 2454 mach_port_allocate_request_t *req = args->smsg; 2455 mach_port_allocate_reply_t *rep = args->rmsg; 2456 size_t *msglen = args->rsize; 2457- struct lwp *l = args->l; 2458+ struct thread *td = args->td; 2459 struct mach_right *mr; 2460 struct mach_port *mp; 2461 2462 switch (req->req_right) { 2463 case MACH_PORT_RIGHT_RECEIVE: 2464 mp = mach_port_get(); 2465- mr = mach_right_get(mp, l, MACH_PORT_TYPE_RECEIVE, 0); 2466+ mr = mach_right_get(mp, td, MACH_PORT_TYPE_RECEIVE, 0); 2467 break; 2468 2469 case MACH_PORT_RIGHT_DEAD_NAME: 2470- mr = mach_right_get(NULL, l, MACH_PORT_TYPE_DEAD_NAME, 0); 2471+ mr = mach_right_get(NULL, td, MACH_PORT_TYPE_DEAD_NAME, 0); 2472 break; 2473 2474 case MACH_PORT_RIGHT_PORT_SET: 2475- mr = mach_right_get(NULL, l, MACH_PORT_TYPE_PORT_SET, 0); 2476+ mr = mach_right_get(NULL, td, MACH_PORT_TYPE_PORT_SET, 0); 2477 break; 2478 2479 default: 2480@@ -222,7 +218,7 @@ mach_port_insert_right(struct mach_trap_args *args) 2481 mach_port_insert_right_request_t *req = args->smsg; 2482 mach_port_insert_right_reply_t *rep = args->rmsg; 2483 size_t *msglen = args->rsize; 2484- struct lwp *l = args->l; 2485+ struct thread *td = args->td; 2486 mach_port_t name; 2487 mach_port_t right; 2488 struct mach_right *mr; 2489@@ -232,7 +228,7 @@ mach_port_insert_right(struct mach_trap_args *args) 2490 right = req->req_poly.name; 2491 nmr = NULL; 2492 2493- mr = mach_right_check(right, l, MACH_PORT_TYPE_ALL_RIGHTS); 2494+ mr = mach_right_check(right, td, MACH_PORT_TYPE_ALL_RIGHTS); 2495 if (mr == NULL) 2496 return mach_msg_error(args, EPERM); 2497 2498@@ -241,18 +237,18 @@ mach_port_insert_right(struct mach_trap_args *args) 2499 case MACH_MSG_TYPE_MOVE_SEND: 2500 case MACH_MSG_TYPE_COPY_SEND: 2501 nmr = mach_right_get(mr->mr_port, 2502- l, MACH_PORT_TYPE_SEND, name); 2503+ td, MACH_PORT_TYPE_SEND, name); 2504 break; 2505 2506 case MACH_MSG_TYPE_MAKE_SEND_ONCE: 2507 case MACH_MSG_TYPE_MOVE_SEND_ONCE: 2508 nmr = mach_right_get(mr->mr_port, 2509- l, MACH_PORT_TYPE_SEND_ONCE, name); 2510+ td, MACH_PORT_TYPE_SEND_ONCE, name); 2511 break; 2512 2513 case MACH_MSG_TYPE_MOVE_RECEIVE: 2514 nmr = mach_right_get(mr->mr_port, 2515- l, MACH_PORT_TYPE_RECEIVE, name); 2516+ td, MACH_PORT_TYPE_RECEIVE, name); 2517 break; 2518 2519 default: 2520@@ -277,12 +273,12 @@ mach_port_type(struct mach_trap_args *args) 2521 mach_port_type_request_t *req = args->smsg; 2522 mach_port_type_reply_t *rep = args->rmsg; 2523 size_t *msglen = args->rsize; 2524- struct lwp *l = args->l; 2525+ struct thread *td = args->td; 2526 mach_port_t mn; 2527 struct mach_right *mr; 2528 2529 mn = req->req_name; 2530- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 2531+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 2532 return mach_msg_error(args, EPERM); 2533 2534 *msglen = sizeof(*rep); 2535@@ -336,7 +332,7 @@ mach_port_get_attributes(struct mach_trap_args *args) 2536 mach_port_get_attributes_request_t *req = args->smsg; 2537 mach_port_get_attributes_reply_t *rep = args->rmsg; 2538 size_t *msglen = args->rsize; 2539- struct lwp *l = args->l; 2540+ struct thread *td = args->td; 2541 mach_port_t mn; 2542 struct mach_right *mr; 2543 2544@@ -345,7 +341,7 @@ mach_port_get_attributes(struct mach_trap_args *args) 2545 return mach_msg_error(args, EINVAL); 2546 2547 mn = req->req_msgh.msgh_remote_port; 2548- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 2549+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 2550 return mach_msg_error(args, EPERM); 2551 2552 switch (req->req_flavor) { 2553@@ -440,18 +436,18 @@ mach_port_move_member(struct mach_trap_args *args) 2554 mach_port_move_member_request_t *req = args->smsg; 2555 mach_port_move_member_reply_t *rep = args->rmsg; 2556 size_t *msglen = args->rsize; 2557- struct lwp *l = args->l; 2558- struct mach_emuldata *med = l->l_proc->p_emuldata; 2559+ struct thread *td = args->td; 2560+ struct mach_emuldata *med = td->td_proc->p_emuldata; 2561 mach_port_t member = req->req_member; 2562 mach_port_t after = req->req_after; 2563 struct mach_right *mrr; 2564 struct mach_right *mrs; 2565 2566- mrr = mach_right_check(member, l, MACH_PORT_TYPE_RECEIVE); 2567+ mrr = mach_right_check(member, td, MACH_PORT_TYPE_RECEIVE); 2568 if (mrr == NULL) 2569 return mach_msg_error(args, EPERM); 2570 2571- mrs = mach_right_check(after, l, MACH_PORT_TYPE_PORT_SET); 2572+ mrs = mach_right_check(after, td, MACH_PORT_TYPE_PORT_SET); 2573 if (mrs == NULL) 2574 return mach_msg_error(args, EPERM); 2575 2576@@ -482,7 +478,7 @@ mach_port_request_notification(struct mach_trap_args *args) 2577 { 2578 mach_port_request_notification_request_t *req = args->smsg; 2579 mach_port_request_notification_reply_t *rep = args->rmsg; 2580- struct lwp *l = args->l; 2581+ struct thread *td = args->td; 2582 size_t *msglen = args->rsize; 2583 mach_port_t mn; 2584 struct mach_right *nmr; 2585@@ -495,11 +491,11 @@ mach_port_request_notification(struct mach_trap_args *args) 2586 req->req_notify.name, mn = req->req_name); 2587 #endif 2588 mn = req->req_notify.name; 2589- if ((nmr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 2590+ if ((nmr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 2591 return mach_msg_error(args, EINVAL); 2592 2593 mn = req->req_name; 2594- if ((tmr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 2595+ if ((tmr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 2596 return mach_msg_error(args, EINVAL); 2597 2598 #ifdef DEBUG_MACH 2599@@ -516,13 +512,13 @@ mach_port_request_notification(struct mach_trap_args *args) 2600 case MACH_NOTIFY_DESTROYED_MSGID: 2601 oldnmr = tmr->mr_notify_destroyed; 2602 tmr->mr_notify_destroyed = mach_right_get(nmr->mr_port, 2603- l, MACH_PORT_TYPE_SEND_ONCE, req->req_notify.name); 2604+ td, MACH_PORT_TYPE_SEND_ONCE, req->req_notify.name); 2605 break; 2606 2607 case MACH_NOTIFY_NO_SENDERS_MSGID: 2608 oldnmr = tmr->mr_notify_no_senders; 2609 tmr->mr_notify_no_senders = mach_right_get(nmr->mr_port, 2610- l, MACH_PORT_TYPE_SEND_ONCE, req->req_notify.name); 2611+ td, MACH_PORT_TYPE_SEND_ONCE, req->req_notify.name); 2612 tmr->mr_notify_no_senders->mr_port->mp_datatype = 2613 MACH_MP_NOTIFY_SYNC; 2614 tmr->mr_notify_no_senders->mr_port->mp_data = (void *) 2615@@ -532,7 +528,7 @@ mach_port_request_notification(struct mach_trap_args *args) 2616 case MACH_NOTIFY_DEAD_NAME_MSGID: 2617 oldnmr = tmr->mr_notify_dead_name; 2618 tmr->mr_notify_dead_name = mach_right_get(nmr->mr_port, 2619- l, MACH_PORT_TYPE_SEND_ONCE, req->req_notify.name); 2620+ td, MACH_PORT_TYPE_SEND_ONCE, req->req_notify.name); 2621 break; 2622 2623 case MACH_NOTIFY_SEND_ONCE_MSGID: 2624@@ -566,13 +562,13 @@ mach_port_get_refs(struct mach_trap_args *args) 2625 mach_port_get_refs_request_t *req = args->smsg; 2626 mach_port_get_refs_reply_t *rep = args->rmsg; 2627 size_t *msglen = args->rsize; 2628- struct lwp *l = args->l; 2629+ struct thread *td = args->td; 2630 mach_port_t mn; 2631 struct mach_right *mr; 2632 mach_port_right_t right = req->req_right; 2633 2634 mn = req->req_name; 2635- if ((mr = mach_right_check(mn, l, right)) == NULL) 2636+ if ((mr = mach_right_check(mn, td, right)) == NULL) 2637 return mach_msg_error(args, EINVAL); 2638 2639 *msglen = sizeof(*rep); 2640@@ -593,13 +589,13 @@ mach_port_mod_refs(struct mach_trap_args *args) 2641 mach_port_mod_refs_reply_t *rep = args->rmsg; 2642 size_t *msglen = args->rsize; 2643 #if 0 2644- struct lwp *l = args->l; 2645+ struct thread *td = args->td; 2646 mach_port_t mn; 2647 struct mach_right *mr; 2648 mach_port_right_t right = req->req_right; 2649 2650 mn = req->req_name; 2651- if ((mr = mach_right_check(mn, l, right)) == NULL) 2652+ if ((mr = mach_right_check(mn, td, right)) == NULL) 2653 return mach_msg_error(args, EINVAL); 2654 2655 /* 2656@@ -680,7 +676,7 @@ mach_port_put(struct mach_port *mp) 2657 rw_destroy(&mp->mp_msglock); 2658 2659 if (mp->mp_flags & MACH_MP_DATA_ALLOCATED) 2660- free(mp->mp_data, M_EMULDATA); 2661+ free(mp->mp_data, M_MACH); 2662 2663 pool_put(&mach_port_pool, mp); 2664 2665@@ -688,7 +684,7 @@ mach_port_put(struct mach_port *mp) 2666 } 2667 2668 struct mach_right * 2669-mach_right_get(struct mach_port *mp, struct lwp *l, int type, mach_port_t hint) 2670+mach_right_get(struct mach_port *mp, struct thread *td, int type, mach_port_t hint) 2671 { 2672 struct mach_right *mr; 2673 struct mach_emuldata *med; 2674@@ -698,7 +694,7 @@ mach_right_get(struct mach_port *mp, struct lwp *l, int type, mach_port_t hint) 2675 if (type == 0) 2676 uprintf("mach_right_get: right = 0\n"); 2677 #endif 2678- med = (struct mach_emuldata *)l->l_proc->p_emuldata; 2679+ med = (struct mach_emuldata *)td->td_proc->p_emuldata; 2680 2681 if (mp != NULL) 2682 MACH_PORT_REF(mp); 2683@@ -888,7 +884,7 @@ mach_right_put_exclocked(struct mach_right *mr, int right) 2684 * Check that a process has a given right. 2685 */ 2686 struct mach_right * 2687-mach_right_check(mach_port_t mn, struct lwp *l, int type) 2688+mach_right_check(mach_port_t mn, struct thread *td, int type) 2689 { 2690 struct mach_right *cmr; 2691 struct mach_emuldata *med; 2692@@ -896,7 +892,7 @@ mach_right_check(mach_port_t mn, struct lwp *l, int type) 2693 if ((mn == 0) || (mn == -1) || (l == NULL)) 2694 return NULL; 2695 2696- med = (struct mach_emuldata *)l->l_proc->p_emuldata; 2697+ med = (struct mach_emuldata *)td->td_proc->p_emuldata; 2698 2699 rw_enter(&med->med_rightlock, RW_READER); 2700 2701@@ -925,13 +921,13 @@ mach_right_check(mach_port_t mn, struct lwp *l, int type) 2702 * Right lists should be locked. 2703 */ 2704 mach_port_t 2705-mach_right_newname(struct lwp *l, mach_port_t hint) 2706+mach_right_newname(struct thread *td, mach_port_t hint) 2707 { 2708 struct mach_emuldata *med; 2709 struct mach_right *mr; 2710 mach_port_t newname = -1; 2711 2712- med = l->l_proc->p_emuldata; 2713+ med = td->td_proc->p_emuldata; 2714 2715 if (hint == 0) 2716 hint = med->med_nextright; 2717diff --git a/sys/compat/mach/mach_port.h b/sys/compat/mach/mach_port.h 2718index 8399791..4c9cb6b 100644 2719--- a/sys/compat/mach/mach_port.h 2720+++ b/sys/compat/mach/mach_port.h 2721@@ -1,4 +1,4 @@ 2722-/* $NetBSD: mach_port.h,v 1.40 2008/04/28 20:23:44 martin Exp $ */ 2723+/* $FreeBSD$ */ 2724 2725 /*- 2726 * Copyright (c) 2002-2003 The NetBSD Foundation, Inc. 2727@@ -31,6 +31,8 @@ 2728 2729 #ifndef _MACH_PORT_H_ 2730 #define _MACH_PORT_H_ 2731+#include <sys/lock.h> 2732+#include <sys/rwlock.h> 2733 2734 #define MACH_PORT_REF(mp) (mp)->mp_refcount++ 2735 #define MACH_PORT_UNREF(mp) if (--(mp)->mp_refcount <= 0) mach_port_put(mp) 2736@@ -294,7 +296,7 @@ extern struct mach_port *mach_saved_bootstrap_port; 2737 /* In-kernel Mach port right description */ 2738 struct mach_right { 2739 mach_port_t mr_name; /* The right name */ 2740- struct lwp *mr_lwp; /* points back to struct lwp */ 2741+ struct thread *mr_lwp; /* points back to struct thread */ 2742 int mr_type; /* right type (recv, send, sendonce) */ 2743 LIST_ENTRY(mach_right) mr_list; /* Right list for a process */ 2744 int mr_refcount; /* Reference count */ 2745@@ -314,13 +316,13 @@ struct mach_right { 2746 struct mach_right *mr_sethead; /* Points back to right set */ 2747 }; 2748 2749-mach_port_t mach_right_newname(struct lwp *, mach_port_t); 2750+mach_port_t mach_right_newname(struct thread *, mach_port_t); 2751 struct mach_right *mach_right_get(struct mach_port *, 2752- struct lwp *, int, mach_port_t); 2753+ struct thread *, int, mach_port_t); 2754 void mach_right_put(struct mach_right *, int); 2755 void mach_right_put_shlocked(struct mach_right *, int); 2756 void mach_right_put_exclocked(struct mach_right *, int); 2757-struct mach_right *mach_right_check(mach_port_t, struct lwp *, int); 2758+struct mach_right *mach_right_check(mach_port_t, struct thread *, int); 2759 2760 /* In-kernel Mach port description */ 2761 struct mach_port { 2762@@ -328,7 +330,7 @@ struct mach_port { 2763 int mp_count; /* Count of queued messages */ 2764 TAILQ_HEAD(mp_msglist, /* Queue pending messages */ 2765 mach_message) mp_msglist; 2766- krwlock_t mp_msglock; /* Lock for the queue */ 2767+ struct rwlock mp_msglock; /* Lock for the queue */ 2768 int mp_refcount; /* Reference count */ 2769 int mp_flags; /* Flags, see below */ 2770 int mp_datatype; /* Type of field mp_data, see below */ 2771@@ -341,7 +343,7 @@ struct mach_port { 2772 2773 /* mp_datatype for struct mach_port */ 2774 #define MACH_MP_NONE 0x0 /* No data */ 2775-#define MACH_MP_LWP 0x1 /* (struct lwp *) */ 2776+#define MACH_MP_LWP 0x1 /* (struct thread *) */ 2777 #define MACH_MP_DEVICE_ITERATOR 0x2 /* (struct mach_device_iterator *) */ 2778 #define MACH_MP_IOKIT_DEVCLASS 0x3 /* (struct mach_iokit_devclass *) */ 2779 #define MACH_MP_PROC 0x4 /* (struct proc *) */ 2780@@ -354,7 +356,7 @@ void mach_port_init(void); 2781 struct mach_port *mach_port_get(void); 2782 void mach_port_put(struct mach_port *); 2783 void mach_remove_recvport(struct mach_port *); 2784-void mach_add_recvport(struct mach_port *, struct lwp *); 2785+void mach_add_recvport(struct mach_port *, struct thread *); 2786 int mach_port_check(struct mach_port *); 2787 #ifdef DEBUG_MACH 2788 void mach_debug_port(void); 2789diff --git a/sys/compat/mach/mach_proto.h b/sys/compat/mach/mach_proto.h 2790new file mode 100644 2791index 0000000..f19ee38 2792--- /dev/null 2793+++ b/sys/compat/mach/mach_proto.h 2794@@ -0,0 +1,276 @@ 2795+/* 2796+ * System call prototypes. 2797+ * 2798+ * DO NOT EDIT-- this file is automatically generated. 2799+ * $FreeBSD$ 2800+ * created from FreeBSD 2801+ */ 2802+ 2803+#ifndef _MACH_SYSPROTO_H_ 2804+#define _MACH_SYSPROTO_H_ 2805+ 2806+#include <sys/signal.h> 2807+#include <sys/acl.h> 2808+#include <sys/cpuset.h> 2809+#include <sys/_ffcounter.h> 2810+#include <sys/_semaphore.h> 2811+#include <sys/ucontext.h> 2812+#include <sys/wait.h> 2813+ 2814+#include <bsm/audit_kevents.h> 2815+ 2816+struct proc; 2817+ 2818+struct thread; 2819+ 2820+#define PAD_(t) (sizeof(register_t) <= sizeof(t) ? \ 2821+ 0 : sizeof(register_t) - sizeof(t)) 2822+ 2823+#if BYTE_ORDER == LITTLE_ENDIAN 2824+#define PADL_(t) 0 2825+#define PADR_(t) PAD_(t) 2826+#else 2827+#define PADL_(t) PAD_(t) 2828+#define PADR_(t) 0 2829+#endif 2830+ 2831+#if defined(_KERNEL_OPT) 2832+#endif 2833+struct mach_reply_port_args { 2834+ register_t dummy; 2835+}; 2836+struct mach_thread_self_trap_args { 2837+ register_t dummy; 2838+}; 2839+struct mach_task_self_trap_args { 2840+ register_t dummy; 2841+}; 2842+struct mach_host_self_trap_args { 2843+ register_t dummy; 2844+}; 2845+struct mach_msg_trap_args { 2846+ char msg_l_[PADL_(mach_msg_header_t *)]; mach_msg_header_t * msg; char msg_r_[PADR_(mach_msg_header_t *)]; 2847+ char option_l_[PADL_(mach_msg_option_t)]; mach_msg_option_t option; char option_r_[PADR_(mach_msg_option_t)]; 2848+ char send_size_l_[PADL_(mach_msg_size_t)]; mach_msg_size_t send_size; char send_size_r_[PADR_(mach_msg_size_t)]; 2849+ char rcv_size_l_[PADL_(mach_msg_size_t)]; mach_msg_size_t rcv_size; char rcv_size_r_[PADR_(mach_msg_size_t)]; 2850+ char rcv_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t rcv_name; char rcv_name_r_[PADR_(mach_port_name_t)]; 2851+ char timeout_l_[PADL_(mach_msg_timeout_t)]; mach_msg_timeout_t timeout; char timeout_r_[PADR_(mach_msg_timeout_t)]; 2852+ char notify_l_[PADL_(mach_port_name_t)]; mach_port_name_t notify; char notify_r_[PADR_(mach_port_name_t)]; 2853+}; 2854+struct mach_msg_overwrite_trap_args { 2855+ char msg_l_[PADL_(mach_msg_header_t *)]; mach_msg_header_t * msg; char msg_r_[PADR_(mach_msg_header_t *)]; 2856+ char option_l_[PADL_(mach_msg_option_t)]; mach_msg_option_t option; char option_r_[PADR_(mach_msg_option_t)]; 2857+ char send_size_l_[PADL_(mach_msg_size_t)]; mach_msg_size_t send_size; char send_size_r_[PADR_(mach_msg_size_t)]; 2858+ char rcv_size_l_[PADL_(mach_msg_size_t)]; mach_msg_size_t rcv_size; char rcv_size_r_[PADR_(mach_msg_size_t)]; 2859+ char rcv_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t rcv_name; char rcv_name_r_[PADR_(mach_port_name_t)]; 2860+ char timeout_l_[PADL_(mach_msg_timeout_t)]; mach_msg_timeout_t timeout; char timeout_r_[PADR_(mach_msg_timeout_t)]; 2861+ char notify_l_[PADL_(mach_port_name_t)]; mach_port_name_t notify; char notify_r_[PADR_(mach_port_name_t)]; 2862+ char rcv_msg_l_[PADL_(mach_msg_header_t *)]; mach_msg_header_t * rcv_msg; char rcv_msg_r_[PADR_(mach_msg_header_t *)]; 2863+ char scatter_list_size_l_[PADL_(mach_msg_size_t)]; mach_msg_size_t scatter_list_size; char scatter_list_size_r_[PADR_(mach_msg_size_t)]; 2864+}; 2865+struct mach_semaphore_signal_trap_args { 2866+ char signal_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t signal_name; char signal_name_r_[PADR_(mach_port_name_t)]; 2867+}; 2868+struct mach_semaphore_signal_all_trap_args { 2869+ char signal_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t signal_name; char signal_name_r_[PADR_(mach_port_name_t)]; 2870+}; 2871+struct mach_semaphore_signal_thread_trap_args { 2872+ char signal_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t signal_name; char signal_name_r_[PADR_(mach_port_name_t)]; 2873+ char thread_l_[PADL_(mach_port_name_t)]; mach_port_name_t thread; char thread_r_[PADR_(mach_port_name_t)]; 2874+}; 2875+struct mach_semaphore_wait_trap_args { 2876+ char wait_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t wait_name; char wait_name_r_[PADR_(mach_port_name_t)]; 2877+}; 2878+struct mach_semaphore_wait_signal_trap_args { 2879+ char wait_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t wait_name; char wait_name_r_[PADR_(mach_port_name_t)]; 2880+ char signal_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t signal_name; char signal_name_r_[PADR_(mach_port_name_t)]; 2881+}; 2882+struct mach_semaphore_timedwait_trap_args { 2883+ char wait_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t wait_name; char wait_name_r_[PADR_(mach_port_name_t)]; 2884+ char sec_l_[PADL_(unsigned int)]; unsigned int sec; char sec_r_[PADR_(unsigned int)]; 2885+ char nsec_l_[PADL_(mach_clock_res_t)]; mach_clock_res_t nsec; char nsec_r_[PADR_(mach_clock_res_t)]; 2886+}; 2887+struct mach_semaphore_timedwait_signal_trap_args { 2888+ char wait_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t wait_name; char wait_name_r_[PADR_(mach_port_name_t)]; 2889+ char signal_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t signal_name; char signal_name_r_[PADR_(mach_port_name_t)]; 2890+ char sec_l_[PADL_(unsigned int)]; unsigned int sec; char sec_r_[PADR_(unsigned int)]; 2891+ char nsec_l_[PADL_(mach_clock_res_t)]; mach_clock_res_t nsec; char nsec_r_[PADR_(mach_clock_res_t)]; 2892+}; 2893+struct mach_init_process_args { 2894+ register_t dummy; 2895+}; 2896+struct mach_map_fd_args { 2897+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; 2898+ char offset_l_[PADL_(mach_vm_offset_t)]; mach_vm_offset_t offset; char offset_r_[PADR_(mach_vm_offset_t)]; 2899+ char va_l_[PADL_(mach_vm_offset_t *)]; mach_vm_offset_t * va; char va_r_[PADR_(mach_vm_offset_t *)]; 2900+ char findspace_l_[PADL_(mach_boolean_t)]; mach_boolean_t findspace; char findspace_r_[PADR_(mach_boolean_t)]; 2901+ char size_l_[PADL_(mach_vm_size_t)]; mach_vm_size_t size; char size_r_[PADR_(mach_vm_size_t)]; 2902+}; 2903+struct mach_task_for_pid_args { 2904+ char target_tport_l_[PADL_(mach_port_t)]; mach_port_t target_tport; char target_tport_r_[PADR_(mach_port_t)]; 2905+ char pid_l_[PADL_(int)]; int pid; char pid_r_[PADR_(int)]; 2906+ char t_l_[PADL_(mach_port_t *)]; mach_port_t * t; char t_r_[PADR_(mach_port_t *)]; 2907+}; 2908+struct mach_pid_for_task_args { 2909+ char t_l_[PADL_(mach_port_t)]; mach_port_t t; char t_r_[PADR_(mach_port_t)]; 2910+ char x_l_[PADL_(int *)]; int * x; char x_r_[PADR_(int *)]; 2911+}; 2912+struct mach_macx_swapon_args { 2913+ char name_l_[PADL_(char *)]; char * name; char name_r_[PADR_(char *)]; 2914+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)]; 2915+ char size_l_[PADL_(int)]; int size; char size_r_[PADR_(int)]; 2916+ char priority_l_[PADL_(int)]; int priority; char priority_r_[PADR_(int)]; 2917+}; 2918+struct mach_macx_swapoff_args { 2919+ char name_l_[PADL_(char *)]; char * name; char name_r_[PADR_(char *)]; 2920+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)]; 2921+}; 2922+struct mach_macx_triggers_args { 2923+ char hi_water_l_[PADL_(int)]; int hi_water; char hi_water_r_[PADR_(int)]; 2924+ char low_water_l_[PADL_(int)]; int low_water; char low_water_r_[PADR_(int)]; 2925+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)]; 2926+ char alert_port_l_[PADL_(mach_port_t)]; mach_port_t alert_port; char alert_port_r_[PADR_(mach_port_t)]; 2927+}; 2928+struct mach_swtch_pri_args { 2929+ char pri_l_[PADL_(int)]; int pri; char pri_r_[PADR_(int)]; 2930+}; 2931+struct mach_swtch_args { 2932+ register_t dummy; 2933+}; 2934+struct mach_syscall_thread_switch_args { 2935+ char thread_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t thread_name; char thread_name_r_[PADR_(mach_port_name_t)]; 2936+ char option_l_[PADL_(int)]; int option; char option_r_[PADR_(int)]; 2937+ char option_time_l_[PADL_(mach_msg_timeout_t)]; mach_msg_timeout_t option_time; char option_time_r_[PADR_(mach_msg_timeout_t)]; 2938+}; 2939+struct mach_clock_sleep_trap_args { 2940+ char clock_name_l_[PADL_(mach_port_name_t)]; mach_port_name_t clock_name; char clock_name_r_[PADR_(mach_port_name_t)]; 2941+ char sleep_type_l_[PADL_(mach_sleep_type_t)]; mach_sleep_type_t sleep_type; char sleep_type_r_[PADR_(mach_sleep_type_t)]; 2942+ char sleep_sec_l_[PADL_(int)]; int sleep_sec; char sleep_sec_r_[PADR_(int)]; 2943+ char sleep_nsec_l_[PADL_(int)]; int sleep_nsec; char sleep_nsec_r_[PADR_(int)]; 2944+ char wakeup_time_l_[PADL_(mach_timespec_t *)]; mach_timespec_t * wakeup_time; char wakeup_time_r_[PADR_(mach_timespec_t *)]; 2945+}; 2946+struct mach_timebase_info_args { 2947+ char info_l_[PADL_(mach_timebase_info_t)]; mach_timebase_info_t info; char info_r_[PADR_(mach_timebase_info_t)]; 2948+}; 2949+struct mach_wait_until_args { 2950+ char deadline_l_[PADL_(uint64_t)]; uint64_t deadline; char deadline_r_[PADR_(uint64_t)]; 2951+}; 2952+struct mach_timer_create_args { 2953+ register_t dummy; 2954+}; 2955+struct mach_timer_destroy_args { 2956+ char name_l_[PADL_(mach_port_name_t)]; mach_port_name_t name; char name_r_[PADR_(mach_port_name_t)]; 2957+}; 2958+struct mach_timer_arm_args { 2959+ char name_l_[PADL_(mach_port_name_t)]; mach_port_name_t name; char name_r_[PADR_(mach_port_name_t)]; 2960+ char expire_time_l_[PADL_(mach_absolute_time_t)]; mach_absolute_time_t expire_time; char expire_time_r_[PADR_(mach_absolute_time_t)]; 2961+}; 2962+struct mach_timer_cancel_args { 2963+ char name_l_[PADL_(mach_port_name_t)]; mach_port_name_t name; char name_r_[PADR_(mach_port_name_t)]; 2964+ char result_time_l_[PADL_(mach_absolute_time_t *)]; mach_absolute_time_t * result_time; char result_time_r_[PADR_(mach_absolute_time_t *)]; 2965+}; 2966+struct mach_get_time_base_info_args { 2967+ register_t dummy; 2968+}; 2969+#if defined(_KERNEL_OPT) 2970+#endif 2971+int sys_mach_reply_port(struct thread *, struct mach_reply_port_args *); 2972+int sys_mach_thread_self_trap(struct thread *, struct mach_thread_self_trap_args *); 2973+int sys_mach_task_self_trap(struct thread *, struct mach_task_self_trap_args *); 2974+int sys_mach_host_self_trap(struct thread *, struct mach_host_self_trap_args *); 2975+int sys_mach_msg_trap(struct thread *, struct mach_msg_trap_args *); 2976+int sys_mach_msg_overwrite_trap(struct thread *, struct mach_msg_overwrite_trap_args *); 2977+int sys_mach_semaphore_signal_trap(struct thread *, struct mach_semaphore_signal_trap_args *); 2978+int sys_mach_semaphore_signal_all_trap(struct thread *, struct mach_semaphore_signal_all_trap_args *); 2979+int sys_mach_semaphore_signal_thread_trap(struct thread *, struct mach_semaphore_signal_thread_trap_args *); 2980+int sys_mach_semaphore_wait_trap(struct thread *, struct mach_semaphore_wait_trap_args *); 2981+int sys_mach_semaphore_wait_signal_trap(struct thread *, struct mach_semaphore_wait_signal_trap_args *); 2982+int sys_mach_semaphore_timedwait_trap(struct thread *, struct mach_semaphore_timedwait_trap_args *); 2983+int sys_mach_semaphore_timedwait_signal_trap(struct thread *, struct mach_semaphore_timedwait_signal_trap_args *); 2984+int sys_mach_init_process(struct thread *, struct mach_init_process_args *); 2985+int sys_mach_map_fd(struct thread *, struct mach_map_fd_args *); 2986+int sys_mach_task_for_pid(struct thread *, struct mach_task_for_pid_args *); 2987+int sys_mach_pid_for_task(struct thread *, struct mach_pid_for_task_args *); 2988+int sys_mach_macx_swapon(struct thread *, struct mach_macx_swapon_args *); 2989+int sys_mach_macx_swapoff(struct thread *, struct mach_macx_swapoff_args *); 2990+int sys_mach_macx_triggers(struct thread *, struct mach_macx_triggers_args *); 2991+int sys_mach_swtch_pri(struct thread *, struct mach_swtch_pri_args *); 2992+int sys_mach_swtch(struct thread *, struct mach_swtch_args *); 2993+int sys_mach_syscall_thread_switch(struct thread *, struct mach_syscall_thread_switch_args *); 2994+int sys_mach_clock_sleep_trap(struct thread *, struct mach_clock_sleep_trap_args *); 2995+int sys_mach_timebase_info(struct thread *, struct mach_timebase_info_args *); 2996+int sys_mach_wait_until(struct thread *, struct mach_wait_until_args *); 2997+int sys_mach_timer_create(struct thread *, struct mach_timer_create_args *); 2998+int sys_mach_timer_destroy(struct thread *, struct mach_timer_destroy_args *); 2999+int sys_mach_timer_arm(struct thread *, struct mach_timer_arm_args *); 3000+int sys_mach_timer_cancel(struct thread *, struct mach_timer_cancel_args *); 3001+int sys_mach_get_time_base_info(struct thread *, struct mach_get_time_base_info_args *); 3002+ 3003+#ifdef COMPAT_43 3004+ 3005+#if defined(_KERNEL_OPT) 3006+#endif 3007+ 3008+#endif /* COMPAT_43 */ 3009+ 3010+ 3011+#ifdef COMPAT_FREEBSD4 3012+ 3013+#if defined(_KERNEL_OPT) 3014+#endif 3015+ 3016+#endif /* COMPAT_FREEBSD4 */ 3017+ 3018+ 3019+#ifdef COMPAT_FREEBSD6 3020+ 3021+#if defined(_KERNEL_OPT) 3022+#endif 3023+ 3024+#endif /* COMPAT_FREEBSD6 */ 3025+ 3026+ 3027+#ifdef COMPAT_FREEBSD7 3028+ 3029+#if defined(_KERNEL_OPT) 3030+#endif 3031+ 3032+#endif /* COMPAT_FREEBSD7 */ 3033+ 3034+#define MACH_SYS_AUE_mach_reply_port AUE_NULL 3035+#define MACH_SYS_AUE_mach_thread_self_trap AUE_NULL 3036+#define MACH_SYS_AUE_mach_task_self_trap AUE_NULL 3037+#define MACH_SYS_AUE_mach_host_self_trap AUE_NULL 3038+#define MACH_SYS_AUE_mach_msg_trap AUE_NULL 3039+#define MACH_SYS_AUE_mach_msg_overwrite_trap AUE_NULL 3040+#define MACH_SYS_AUE_mach_semaphore_signal_trap AUE_NULL 3041+#define MACH_SYS_AUE_mach_semaphore_signal_all_trap AUE_NULL 3042+#define MACH_SYS_AUE_mach_semaphore_signal_thread_trap AUE_NULL 3043+#define MACH_SYS_AUE_mach_semaphore_wait_trap AUE_NULL 3044+#define MACH_SYS_AUE_mach_semaphore_wait_signal_trap AUE_NULL 3045+#define MACH_SYS_AUE_mach_semaphore_timedwait_trap AUE_NULL 3046+#define MACH_SYS_AUE_mach_semaphore_timedwait_signal_trap AUE_NULL 3047+#define MACH_SYS_AUE_mach_init_process AUE_NULL 3048+#define MACH_SYS_AUE_mach_map_fd AUE_NULL 3049+#define MACH_SYS_AUE_mach_task_for_pid AUE_NULL 3050+#define MACH_SYS_AUE_mach_pid_for_task AUE_NULL 3051+#define MACH_SYS_AUE_mach_macx_swapon AUE_NULL 3052+#define MACH_SYS_AUE_mach_macx_swapoff AUE_NULL 3053+#define MACH_SYS_AUE_mach_macx_triggers AUE_NULL 3054+#define MACH_SYS_AUE_mach_swtch_pri AUE_NULL 3055+#define MACH_SYS_AUE_mach_swtch AUE_NULL 3056+#define MACH_SYS_AUE_mach_syscall_thread_switch AUE_NULL 3057+#define MACH_SYS_AUE_mach_clock_sleep_trap AUE_NULL 3058+#define MACH_SYS_AUE_mach_timebase_info AUE_NULL 3059+#define MACH_SYS_AUE_mach_wait_until AUE_NULL 3060+#define MACH_SYS_AUE_mach_timer_create AUE_NULL 3061+#define MACH_SYS_AUE_mach_timer_destroy AUE_NULL 3062+#define MACH_SYS_AUE_mach_timer_arm AUE_NULL 3063+#define MACH_SYS_AUE_mach_timer_cancel AUE_NULL 3064+#define MACH_SYS_AUE_mach_get_time_base_info AUE_NULL 3065+ 3066+#undef PAD_ 3067+#undef PADL_ 3068+#undef PADR_ 3069+ 3070+#endif /* !_MACH_SYSPROTO_H_ */ 3071diff --git a/sys/compat/mach/mach_semaphore.c b/sys/compat/mach/mach_semaphore.c 3072index 327c893..6953b1a 100644 3073--- a/sys/compat/mach/mach_semaphore.c 3074+++ b/sys/compat/mach/mach_semaphore.c 3075@@ -1,5 +1,3 @@ 3076-/* $NetBSD: mach_semaphore.c,v 1.19 2008/04/28 20:23:44 martin Exp $ */ 3077- 3078 /*- 3079 * Copyright (c) 2002-2003 The NetBSD Foundation, Inc. 3080 * All rights reserved. 3081@@ -30,16 +28,17 @@ 3082 */ 3083 3084 #include <sys/cdefs.h> 3085-__KERNEL_RCSID(0, "$NetBSD: mach_semaphore.c,v 1.19 2008/04/28 20:23:44 martin Exp $"); 3086+__FBSDID("$FreeBSD$"); 3087 3088 #include <sys/types.h> 3089 #include <sys/param.h> 3090 #include <sys/systm.h> 3091 #include <sys/signal.h> 3092-#include <sys/pool.h> 3093-#include <sys/rwlock.h> 3094+#include <sys/lock.h> 3095 #include <sys/malloc.h> 3096+#include <sys/pool.h> 3097 #include <sys/proc.h> 3098+#include <sys/rwlock.h> 3099 3100 #include <compat/mach/mach_types.h> 3101 #include <compat/mach/mach_message.h> 3102@@ -48,7 +47,7 @@ __KERNEL_RCSID(0, "$NetBSD: mach_semaphore.c,v 1.19 2008/04/28 20:23:44 martin E 3103 #include <compat/mach/mach_errno.h> 3104 #include <compat/mach/mach_port.h> 3105 #include <compat/mach/mach_services.h> 3106-#include <compat/mach/mach_syscallargs.h> 3107+#include <compat/mach/mach_proto.h> 3108 3109 /* Semaphore list, lock, pools */ 3110 static LIST_HEAD(mach_semaphore_list, mach_semaphore) mach_semaphore_list; 3111@@ -65,7 +64,7 @@ static void mach_waiting_lwp_put 3112 (struct mach_waiting_lwp *, struct mach_semaphore *, int); 3113 3114 int 3115-mach_sys_semaphore_wait_trap(struct lwp *l, const struct mach_sys_semaphore_wait_trap_args *uap, register_t *retval) 3116+mach_sys_semaphore_wait_trap(struct thread *td, struct mach_sys_semaphore_wait_trap_args *uap) 3117 { 3118 /* { 3119 syscallarg(mach_port_name_t) wait_name; 3120@@ -76,8 +75,8 @@ mach_sys_semaphore_wait_trap(struct lwp *l, const struct mach_sys_semaphore_wait 3121 mach_port_t mn; 3122 int blocked = 0; 3123 3124- mn = SCARG(uap, wait_name); 3125- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == 0) 3126+ mn = uap->wait_name); 3127+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == 0) 3128 return EPERM; 3129 3130 if (mr->mr_port->mp_datatype != MACH_MP_SEMAPHORE) 3131@@ -101,7 +100,7 @@ mach_sys_semaphore_wait_trap(struct lwp *l, const struct mach_sys_semaphore_wait 3132 } 3133 3134 int 3135-mach_sys_semaphore_signal_trap(struct lwp *l, const struct mach_sys_semaphore_signal_trap_args *uap, register_t *retval) 3136+mach_sys_semaphore_signal_trap(struct thread *td, struct mach_sys_semaphore_signal_trap_args *uap) 3137 { 3138 /* { 3139 syscallarg(mach_port_name_t) signal_name; 3140@@ -112,8 +111,8 @@ mach_sys_semaphore_signal_trap(struct lwp *l, const struct mach_sys_semaphore_si 3141 mach_port_t mn; 3142 int unblocked = 0; 3143 3144- mn = SCARG(uap, signal_name); 3145- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == 0) 3146+ mn = uap->signal_name); 3147+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == 0) 3148 return EPERM; 3149 3150 if (mr->mr_port->mp_datatype != MACH_MP_SEMAPHORE) 3151@@ -142,7 +141,7 @@ mach_semaphore_create(struct mach_trap_args *args) 3152 mach_semaphore_create_request_t *req = args->smsg; 3153 mach_semaphore_create_reply_t *rep = args->rmsg; 3154 size_t *msglen = args->rsize; 3155- struct lwp *l = args->l; 3156+ struct thread *td = args->td; 3157 struct mach_semaphore *ms; 3158 struct mach_port *mp; 3159 struct mach_right *mr; 3160@@ -153,7 +152,7 @@ mach_semaphore_create(struct mach_trap_args *args) 3161 mp->mp_datatype = MACH_MP_SEMAPHORE; 3162 mp->mp_data = (void *)ms; 3163 3164- mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0); 3165+ mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0); 3166 3167 *msglen = sizeof(*rep); 3168 mach_set_header(rep, req, *msglen); 3169@@ -168,14 +167,14 @@ mach_semaphore_destroy(struct mach_trap_args *args) 3170 { 3171 mach_semaphore_destroy_request_t *req = args->smsg; 3172 mach_semaphore_destroy_reply_t *rep = args->rmsg; 3173- struct lwp *l = args->l; 3174+ struct thread *td = args->td; 3175 size_t *msglen = args->rsize; 3176 struct mach_semaphore *ms; 3177 struct mach_right *mr; 3178 mach_port_t mn; 3179 3180 mn = req->req_sem.name; 3181- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == 0) 3182+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == 0) 3183 return mach_msg_error(args, EPERM); 3184 3185 if (mr->mr_port->mp_datatype != MACH_MP_SEMAPHORE) 3186@@ -248,7 +247,7 @@ mach_semaphore_put(struct mach_semaphore *ms) 3187 } 3188 3189 static struct mach_waiting_lwp * 3190-mach_waiting_lwp_get(struct lwp *l, struct mach_semaphore *ms) 3191+mach_waiting_lwp_get(struct thread *td, struct mach_semaphore *ms) 3192 { 3193 struct mach_waiting_lwp *mwl; 3194 3195@@ -281,7 +280,7 @@ mach_waiting_lwp_put(struct mach_waiting_lwp *mwl, struct mach_semaphore *ms, in 3196 * can be some memory leaks here. 3197 */ 3198 void 3199-mach_semaphore_cleanup(struct lwp *l) 3200+mach_semaphore_cleanup(struct thread *td) 3201 { 3202 struct mach_semaphore *ms; 3203 struct mach_waiting_lwp *mwl; 3204@@ -304,7 +303,7 @@ mach_semaphore_cleanup(struct lwp *l) 3205 } 3206 3207 int 3208-mach_sys_semaphore_wait_signal_trap(struct lwp *l, const struct mach_sys_semaphore_wait_signal_trap_args *uap, register_t *retval) 3209+mach_sys_semaphore_wait_signal_trap(struct thread *td, struct mach_sys_semaphore_wait_signal_trap_args *uap) 3210 { 3211 /* { 3212 syscallarg(mach_port_name_t) wait_name; 3213@@ -314,12 +313,12 @@ mach_sys_semaphore_wait_signal_trap(struct lwp *l, const struct mach_sys_semapho 3214 struct mach_sys_semaphore_signal_trap_args cupsig; 3215 int error; 3216 3217- SCARG(&cupsig, signal_name) = SCARG(uap, signal_name); 3218- if ((error = mach_sys_semaphore_signal_trap(l, &cupsig, retval)) != 0) 3219+ &cupsig->signal_name = uap->signal_name; 3220+ if ((error = mach_sys_semaphore_signal_trap(td, &cupsig)) != 0) 3221 return error; 3222 3223- SCARG(&cupwait, wait_name) = SCARG(uap, wait_name); 3224- if ((error = mach_sys_semaphore_wait_trap(l, &cupwait, retval)) != 0) 3225+ &cupwait->wait_name = uap->wait_name; 3226+ if ((error = mach_sys_semaphore_wait_trap(td, &cupwait)) != 0) 3227 return error; 3228 3229 return 0; 3230@@ -327,7 +326,7 @@ mach_sys_semaphore_wait_signal_trap(struct lwp *l, const struct mach_sys_semapho 3231 3232 3233 int 3234-mach_sys_semaphore_signal_thread_trap(struct lwp *l, const struct mach_sys_semaphore_signal_thread_trap_args *uap, register_t *retval) 3235+mach_sys_semaphore_signal_thread_trap(struct thread *td, struct mach_sys_semaphore_signal_thread_trap_args *uap) 3236 { 3237 /* { 3238 syscallarg(mach_port_name_t) signal_name; 3239@@ -342,8 +341,8 @@ mach_sys_semaphore_signal_thread_trap(struct lwp *l, const struct mach_sys_semap 3240 /* 3241 * Get the semaphore 3242 */ 3243- mn = SCARG(uap, signal_name); 3244- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 3245+ mn = uap->signal_name); 3246+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 3247 return EINVAL; 3248 3249 if (mr->mr_port->mp_datatype != MACH_MP_SEMAPHORE) 3250@@ -355,9 +354,9 @@ mach_sys_semaphore_signal_thread_trap(struct lwp *l, const struct mach_sys_semap 3251 * Get the thread, and check that it is waiting for our semaphore 3252 * If no thread was supplied, pick up the first one. 3253 */ 3254- mn = SCARG(uap, thread); 3255+ mn = uap->thread); 3256 if (mn != 0) { 3257- if ((mr = mach_right_check(mn, l, 3258+ if ((mr = mach_right_check(mn, td, 3259 MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 3260 return EINVAL; 3261 3262@@ -395,7 +394,7 @@ mach_sys_semaphore_signal_thread_trap(struct lwp *l, const struct mach_sys_semap 3263 3264 3265 int 3266-mach_sys_semaphore_signal_all_trap(struct lwp *l, const struct mach_sys_semaphore_signal_all_trap_args *uap, register_t *retval) 3267+mach_sys_semaphore_signal_all_trap(struct thread *td, struct mach_sys_semaphore_signal_all_trap_args *uap) 3268 { 3269 /* { 3270 syscallarg(mach_port_name_t) signal_name; 3271@@ -409,8 +408,8 @@ mach_sys_semaphore_signal_all_trap(struct lwp *l, const struct mach_sys_semaphor 3272 /* 3273 * Get the semaphore 3274 */ 3275- mn = SCARG(uap, signal_name); 3276- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 3277+ mn = uap->signal_name; 3278+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 3279 return EINVAL; 3280 3281 if (mr->mr_port->mp_datatype != MACH_MP_SEMAPHORE) 3282diff --git a/sys/compat/mach/mach_semaphore.h b/sys/compat/mach/mach_semaphore.h 3283index 337ca3e..26b259f 100644 3284--- a/sys/compat/mach/mach_semaphore.h 3285+++ b/sys/compat/mach/mach_semaphore.h 3286@@ -1,4 +1,4 @@ 3287-/* $NetBSD: mach_semaphore.h,v 1.7 2008/04/28 20:23:44 martin Exp $ */ 3288+/* $FreeBSD$ */ 3289 3290 /*- 3291 * Copyright (c) 2002-2003 The NetBSD Foundation, Inc. 3292@@ -32,6 +32,7 @@ 3293 #ifndef _MACH_SEMAPHORE_H_ 3294 #define _MACH_SEMAPHORE_H_ 3295 3296+#include <sys/lock.h> 3297 #include <sys/rwlock.h> 3298 #include <sys/queue.h> 3299 3300@@ -47,7 +48,7 @@ struct mach_semaphore { 3301 int ms_policy; 3302 LIST_ENTRY(mach_semaphore) ms_list; 3303 TAILQ_HEAD(ms_waiting, mach_waiting_lwp) ms_waiting; 3304- krwlock_t ms_lock; 3305+ struct rwlock ms_lock; 3306 }; 3307 3308 /* semaphore_create */ 3309diff --git a/sys/compat/mach/mach_services.c b/sys/compat/mach/mach_services.c 3310index bf10124..2ce0fd1 100644 3311--- a/sys/compat/mach/mach_services.c 3312+++ b/sys/compat/mach/mach_services.c 3313@@ -8,7 +8,6 @@ 3314 */ 3315 3316 #include <sys/cdefs.h> 3317-__KERNEL_RCSID(0, "$NetBSD: mach_services.c,v 1.19 2009/01/13 22:33:10 pooka Exp $"); 3318 3319 #include <sys/types.h> 3320 #include <sys/param.h> 3321diff --git a/sys/compat/mach/mach_services.h b/sys/compat/mach/mach_services.h 3322index 4894a3a..49ed48b 100644 3323--- a/sys/compat/mach/mach_services.h 3324+++ b/sys/compat/mach/mach_services.h 3325@@ -8,7 +8,6 @@ 3326 */ 3327 3328 #include <sys/cdefs.h> 3329-__KERNEL_RCSID(0, "$NetBSD: mach_services.h,v 1.19 2009/01/13 22:33:10 pooka Exp $"); 3330 3331 #include <compat/mach/mach_types.h> 3332 #include <compat/mach/mach_message.h> 3333diff --git a/sys/compat/mach/mach_services_names.c b/sys/compat/mach/mach_services_names.c 3334index dd0a3c7..877e637 100644 3335--- a/sys/compat/mach/mach_services_names.c 3336+++ b/sys/compat/mach/mach_services_names.c 3337@@ -9,7 +9,6 @@ 3338 */ 3339 3340 #include <sys/cdefs.h> 3341-__KERNEL_RCSID(0, "$NetBSD: mach_services_names.c,v 1.16 2009/01/13 22:33:10 pooka Exp $"); 3342 3343 struct mach_service_name { 3344 int srv_id; 3345diff --git a/sys/compat/mach/mach_syscall.h b/sys/compat/mach/mach_syscall.h 3346index cbab9dc..7f625ee 100644 3347--- a/sys/compat/mach/mach_syscall.h 3348+++ b/sys/compat/mach/mach_syscall.h 3349@@ -1,110 +1,40 @@ 3350-/* $NetBSD: mach_syscall.h,v 1.21 2009/12/14 00:58:37 matt Exp $ */ 3351- 3352 /* 3353 * System call numbers. 3354 * 3355 * DO NOT EDIT-- this file is automatically generated. 3356- * created from NetBSD: syscalls.master,v 1.10 2009/01/13 22:27:43 pooka Exp 3357+ * $FreeBSD$ 3358+ * created from FreeBSD 3359 */ 3360 3361-#ifndef _MACH_SYS_SYSCALL_H_ 3362-#define _MACH_SYS_SYSCALL_H_ 3363- 3364-#define MACH_SYS_MAXSYSARGS 9 3365- 3366-/* syscall: "reply_port" ret: "mach_port_name_t" args: */ 3367-#define MACH_SYS_reply_port 26 3368- 3369-/* syscall: "thread_self_trap" ret: "mach_port_name_t" args: */ 3370-#define MACH_SYS_thread_self_trap 27 3371- 3372-/* syscall: "task_self_trap" ret: "mach_port_name_t" args: */ 3373-#define MACH_SYS_task_self_trap 28 3374- 3375-/* syscall: "host_self_trap" ret: "mach_port_name_t" args: */ 3376-#define MACH_SYS_host_self_trap 29 3377- 3378-/* syscall: "msg_trap" ret: "mach_msg_return_t" args: "mach_msg_header_t *" "mach_msg_option_t" "mach_msg_size_t" "mach_msg_size_t" "mach_port_name_t" "mach_msg_timeout_t" "mach_port_name_t" */ 3379-#define MACH_SYS_msg_trap 31 3380- 3381-/* syscall: "msg_overwrite_trap" ret: "mach_kern_return_t" args: "mach_msg_header_t *" "mach_msg_option_t" "mach_msg_size_t" "mach_msg_size_t" "mach_port_name_t" "mach_msg_timeout_t" "mach_port_name_t" "mach_msg_header_t *" "mach_msg_size_t" */ 3382-#define MACH_SYS_msg_overwrite_trap 32 3383- 3384-/* syscall: "semaphore_signal_trap" ret: "mach_kern_return_t" args: "mach_port_name_t" */ 3385-#define MACH_SYS_semaphore_signal_trap 33 3386- 3387-/* syscall: "semaphore_signal_all_trap" ret: "mach_kern_return_t" args: "mach_port_name_t" */ 3388-#define MACH_SYS_semaphore_signal_all_trap 34 3389- 3390-/* syscall: "semaphore_signal_thread_trap" ret: "mach_kern_return_t" args: "mach_port_name_t" "mach_port_name_t" */ 3391-#define MACH_SYS_semaphore_signal_thread_trap 35 3392- 3393-/* syscall: "semaphore_wait_trap" ret: "mach_kern_return_t" args: "mach_port_name_t" */ 3394-#define MACH_SYS_semaphore_wait_trap 36 3395- 3396-/* syscall: "semaphore_wait_signal_trap" ret: "mach_kern_return_t" args: "mach_port_name_t" "mach_port_name_t" */ 3397-#define MACH_SYS_semaphore_wait_signal_trap 37 3398- 3399-/* syscall: "semaphore_timedwait_trap" ret: "mach_kern_return_t" args: "mach_port_name_t" "unsigned int" "mach_clock_res_t" */ 3400-#define MACH_SYS_semaphore_timedwait_trap 38 3401- 3402-/* syscall: "semaphore_timedwait_signal_trap" ret: "mach_kern_return_t" args: "mach_port_name_t" "mach_port_name_t" "unsigned int" "mach_clock_res_t" */ 3403-#define MACH_SYS_semaphore_timedwait_signal_trap 39 3404- 3405-/* syscall: "init_process" ret: "mach_kern_return_t" args: */ 3406-#define MACH_SYS_init_process 41 3407- 3408-/* syscall: "map_fd" ret: "mach_kern_return_t" args: "int" "mach_vm_offset_t" "mach_vm_offset_t *" "mach_boolean_t" "mach_vm_size_t" */ 3409-#define MACH_SYS_map_fd 43 3410- 3411-/* syscall: "task_for_pid" ret: "mach_kern_return_t" args: "mach_port_t" "int" "mach_port_t *" */ 3412-#define MACH_SYS_task_for_pid 45 3413- 3414-/* syscall: "pid_for_task" ret: "mach_kern_return_t" args: "mach_port_t" "int *" */ 3415-#define MACH_SYS_pid_for_task 46 3416- 3417-/* syscall: "macx_swapon" ret: "mach_kern_return_t" args: "char *" "int" "int" "int" */ 3418-#define MACH_SYS_macx_swapon 48 3419- 3420-/* syscall: "macx_swapoff" ret: "mach_kern_return_t" args: "char *" "int" */ 3421-#define MACH_SYS_macx_swapoff 49 3422- 3423-/* syscall: "macx_triggers" ret: "mach_kern_return_t" args: "int" "int" "int" "mach_port_t" */ 3424-#define MACH_SYS_macx_triggers 51 3425- 3426-/* syscall: "swtch_pri" ret: "mach_kern_return_t" args: "int" */ 3427-#define MACH_SYS_swtch_pri 59 3428- 3429-/* syscall: "swtch" ret: "mach_kern_return_t" args: */ 3430-#define MACH_SYS_swtch 60 3431- 3432-/* syscall: "syscall_thread_switch" ret: "mach_kern_return_t" args: "mach_port_name_t" "int" "mach_msg_timeout_t" */ 3433-#define MACH_SYS_syscall_thread_switch 61 3434- 3435-/* syscall: "clock_sleep_trap" ret: "mach_kern_return_t" args: "mach_port_name_t" "mach_sleep_type_t" "int" "int" "mach_timespec_t *" */ 3436-#define MACH_SYS_clock_sleep_trap 62 3437- 3438-/* syscall: "timebase_info" ret: "mach_kern_return_t" args: "mach_timebase_info_t" */ 3439-#define MACH_SYS_timebase_info 89 3440- 3441-/* syscall: "wait_until" ret: "mach_kern_return_t" args: "u_int64_t" */ 3442-#define MACH_SYS_wait_until 90 3443- 3444-/* syscall: "timer_create" ret: "mach_port_name_t" args: */ 3445-#define MACH_SYS_timer_create 91 3446- 3447-/* syscall: "timer_destroy" ret: "mach_kern_return_t" args: "mach_port_name_t" */ 3448-#define MACH_SYS_timer_destroy 92 3449- 3450-/* syscall: "timer_arm" ret: "mach_kern_return_t" args: "mach_port_name_t" "mach_absolute_time_t" */ 3451-#define MACH_SYS_timer_arm 93 3452- 3453-/* syscall: "timer_cancel" ret: "mach_kern_return_t" args: "mach_port_name_t" "mach_absolute_time_t *" */ 3454-#define MACH_SYS_timer_cancel 94 3455- 3456-/* syscall: "get_time_base_info" ret: "mach_kern_return_t" args: */ 3457-#define MACH_SYS_get_time_base_info 95 3458- 3459+#define MACH_SYS_mach_reply_port 26 3460+#define MACH_SYS_mach_thread_self_trap 27 3461+#define MACH_SYS_mach_task_self_trap 28 3462+#define MACH_SYS_mach_host_self_trap 29 3463+#define MACH_SYS_mach_msg_trap 31 3464+#define MACH_SYS_mach_msg_overwrite_trap 32 3465+#define MACH_SYS_mach_semaphore_signal_trap 33 3466+#define MACH_SYS_mach_semaphore_signal_all_trap 34 3467+#define MACH_SYS_mach_semaphore_signal_thread_trap 35 3468+#define MACH_SYS_mach_semaphore_wait_trap 36 3469+#define MACH_SYS_mach_semaphore_wait_signal_trap 37 3470+#define MACH_SYS_mach_semaphore_timedwait_trap 38 3471+#define MACH_SYS_mach_semaphore_timedwait_signal_trap 39 3472+#define MACH_SYS_mach_init_process 41 3473+#define MACH_SYS_mach_map_fd 43 3474+#define MACH_SYS_mach_task_for_pid 45 3475+#define MACH_SYS_mach_pid_for_task 46 3476+#define MACH_SYS_mach_macx_swapon 48 3477+#define MACH_SYS_mach_macx_swapoff 49 3478+#define MACH_SYS_mach_macx_triggers 51 3479+#define MACH_SYS_mach_swtch_pri 59 3480+#define MACH_SYS_mach_swtch 60 3481+#define MACH_SYS_mach_syscall_thread_switch 61 3482+#define MACH_SYS_mach_clock_sleep_trap 62 3483+#define MACH_SYS_mach_timebase_info 89 3484+#define MACH_SYS_mach_wait_until 90 3485+#define MACH_SYS_mach_timer_create 91 3486+#define MACH_SYS_mach_timer_destroy 92 3487+#define MACH_SYS_mach_timer_arm 93 3488+#define MACH_SYS_mach_timer_cancel 94 3489+#define MACH_SYS_mach_get_time_base_info 95 3490 #define MACH_SYS_MAXSYSCALL 128 3491-#define MACH_SYS_NSYSENT 128 3492-#endif /* _MACH_SYS_SYSCALL_H_ */ 3493diff --git a/sys/compat/mach/mach_syscallargs.h b/sys/compat/mach/mach_syscallargs.h 3494deleted file mode 100644 3495index 4361eb2..0000000 3496--- a/sys/compat/mach/mach_syscallargs.h 3497+++ /dev/null 3498@@ -1,258 +0,0 @@ 3499-/* $NetBSD: mach_syscallargs.h,v 1.21 2009/12/14 00:58:37 matt Exp $ */ 3500- 3501-/* 3502- * System call argument lists. 3503- * 3504- * DO NOT EDIT-- this file is automatically generated. 3505- * created from NetBSD: syscalls.master,v 1.10 2009/01/13 22:27:43 pooka Exp 3506- */ 3507- 3508-#ifndef _MACH_SYS_SYSCALLARGS_H_ 3509-#define _MACH_SYS_SYSCALLARGS_H_ 3510- 3511-#define MACH_SYS_MAXSYSARGS 9 3512- 3513-#undef syscallarg 3514-#define syscallarg(x) \ 3515- union { \ 3516- register_t pad; \ 3517- struct { x datum; } le; \ 3518- struct { /* LINTED zero array dimension */ \ 3519- int8_t pad[ /* CONSTCOND */ \ 3520- (sizeof (register_t) < sizeof (x)) \ 3521- ? 0 \ 3522- : sizeof (register_t) - sizeof (x)]; \ 3523- x datum; \ 3524- } be; \ 3525- } 3526- 3527-#undef check_syscall_args 3528-#define check_syscall_args(call) \ 3529- typedef char call##_check_args[sizeof (struct call##_args) \ 3530- <= MACH_SYS_MAXSYSARGS * sizeof (register_t) ? 1 : -1]; 3531- 3532-struct mach_sys_msg_trap_args { 3533- syscallarg(mach_msg_header_t *) msg; 3534- syscallarg(mach_msg_option_t) option; 3535- syscallarg(mach_msg_size_t) send_size; 3536- syscallarg(mach_msg_size_t) rcv_size; 3537- syscallarg(mach_port_name_t) rcv_name; 3538- syscallarg(mach_msg_timeout_t) timeout; 3539- syscallarg(mach_port_name_t) notify; 3540-}; 3541-check_syscall_args(mach_sys_msg_trap) 3542- 3543-struct mach_sys_msg_overwrite_trap_args { 3544- syscallarg(mach_msg_header_t *) msg; 3545- syscallarg(mach_msg_option_t) option; 3546- syscallarg(mach_msg_size_t) send_size; 3547- syscallarg(mach_msg_size_t) rcv_size; 3548- syscallarg(mach_port_name_t) rcv_name; 3549- syscallarg(mach_msg_timeout_t) timeout; 3550- syscallarg(mach_port_name_t) notify; 3551- syscallarg(mach_msg_header_t *) rcv_msg; 3552- syscallarg(mach_msg_size_t) scatter_list_size; 3553-}; 3554-check_syscall_args(mach_sys_msg_overwrite_trap) 3555- 3556-struct mach_sys_semaphore_signal_trap_args { 3557- syscallarg(mach_port_name_t) signal_name; 3558-}; 3559-check_syscall_args(mach_sys_semaphore_signal_trap) 3560- 3561-struct mach_sys_semaphore_signal_all_trap_args { 3562- syscallarg(mach_port_name_t) signal_name; 3563-}; 3564-check_syscall_args(mach_sys_semaphore_signal_all_trap) 3565- 3566-struct mach_sys_semaphore_signal_thread_trap_args { 3567- syscallarg(mach_port_name_t) signal_name; 3568- syscallarg(mach_port_name_t) thread; 3569-}; 3570-check_syscall_args(mach_sys_semaphore_signal_thread_trap) 3571- 3572-struct mach_sys_semaphore_wait_trap_args { 3573- syscallarg(mach_port_name_t) wait_name; 3574-}; 3575-check_syscall_args(mach_sys_semaphore_wait_trap) 3576- 3577-struct mach_sys_semaphore_wait_signal_trap_args { 3578- syscallarg(mach_port_name_t) wait_name; 3579- syscallarg(mach_port_name_t) signal_name; 3580-}; 3581-check_syscall_args(mach_sys_semaphore_wait_signal_trap) 3582- 3583-struct mach_sys_semaphore_timedwait_trap_args { 3584- syscallarg(mach_port_name_t) wait_name; 3585- syscallarg(unsigned int) sec; 3586- syscallarg(mach_clock_res_t) nsec; 3587-}; 3588-check_syscall_args(mach_sys_semaphore_timedwait_trap) 3589- 3590-struct mach_sys_semaphore_timedwait_signal_trap_args { 3591- syscallarg(mach_port_name_t) wait_name; 3592- syscallarg(mach_port_name_t) signal_name; 3593- syscallarg(unsigned int) sec; 3594- syscallarg(mach_clock_res_t) nsec; 3595-}; 3596-check_syscall_args(mach_sys_semaphore_timedwait_signal_trap) 3597- 3598-struct mach_sys_map_fd_args { 3599- syscallarg(int) fd; 3600- syscallarg(mach_vm_offset_t) offset; 3601- syscallarg(mach_vm_offset_t *) va; 3602- syscallarg(mach_boolean_t) findspace; 3603- syscallarg(mach_vm_size_t) size; 3604-}; 3605-check_syscall_args(mach_sys_map_fd) 3606- 3607-struct mach_sys_task_for_pid_args { 3608- syscallarg(mach_port_t) target_tport; 3609- syscallarg(int) pid; 3610- syscallarg(mach_port_t *) t; 3611-}; 3612-check_syscall_args(mach_sys_task_for_pid) 3613- 3614-struct mach_sys_pid_for_task_args { 3615- syscallarg(mach_port_t) t; 3616- syscallarg(int *) x; 3617-}; 3618-check_syscall_args(mach_sys_pid_for_task) 3619- 3620-struct mach_sys_macx_swapon_args { 3621- syscallarg(char *) name; 3622- syscallarg(int) flags; 3623- syscallarg(int) size; 3624- syscallarg(int) priority; 3625-}; 3626-check_syscall_args(mach_sys_macx_swapon) 3627- 3628-struct mach_sys_macx_swapoff_args { 3629- syscallarg(char *) name; 3630- syscallarg(int) flags; 3631-}; 3632-check_syscall_args(mach_sys_macx_swapoff) 3633- 3634-struct mach_sys_macx_triggers_args { 3635- syscallarg(int) hi_water; 3636- syscallarg(int) low_water; 3637- syscallarg(int) flags; 3638- syscallarg(mach_port_t) alert_port; 3639-}; 3640-check_syscall_args(mach_sys_macx_triggers) 3641- 3642-struct mach_sys_swtch_pri_args { 3643- syscallarg(int) pri; 3644-}; 3645-check_syscall_args(mach_sys_swtch_pri) 3646- 3647-struct mach_sys_syscall_thread_switch_args { 3648- syscallarg(mach_port_name_t) thread_name; 3649- syscallarg(int) option; 3650- syscallarg(mach_msg_timeout_t) option_time; 3651-}; 3652-check_syscall_args(mach_sys_syscall_thread_switch) 3653- 3654-struct mach_sys_clock_sleep_trap_args { 3655- syscallarg(mach_port_name_t) clock_name; 3656- syscallarg(mach_sleep_type_t) sleep_type; 3657- syscallarg(int) sleep_sec; 3658- syscallarg(int) sleep_nsec; 3659- syscallarg(mach_timespec_t *) wakeup_time; 3660-}; 3661-check_syscall_args(mach_sys_clock_sleep_trap) 3662- 3663-struct mach_sys_timebase_info_args { 3664- syscallarg(mach_timebase_info_t) info; 3665-}; 3666-check_syscall_args(mach_sys_timebase_info) 3667- 3668-struct mach_sys_wait_until_args { 3669- syscallarg(u_int64_t) deadline; 3670-}; 3671-check_syscall_args(mach_sys_wait_until) 3672- 3673-struct mach_sys_timer_destroy_args { 3674- syscallarg(mach_port_name_t) name; 3675-}; 3676-check_syscall_args(mach_sys_timer_destroy) 3677- 3678-struct mach_sys_timer_arm_args { 3679- syscallarg(mach_port_name_t) name; 3680- syscallarg(mach_absolute_time_t) expire_time; 3681-}; 3682-check_syscall_args(mach_sys_timer_arm) 3683- 3684-struct mach_sys_timer_cancel_args { 3685- syscallarg(mach_port_name_t) name; 3686- syscallarg(mach_absolute_time_t *) result_time; 3687-}; 3688-check_syscall_args(mach_sys_timer_cancel) 3689- 3690-/* 3691- * System call prototypes. 3692- */ 3693- 3694-int mach_sys_reply_port(struct lwp *, const void *, register_t *); 3695- 3696-int mach_sys_thread_self_trap(struct lwp *, const void *, register_t *); 3697- 3698-int mach_sys_task_self_trap(struct lwp *, const void *, register_t *); 3699- 3700-int mach_sys_host_self_trap(struct lwp *, const void *, register_t *); 3701- 3702-int mach_sys_msg_trap(struct lwp *, const struct mach_sys_msg_trap_args *, register_t *); 3703- 3704-int mach_sys_msg_overwrite_trap(struct lwp *, const struct mach_sys_msg_overwrite_trap_args *, register_t *); 3705- 3706-int mach_sys_semaphore_signal_trap(struct lwp *, const struct mach_sys_semaphore_signal_trap_args *, register_t *); 3707- 3708-int mach_sys_semaphore_signal_all_trap(struct lwp *, const struct mach_sys_semaphore_signal_all_trap_args *, register_t *); 3709- 3710-int mach_sys_semaphore_signal_thread_trap(struct lwp *, const struct mach_sys_semaphore_signal_thread_trap_args *, register_t *); 3711- 3712-int mach_sys_semaphore_wait_trap(struct lwp *, const struct mach_sys_semaphore_wait_trap_args *, register_t *); 3713- 3714-int mach_sys_semaphore_wait_signal_trap(struct lwp *, const struct mach_sys_semaphore_wait_signal_trap_args *, register_t *); 3715- 3716-int mach_sys_semaphore_timedwait_trap(struct lwp *, const struct mach_sys_semaphore_timedwait_trap_args *, register_t *); 3717- 3718-int mach_sys_semaphore_timedwait_signal_trap(struct lwp *, const struct mach_sys_semaphore_timedwait_signal_trap_args *, register_t *); 3719- 3720-int mach_sys_init_process(struct lwp *, const void *, register_t *); 3721- 3722-int mach_sys_map_fd(struct lwp *, const struct mach_sys_map_fd_args *, register_t *); 3723- 3724-int mach_sys_task_for_pid(struct lwp *, const struct mach_sys_task_for_pid_args *, register_t *); 3725- 3726-int mach_sys_pid_for_task(struct lwp *, const struct mach_sys_pid_for_task_args *, register_t *); 3727- 3728-int mach_sys_macx_swapon(struct lwp *, const struct mach_sys_macx_swapon_args *, register_t *); 3729- 3730-int mach_sys_macx_swapoff(struct lwp *, const struct mach_sys_macx_swapoff_args *, register_t *); 3731- 3732-int mach_sys_macx_triggers(struct lwp *, const struct mach_sys_macx_triggers_args *, register_t *); 3733- 3734-int mach_sys_swtch_pri(struct lwp *, const struct mach_sys_swtch_pri_args *, register_t *); 3735- 3736-int mach_sys_swtch(struct lwp *, const void *, register_t *); 3737- 3738-int mach_sys_syscall_thread_switch(struct lwp *, const struct mach_sys_syscall_thread_switch_args *, register_t *); 3739- 3740-int mach_sys_clock_sleep_trap(struct lwp *, const struct mach_sys_clock_sleep_trap_args *, register_t *); 3741- 3742-int mach_sys_timebase_info(struct lwp *, const struct mach_sys_timebase_info_args *, register_t *); 3743- 3744-int mach_sys_wait_until(struct lwp *, const struct mach_sys_wait_until_args *, register_t *); 3745- 3746-int mach_sys_timer_create(struct lwp *, const void *, register_t *); 3747- 3748-int mach_sys_timer_destroy(struct lwp *, const struct mach_sys_timer_destroy_args *, register_t *); 3749- 3750-int mach_sys_timer_arm(struct lwp *, const struct mach_sys_timer_arm_args *, register_t *); 3751- 3752-int mach_sys_timer_cancel(struct lwp *, const struct mach_sys_timer_cancel_args *, register_t *); 3753- 3754-int mach_sys_get_time_base_info(struct lwp *, const void *, register_t *); 3755- 3756-#endif /* _MACH_SYS_SYSCALLARGS_H_ */ 3757diff --git a/sys/compat/mach/mach_syscalls.c b/sys/compat/mach/mach_syscalls.c 3758index f8f7d7b..76aa670 100644 3759--- a/sys/compat/mach/mach_syscalls.c 3760+++ b/sys/compat/mach/mach_syscalls.c 3761@@ -1,159 +1,140 @@ 3762-/* $NetBSD: mach_syscalls.c,v 1.22 2009/12/14 00:58:37 matt Exp $ */ 3763- 3764 /* 3765 * System call names. 3766 * 3767 * DO NOT EDIT-- this file is automatically generated. 3768- * created from NetBSD: syscalls.master,v 1.10 2009/01/13 22:27:43 pooka Exp 3769+ * $FreeBSD$ 3770+ * created from FreeBSD 3771 */ 3772 3773-#include <sys/cdefs.h> 3774-__KERNEL_RCSID(0, "$NetBSD: mach_syscalls.c,v 1.22 2009/12/14 00:58:37 matt Exp $"); 3775- 3776+const char *mach_syscallnames[] = { 3777 #if defined(_KERNEL_OPT) 3778-#if defined(_KERNEL_OPT) 3779-#include "opt_ntp.h" 3780-#include "opt_sysv.h" 3781 #endif 3782-#include <sys/param.h> 3783-#include <sys/systm.h> 3784-#include <sys/signal.h> 3785-#include <sys/mount.h> 3786-#include <sys/poll.h> 3787-#include <sys/syscallargs.h> 3788-#include <compat/mach/mach_types.h> 3789-#include <compat/mach/mach_message.h> 3790-#include <compat/mach/mach_clock.h> 3791-#include <compat/mach/mach_syscallargs.h> 3792-#endif /* _KERNEL_OPT */ 3793- 3794-const char *const mach_syscallnames[] = { 3795- /* 0 */ "#0 (unimplemented)", 3796- /* 1 */ "#1 (unimplemented)", 3797- /* 2 */ "#2 (unimplemented)", 3798- /* 3 */ "#3 (unimplemented)", 3799- /* 4 */ "#4 (unimplemented)", 3800- /* 5 */ "#5 (unimplemented)", 3801- /* 6 */ "#6 (unimplemented)", 3802- /* 7 */ "#7 (unimplemented)", 3803- /* 8 */ "#8 (unimplemented)", 3804- /* 9 */ "#9 (unimplemented)", 3805- /* 10 */ "#10 (unimplemented)", 3806- /* 11 */ "#11 (unimplemented)", 3807- /* 12 */ "#12 (unimplemented)", 3808- /* 13 */ "#13 (unimplemented)", 3809- /* 14 */ "#14 (unimplemented)", 3810- /* 15 */ "#15 (unimplemented)", 3811- /* 16 */ "#16 (unimplemented)", 3812- /* 17 */ "#17 (unimplemented)", 3813- /* 18 */ "#18 (unimplemented)", 3814- /* 19 */ "#19 (unimplemented)", 3815- /* 20 */ "#20 (unimplemented)", 3816- /* 21 */ "#21 (unimplemented)", 3817- /* 22 */ "#22 (unimplemented)", 3818- /* 23 */ "#23 (unimplemented)", 3819- /* 24 */ "#24 (unimplemented)", 3820- /* 25 */ "#25 (unimplemented)", 3821- /* 26 */ "reply_port", 3822- /* 27 */ "thread_self_trap", 3823- /* 28 */ "task_self_trap", 3824- /* 29 */ "host_self_trap", 3825- /* 30 */ "#30 (unimplemented)", 3826- /* 31 */ "msg_trap", 3827- /* 32 */ "msg_overwrite_trap", 3828- /* 33 */ "semaphore_signal_trap", 3829- /* 34 */ "semaphore_signal_all_trap", 3830- /* 35 */ "semaphore_signal_thread_trap", 3831- /* 36 */ "semaphore_wait_trap", 3832- /* 37 */ "semaphore_wait_signal_trap", 3833- /* 38 */ "semaphore_timedwait_trap", 3834- /* 39 */ "semaphore_timedwait_signal_trap", 3835- /* 40 */ "#40 (unimplemented)", 3836- /* 41 */ "init_process", 3837- /* 42 */ "#42 (unimplemented)", 3838- /* 43 */ "map_fd", 3839- /* 44 */ "#44 (unimplemented)", 3840- /* 45 */ "task_for_pid", 3841- /* 46 */ "pid_for_task", 3842- /* 47 */ "#47 (unimplemented)", 3843- /* 48 */ "macx_swapon", 3844- /* 49 */ "macx_swapoff", 3845- /* 50 */ "#50 (unimplemented)", 3846- /* 51 */ "macx_triggers", 3847- /* 52 */ "#52 (unimplemented)", 3848- /* 53 */ "#53 (unimplemented)", 3849- /* 54 */ "#54 (unimplemented)", 3850- /* 55 */ "#55 (unimplemented)", 3851- /* 56 */ "#56 (unimplemented)", 3852- /* 57 */ "#57 (unimplemented)", 3853- /* 58 */ "#58 (unimplemented)", 3854- /* 59 */ "swtch_pri", 3855- /* 60 */ "swtch", 3856- /* 61 */ "syscall_thread_switch", 3857- /* 62 */ "clock_sleep_trap", 3858- /* 63 */ "#63 (unimplemented)", 3859- /* 64 */ "#64 (unimplemented)", 3860- /* 65 */ "#65 (unimplemented)", 3861- /* 66 */ "#66 (unimplemented)", 3862- /* 67 */ "#67 (unimplemented)", 3863- /* 68 */ "#68 (unimplemented)", 3864- /* 69 */ "#69 (unimplemented)", 3865- /* 70 */ "#70 (unimplemented)", 3866- /* 71 */ "#71 (unimplemented)", 3867- /* 72 */ "#72 (unimplemented)", 3868- /* 73 */ "#73 (unimplemented)", 3869- /* 74 */ "#74 (unimplemented)", 3870- /* 75 */ "#75 (unimplemented)", 3871- /* 76 */ "#76 (unimplemented)", 3872- /* 77 */ "#77 (unimplemented)", 3873- /* 78 */ "#78 (unimplemented)", 3874- /* 79 */ "#79 (unimplemented)", 3875- /* 80 */ "#80 (unimplemented)", 3876- /* 81 */ "#81 (unimplemented)", 3877- /* 82 */ "#82 (unimplemented)", 3878- /* 83 */ "#83 (unimplemented)", 3879- /* 84 */ "#84 (unimplemented)", 3880- /* 85 */ "#85 (unimplemented)", 3881- /* 86 */ "#86 (unimplemented)", 3882- /* 87 */ "#87 (unimplemented)", 3883- /* 88 */ "#88 (unimplemented)", 3884- /* 89 */ "timebase_info", 3885- /* 90 */ "wait_until", 3886- /* 91 */ "timer_create", 3887- /* 92 */ "timer_destroy", 3888- /* 93 */ "timer_arm", 3889- /* 94 */ "timer_cancel", 3890- /* 95 */ "get_time_base_info", 3891- /* 96 */ "#96 (unimplemented)", 3892- /* 97 */ "#97 (unimplemented)", 3893- /* 98 */ "#98 (unimplemented)", 3894- /* 99 */ "#99 (unimplemented)", 3895- /* 100 */ "#100 (unimplemented)", 3896- /* 101 */ "#101 (unimplemented)", 3897- /* 102 */ "#102 (unimplemented)", 3898- /* 103 */ "#103 (unimplemented)", 3899- /* 104 */ "#104 (unimplemented)", 3900- /* 105 */ "#105 (unimplemented)", 3901- /* 106 */ "#106 (unimplemented)", 3902- /* 107 */ "#107 (unimplemented)", 3903- /* 108 */ "#108 (unimplemented)", 3904- /* 109 */ "#109 (unimplemented)", 3905- /* 110 */ "#110 (unimplemented)", 3906- /* 111 */ "#111 (unimplemented)", 3907- /* 112 */ "#112 (unimplemented)", 3908- /* 113 */ "#113 (unimplemented)", 3909- /* 114 */ "#114 (unimplemented)", 3910- /* 115 */ "#115 (unimplemented)", 3911- /* 116 */ "#116 (unimplemented)", 3912- /* 117 */ "#117 (unimplemented)", 3913- /* 118 */ "#118 (unimplemented)", 3914- /* 119 */ "#119 (unimplemented)", 3915- /* 120 */ "#120 (unimplemented)", 3916- /* 121 */ "#121 (unimplemented)", 3917- /* 122 */ "#122 (unimplemented)", 3918- /* 123 */ "#123 (unimplemented)", 3919- /* 124 */ "#124 (unimplemented)", 3920- /* 125 */ "#125 (unimplemented)", 3921- /* 126 */ "#126 (unimplemented)", 3922- /* 127 */ "#127 (unimplemented)", 3923+ "#0", /* 0 = nosys */ 3924+ "#1", /* 1 = nosys */ 3925+ "#2", /* 2 = nosys */ 3926+ "#3", /* 3 = nosys */ 3927+ "#4", /* 4 = nosys */ 3928+ "#5", /* 5 = nosys */ 3929+ "#6", /* 6 = nosys */ 3930+ "#7", /* 7 = nosys */ 3931+ "#8", /* 8 = nosys */ 3932+ "#9", /* 9 = nosys */ 3933+ "#10", /* 10 = nosys */ 3934+ "#11", /* 11 = nosys */ 3935+ "#12", /* 12 = nosys */ 3936+ "#13", /* 13 = nosys */ 3937+ "#14", /* 14 = nosys */ 3938+ "#15", /* 15 = nosys */ 3939+ "#16", /* 16 = nosys */ 3940+ "#17", /* 17 = nosys */ 3941+ "#18", /* 18 = nosys */ 3942+ "#19", /* 19 = nosys */ 3943+ "#20", /* 20 = nosys */ 3944+ "#21", /* 21 = nosys */ 3945+ "#22", /* 22 = nosys */ 3946+ "#23", /* 23 = nosys */ 3947+ "#24", /* 24 = nosys */ 3948+ "#25", /* 25 = nosys */ 3949+ "mach_reply_port", /* 26 = mach_reply_port */ 3950+ "mach_thread_self_trap", /* 27 = mach_thread_self_trap */ 3951+ "mach_task_self_trap", /* 28 = mach_task_self_trap */ 3952+ "mach_host_self_trap", /* 29 = mach_host_self_trap */ 3953+ "#30", /* 30 = nosys */ 3954+ "mach_msg_trap", /* 31 = mach_msg_trap */ 3955+ "mach_msg_overwrite_trap", /* 32 = mach_msg_overwrite_trap */ 3956+ "mach_semaphore_signal_trap", /* 33 = mach_semaphore_signal_trap */ 3957+ "mach_semaphore_signal_all_trap", /* 34 = mach_semaphore_signal_all_trap */ 3958+ "mach_semaphore_signal_thread_trap", /* 35 = mach_semaphore_signal_thread_trap */ 3959+ "mach_semaphore_wait_trap", /* 36 = mach_semaphore_wait_trap */ 3960+ "mach_semaphore_wait_signal_trap", /* 37 = mach_semaphore_wait_signal_trap */ 3961+ "mach_semaphore_timedwait_trap", /* 38 = mach_semaphore_timedwait_trap */ 3962+ "mach_semaphore_timedwait_signal_trap", /* 39 = mach_semaphore_timedwait_signal_trap */ 3963+ "#40", /* 40 = nosys */ 3964+ "mach_init_process", /* 41 = mach_init_process */ 3965+ "#42", /* 42 = nosys */ 3966+ "mach_map_fd", /* 43 = mach_map_fd */ 3967+ "#44", /* 44 = nosys */ 3968+ "mach_task_for_pid", /* 45 = mach_task_for_pid */ 3969+ "mach_pid_for_task", /* 46 = mach_pid_for_task */ 3970+ "#47", /* 47 = nosys */ 3971+ "mach_macx_swapon", /* 48 = mach_macx_swapon */ 3972+ "mach_macx_swapoff", /* 49 = mach_macx_swapoff */ 3973+ "#50", /* 50 = nosys */ 3974+ "mach_macx_triggers", /* 51 = mach_macx_triggers */ 3975+ "#52", /* 52 = nosys */ 3976+ "#53", /* 53 = nosys */ 3977+ "#54", /* 54 = nosys */ 3978+ "#55", /* 55 = nosys */ 3979+ "#56", /* 56 = nosys */ 3980+ "#57", /* 57 = nosys */ 3981+ "#58", /* 58 = nosys */ 3982+ "mach_swtch_pri", /* 59 = mach_swtch_pri */ 3983+ "mach_swtch", /* 60 = mach_swtch */ 3984+ "mach_syscall_thread_switch", /* 61 = mach_syscall_thread_switch */ 3985+ "mach_clock_sleep_trap", /* 62 = mach_clock_sleep_trap */ 3986+ "#63", /* 63 = nosys */ 3987+ "#64", /* 64 = nosys */ 3988+ "#65", /* 65 = nosys */ 3989+ "#66", /* 66 = nosys */ 3990+ "#67", /* 67 = nosys */ 3991+ "#68", /* 68 = nosys */ 3992+ "#69", /* 69 = nosys */ 3993+ "#70", /* 70 = nosys */ 3994+ "#71", /* 71 = nosys */ 3995+ "#72", /* 72 = nosys */ 3996+ "#73", /* 73 = nosys */ 3997+ "#74", /* 74 = nosys */ 3998+ "#75", /* 75 = nosys */ 3999+ "#76", /* 76 = nosys */ 4000+ "#77", /* 77 = nosys */ 4001+ "#78", /* 78 = nosys */ 4002+ "#79", /* 79 = nosys */ 4003+ "#80", /* 80 = nosys */ 4004+ "#81", /* 81 = nosys */ 4005+ "#82", /* 82 = nosys */ 4006+ "#83", /* 83 = nosys */ 4007+ "#84", /* 84 = nosys */ 4008+ "#85", /* 85 = nosys */ 4009+ "#86", /* 86 = nosys */ 4010+ "#87", /* 87 = nosys */ 4011+ "#88", /* 88 = nosys */ 4012+ "mach_timebase_info", /* 89 = mach_timebase_info */ 4013+ "mach_wait_until", /* 90 = mach_wait_until */ 4014+ "mach_timer_create", /* 91 = mach_timer_create */ 4015+ "mach_timer_destroy", /* 92 = mach_timer_destroy */ 4016+ "mach_timer_arm", /* 93 = mach_timer_arm */ 4017+ "mach_timer_cancel", /* 94 = mach_timer_cancel */ 4018+ "mach_get_time_base_info", /* 95 = mach_get_time_base_info */ 4019+ "#96", /* 96 = nosys */ 4020+ "#97", /* 97 = nosys */ 4021+ "#98", /* 98 = nosys */ 4022+ "#99", /* 99 = nosys */ 4023+ "#100", /* 100 = nosys */ 4024+ "#101", /* 101 = nosys */ 4025+ "#102", /* 102 = nosys */ 4026+ "#103", /* 103 = nosys */ 4027+ "#104", /* 104 = nosys */ 4028+ "#105", /* 105 = nosys */ 4029+ "#106", /* 106 = nosys */ 4030+ "#107", /* 107 = nosys */ 4031+ "#108", /* 108 = nosys */ 4032+ "#109", /* 109 = nosys */ 4033+ "#110", /* 110 = nosys */ 4034+ "#111", /* 111 = nosys */ 4035+ "#112", /* 112 = nosys */ 4036+ "#113", /* 113 = nosys */ 4037+ "#114", /* 114 = nosys */ 4038+ "#115", /* 115 = nosys */ 4039+ "#116", /* 116 = nosys */ 4040+ "#117", /* 117 = nosys */ 4041+ "#118", /* 118 = nosys */ 4042+ "#119", /* 119 = nosys */ 4043+ "#120", /* 120 = nosys */ 4044+ "#121", /* 121 = nosys */ 4045+ "#122", /* 122 = nosys */ 4046+ "#123", /* 123 = nosys */ 4047+ "#124", /* 124 = nosys */ 4048+ "#125", /* 125 = nosys */ 4049+ "#126", /* 126 = nosys */ 4050+ "#127", /* 127 = nosys */ 4051 }; 4052diff --git a/sys/compat/mach/mach_sysctl.c b/sys/compat/mach/mach_sysctl.c 4053index 07421ee..e5810bd 100644 4054--- a/sys/compat/mach/mach_sysctl.c 4055+++ b/sys/compat/mach/mach_sysctl.c 4056@@ -1,4 +1,4 @@ 4057-/* $NetBSD: mach_sysctl.c,v 1.4 2008/04/28 20:23:44 martin Exp $ */ 4058+/* $FreeBSD$ */ 4059 4060 /*- 4061 * Copyright (c) 2004 The NetBSD Foundation, Inc. 4062@@ -30,7 +30,6 @@ 4063 */ 4064 4065 #include <sys/cdefs.h> 4066-__KERNEL_RCSID(0, "$NetBSD: mach_sysctl.c,v 1.4 2008/04/28 20:23:44 martin Exp $"); 4067 4068 #include <sys/param.h> 4069 #include <sys/types.h> 4070diff --git a/sys/compat/mach/mach_sysctl.h b/sys/compat/mach/mach_sysctl.h 4071index 6f6a422..586bd68 100644 4072--- a/sys/compat/mach/mach_sysctl.h 4073+++ b/sys/compat/mach/mach_sysctl.h 4074@@ -1,4 +1,4 @@ 4075-/* $NetBSD: mach_sysctl.h,v 1.3 2008/04/28 20:23:44 martin Exp $ */ 4076+/* $FreeBSD$ */ 4077 4078 /*- 4079 * Copyright (c) 2004 The NetBSD Foundation, Inc. 4080diff --git a/sys/compat/mach/mach_sysent.c b/sys/compat/mach/mach_sysent.c 4081index fc925f6..4ed4baf 100644 4082--- a/sys/compat/mach/mach_sysent.c 4083+++ b/sys/compat/mach/mach_sysent.c 4084@@ -1,289 +1,156 @@ 4085-/* $NetBSD: mach_sysent.c,v 1.23 2009/12/14 00:58:37 matt Exp $ */ 4086- 4087 /* 4088 * System call switch table. 4089 * 4090 * DO NOT EDIT-- this file is automatically generated. 4091- * created from NetBSD: syscalls.master,v 1.10 2009/01/13 22:27:43 pooka Exp 4092+ * $FreeBSD$ 4093+ * created from FreeBSD 4094 */ 4095 4096-#include <sys/cdefs.h> 4097-__KERNEL_RCSID(0, "$NetBSD: mach_sysent.c,v 1.23 2009/12/14 00:58:37 matt Exp $"); 4098- 4099-#if defined(_KERNEL_OPT) 4100 #include "opt_ntp.h" 4101-#include "opt_sysv.h" 4102-#endif 4103 #include <sys/param.h> 4104 #include <sys/systm.h> 4105 #include <sys/signal.h> 4106 #include <sys/mount.h> 4107 #include <sys/poll.h> 4108-#include <sys/syscallargs.h> 4109+#include <sys/sysent.h> 4110+#include <sys/sysproto.h> 4111 #include <compat/mach/mach_types.h> 4112 #include <compat/mach/mach_message.h> 4113 #include <compat/mach/mach_clock.h> 4114-#include <compat/mach/mach_syscallargs.h> 4115+#include <compat/mach/mach_proto.h> 4116 4117-#define s(type) sizeof(type) 4118-#define n(type) (sizeof(type)/sizeof (register_t)) 4119-#define ns(type) n(type), s(type) 4120+#define AS(name) (sizeof(struct name) / sizeof(register_t)) 4121 4122+/* The casts are bogus but will do for now. */ 4123 struct sysent mach_sysent[] = { 4124- { 0, 0, 0, 4125- sys_nosys }, /* 0 = unimplemented */ 4126- { 0, 0, 0, 4127- sys_nosys }, /* 1 = unimplemented */ 4128- { 0, 0, 0, 4129- sys_nosys }, /* 2 = unimplemented */ 4130- { 0, 0, 0, 4131- sys_nosys }, /* 3 = unimplemented */ 4132- { 0, 0, 0, 4133- sys_nosys }, /* 4 = unimplemented */ 4134- { 0, 0, 0, 4135- sys_nosys }, /* 5 = unimplemented */ 4136- { 0, 0, 0, 4137- sys_nosys }, /* 6 = unimplemented */ 4138- { 0, 0, 0, 4139- sys_nosys }, /* 7 = unimplemented */ 4140- { 0, 0, 0, 4141- sys_nosys }, /* 8 = unimplemented */ 4142- { 0, 0, 0, 4143- sys_nosys }, /* 9 = unimplemented */ 4144- { 0, 0, 0, 4145- sys_nosys }, /* 10 = unimplemented */ 4146- { 0, 0, 0, 4147- sys_nosys }, /* 11 = unimplemented */ 4148- { 0, 0, 0, 4149- sys_nosys }, /* 12 = unimplemented */ 4150- { 0, 0, 0, 4151- sys_nosys }, /* 13 = unimplemented */ 4152- { 0, 0, 0, 4153- sys_nosys }, /* 14 = unimplemented */ 4154- { 0, 0, 0, 4155- sys_nosys }, /* 15 = unimplemented */ 4156- { 0, 0, 0, 4157- sys_nosys }, /* 16 = unimplemented */ 4158- { 0, 0, 0, 4159- sys_nosys }, /* 17 = unimplemented */ 4160- { 0, 0, 0, 4161- sys_nosys }, /* 18 = unimplemented */ 4162- { 0, 0, 0, 4163- sys_nosys }, /* 19 = unimplemented */ 4164- { 0, 0, 0, 4165- sys_nosys }, /* 20 = unimplemented */ 4166- { 0, 0, 0, 4167- sys_nosys }, /* 21 = unimplemented */ 4168- { 0, 0, 0, 4169- sys_nosys }, /* 22 = unimplemented */ 4170- { 0, 0, 0, 4171- sys_nosys }, /* 23 = unimplemented */ 4172- { 0, 0, 0, 4173- sys_nosys }, /* 24 = unimplemented */ 4174- { 0, 0, 0, 4175- sys_nosys }, /* 25 = unimplemented */ 4176- { 0, 0, 0, 4177- (sy_call_t *)mach_sys_reply_port }, /* 26 = reply_port */ 4178- { 0, 0, 0, 4179- (sy_call_t *)mach_sys_thread_self_trap },/* 27 = thread_self_trap */ 4180- { 0, 0, 0, 4181- (sy_call_t *)mach_sys_task_self_trap },/* 28 = task_self_trap */ 4182- { 0, 0, 0, 4183- (sy_call_t *)mach_sys_host_self_trap },/* 29 = host_self_trap */ 4184- { 0, 0, 0, 4185- sys_nosys }, /* 30 = unimplemented */ 4186- { ns(struct mach_sys_msg_trap_args), 0, 4187- (sy_call_t *)mach_sys_msg_trap }, /* 31 = msg_trap */ 4188- { ns(struct mach_sys_msg_overwrite_trap_args), 0, 4189- (sy_call_t *)mach_sys_msg_overwrite_trap },/* 32 = msg_overwrite_trap */ 4190- { ns(struct mach_sys_semaphore_signal_trap_args), 0, 4191- (sy_call_t *)mach_sys_semaphore_signal_trap },/* 33 = semaphore_signal_trap */ 4192- { ns(struct mach_sys_semaphore_signal_all_trap_args), 0, 4193- (sy_call_t *)mach_sys_semaphore_signal_all_trap },/* 34 = semaphore_signal_all_trap */ 4194- { ns(struct mach_sys_semaphore_signal_thread_trap_args), 0, 4195- (sy_call_t *)mach_sys_semaphore_signal_thread_trap },/* 35 = semaphore_signal_thread_trap */ 4196- { ns(struct mach_sys_semaphore_wait_trap_args), 0, 4197- (sy_call_t *)mach_sys_semaphore_wait_trap },/* 36 = semaphore_wait_trap */ 4198- { ns(struct mach_sys_semaphore_wait_signal_trap_args), 0, 4199- (sy_call_t *)mach_sys_semaphore_wait_signal_trap },/* 37 = semaphore_wait_signal_trap */ 4200- { ns(struct mach_sys_semaphore_timedwait_trap_args), 0, 4201- (sy_call_t *)mach_sys_semaphore_timedwait_trap },/* 38 = semaphore_timedwait_trap */ 4202- { ns(struct mach_sys_semaphore_timedwait_signal_trap_args), 0, 4203- (sy_call_t *)mach_sys_semaphore_timedwait_signal_trap },/* 39 = semaphore_timedwait_signal_trap */ 4204- { 0, 0, 0, 4205- sys_nosys }, /* 40 = unimplemented */ 4206- { 0, 0, 0, 4207- (sy_call_t *)mach_sys_init_process },/* 41 = init_process */ 4208- { 0, 0, 0, 4209- sys_nosys }, /* 42 = unimplemented */ 4210- { ns(struct mach_sys_map_fd_args), 0, 4211- (sy_call_t *)mach_sys_map_fd }, /* 43 = map_fd */ 4212- { 0, 0, 0, 4213- sys_nosys }, /* 44 = unimplemented */ 4214- { ns(struct mach_sys_task_for_pid_args), 0, 4215- (sy_call_t *)mach_sys_task_for_pid },/* 45 = task_for_pid */ 4216- { ns(struct mach_sys_pid_for_task_args), 0, 4217- (sy_call_t *)mach_sys_pid_for_task },/* 46 = pid_for_task */ 4218- { 0, 0, 0, 4219- sys_nosys }, /* 47 = unimplemented */ 4220- { ns(struct mach_sys_macx_swapon_args), 0, 4221- (sy_call_t *)mach_sys_macx_swapon },/* 48 = macx_swapon */ 4222- { ns(struct mach_sys_macx_swapoff_args), 0, 4223- (sy_call_t *)mach_sys_macx_swapoff },/* 49 = macx_swapoff */ 4224- { 0, 0, 0, 4225- sys_nosys }, /* 50 = unimplemented */ 4226- { ns(struct mach_sys_macx_triggers_args), 0, 4227- (sy_call_t *)mach_sys_macx_triggers },/* 51 = macx_triggers */ 4228- { 0, 0, 0, 4229- sys_nosys }, /* 52 = unimplemented */ 4230- { 0, 0, 0, 4231- sys_nosys }, /* 53 = unimplemented */ 4232- { 0, 0, 0, 4233- sys_nosys }, /* 54 = unimplemented */ 4234- { 0, 0, 0, 4235- sys_nosys }, /* 55 = unimplemented */ 4236- { 0, 0, 0, 4237- sys_nosys }, /* 56 = unimplemented */ 4238- { 0, 0, 0, 4239- sys_nosys }, /* 57 = unimplemented */ 4240- { 0, 0, 0, 4241- sys_nosys }, /* 58 = unimplemented */ 4242- { ns(struct mach_sys_swtch_pri_args), 0, 4243- (sy_call_t *)mach_sys_swtch_pri }, /* 59 = swtch_pri */ 4244- { 0, 0, 0, 4245- (sy_call_t *)mach_sys_swtch }, /* 60 = swtch */ 4246- { ns(struct mach_sys_syscall_thread_switch_args), 0, 4247- (sy_call_t *)mach_sys_syscall_thread_switch },/* 61 = syscall_thread_switch */ 4248- { ns(struct mach_sys_clock_sleep_trap_args), 0, 4249- (sy_call_t *)mach_sys_clock_sleep_trap },/* 62 = clock_sleep_trap */ 4250- { 0, 0, 0, 4251- sys_nosys }, /* 63 = unimplemented */ 4252- { 0, 0, 0, 4253- sys_nosys }, /* 64 = unimplemented */ 4254- { 0, 0, 0, 4255- sys_nosys }, /* 65 = unimplemented */ 4256- { 0, 0, 0, 4257- sys_nosys }, /* 66 = unimplemented */ 4258- { 0, 0, 0, 4259- sys_nosys }, /* 67 = unimplemented */ 4260- { 0, 0, 0, 4261- sys_nosys }, /* 68 = unimplemented */ 4262- { 0, 0, 0, 4263- sys_nosys }, /* 69 = unimplemented */ 4264- { 0, 0, 0, 4265- sys_nosys }, /* 70 = unimplemented */ 4266- { 0, 0, 0, 4267- sys_nosys }, /* 71 = unimplemented */ 4268- { 0, 0, 0, 4269- sys_nosys }, /* 72 = unimplemented */ 4270- { 0, 0, 0, 4271- sys_nosys }, /* 73 = unimplemented */ 4272- { 0, 0, 0, 4273- sys_nosys }, /* 74 = unimplemented */ 4274- { 0, 0, 0, 4275- sys_nosys }, /* 75 = unimplemented */ 4276- { 0, 0, 0, 4277- sys_nosys }, /* 76 = unimplemented */ 4278- { 0, 0, 0, 4279- sys_nosys }, /* 77 = unimplemented */ 4280- { 0, 0, 0, 4281- sys_nosys }, /* 78 = unimplemented */ 4282- { 0, 0, 0, 4283- sys_nosys }, /* 79 = unimplemented */ 4284- { 0, 0, 0, 4285- sys_nosys }, /* 80 = unimplemented */ 4286- { 0, 0, 0, 4287- sys_nosys }, /* 81 = unimplemented */ 4288- { 0, 0, 0, 4289- sys_nosys }, /* 82 = unimplemented */ 4290- { 0, 0, 0, 4291- sys_nosys }, /* 83 = unimplemented */ 4292- { 0, 0, 0, 4293- sys_nosys }, /* 84 = unimplemented */ 4294- { 0, 0, 0, 4295- sys_nosys }, /* 85 = unimplemented */ 4296- { 0, 0, 0, 4297- sys_nosys }, /* 86 = unimplemented */ 4298- { 0, 0, 0, 4299- sys_nosys }, /* 87 = unimplemented */ 4300- { 0, 0, 0, 4301- sys_nosys }, /* 88 = unimplemented */ 4302- { ns(struct mach_sys_timebase_info_args), 0, 4303- (sy_call_t *)mach_sys_timebase_info },/* 89 = timebase_info */ 4304- { ns(struct mach_sys_wait_until_args), 0, 4305- (sy_call_t *)mach_sys_wait_until }, /* 90 = wait_until */ 4306- { 0, 0, 0, 4307- (sy_call_t *)mach_sys_timer_create },/* 91 = timer_create */ 4308- { ns(struct mach_sys_timer_destroy_args), 0, 4309- (sy_call_t *)mach_sys_timer_destroy },/* 92 = timer_destroy */ 4310- { ns(struct mach_sys_timer_arm_args), 0, 4311- (sy_call_t *)mach_sys_timer_arm }, /* 93 = timer_arm */ 4312- { ns(struct mach_sys_timer_cancel_args), 0, 4313- (sy_call_t *)mach_sys_timer_cancel },/* 94 = timer_cancel */ 4314- { 0, 0, 0, 4315- (sy_call_t *)mach_sys_get_time_base_info },/* 95 = get_time_base_info */ 4316- { 0, 0, 0, 4317- sys_nosys }, /* 96 = unimplemented */ 4318- { 0, 0, 0, 4319- sys_nosys }, /* 97 = unimplemented */ 4320- { 0, 0, 0, 4321- sys_nosys }, /* 98 = unimplemented */ 4322- { 0, 0, 0, 4323- sys_nosys }, /* 99 = unimplemented */ 4324- { 0, 0, 0, 4325- sys_nosys }, /* 100 = unimplemented */ 4326- { 0, 0, 0, 4327- sys_nosys }, /* 101 = unimplemented */ 4328- { 0, 0, 0, 4329- sys_nosys }, /* 102 = unimplemented */ 4330- { 0, 0, 0, 4331- sys_nosys }, /* 103 = unimplemented */ 4332- { 0, 0, 0, 4333- sys_nosys }, /* 104 = unimplemented */ 4334- { 0, 0, 0, 4335- sys_nosys }, /* 105 = unimplemented */ 4336- { 0, 0, 0, 4337- sys_nosys }, /* 106 = unimplemented */ 4338- { 0, 0, 0, 4339- sys_nosys }, /* 107 = unimplemented */ 4340- { 0, 0, 0, 4341- sys_nosys }, /* 108 = unimplemented */ 4342- { 0, 0, 0, 4343- sys_nosys }, /* 109 = unimplemented */ 4344- { 0, 0, 0, 4345- sys_nosys }, /* 110 = unimplemented */ 4346- { 0, 0, 0, 4347- sys_nosys }, /* 111 = unimplemented */ 4348- { 0, 0, 0, 4349- sys_nosys }, /* 112 = unimplemented */ 4350- { 0, 0, 0, 4351- sys_nosys }, /* 113 = unimplemented */ 4352- { 0, 0, 0, 4353- sys_nosys }, /* 114 = unimplemented */ 4354- { 0, 0, 0, 4355- sys_nosys }, /* 115 = unimplemented */ 4356- { 0, 0, 0, 4357- sys_nosys }, /* 116 = unimplemented */ 4358- { 0, 0, 0, 4359- sys_nosys }, /* 117 = unimplemented */ 4360- { 0, 0, 0, 4361- sys_nosys }, /* 118 = unimplemented */ 4362- { 0, 0, 0, 4363- sys_nosys }, /* 119 = unimplemented */ 4364- { 0, 0, 0, 4365- sys_nosys }, /* 120 = unimplemented */ 4366- { 0, 0, 0, 4367- sys_nosys }, /* 121 = unimplemented */ 4368- { 0, 0, 0, 4369- sys_nosys }, /* 122 = unimplemented */ 4370- { 0, 0, 0, 4371- sys_nosys }, /* 123 = unimplemented */ 4372- { 0, 0, 0, 4373- sys_nosys }, /* 124 = unimplemented */ 4374- { 0, 0, 0, 4375- sys_nosys }, /* 125 = unimplemented */ 4376- { 0, 0, 0, 4377- sys_nosys }, /* 126 = unimplemented */ 4378- { 0, 0, 0, 4379- sys_nosys }, /* 127 = unimplemented */ 4380+#if defined(_KERNEL_OPT) 4381+#endif 4382+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 0 = nosys */ 4383+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 1 = nosys */ 4384+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 2 = nosys */ 4385+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 3 = nosys */ 4386+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 4 = nosys */ 4387+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 5 = nosys */ 4388+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 6 = nosys */ 4389+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 7 = nosys */ 4390+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 8 = nosys */ 4391+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 9 = nosys */ 4392+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 10 = nosys */ 4393+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 11 = nosys */ 4394+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 12 = nosys */ 4395+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 13 = nosys */ 4396+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 14 = nosys */ 4397+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 15 = nosys */ 4398+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 16 = nosys */ 4399+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 17 = nosys */ 4400+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 18 = nosys */ 4401+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 19 = nosys */ 4402+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 20 = nosys */ 4403+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 21 = nosys */ 4404+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 22 = nosys */ 4405+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 23 = nosys */ 4406+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 24 = nosys */ 4407+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 25 = nosys */ 4408+ { 0, (sy_call_t *)sys_mach_reply_port, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 26 = mach_reply_port */ 4409+ { 0, (sy_call_t *)sys_mach_thread_self_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 27 = mach_thread_self_trap */ 4410+ { 0, (sy_call_t *)sys_mach_task_self_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 28 = mach_task_self_trap */ 4411+ { 0, (sy_call_t *)sys_mach_host_self_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 29 = mach_host_self_trap */ 4412+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 30 = nosys */ 4413+ { AS(mach_msg_trap_args), (sy_call_t *)sys_mach_msg_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 31 = mach_msg_trap */ 4414+ { AS(mach_msg_overwrite_trap_args), (sy_call_t *)sys_mach_msg_overwrite_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 32 = mach_msg_overwrite_trap */ 4415+ { AS(mach_semaphore_signal_trap_args), (sy_call_t *)sys_mach_semaphore_signal_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 33 = mach_semaphore_signal_trap */ 4416+ { AS(mach_semaphore_signal_all_trap_args), (sy_call_t *)sys_mach_semaphore_signal_all_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 34 = mach_semaphore_signal_all_trap */ 4417+ { AS(mach_semaphore_signal_thread_trap_args), (sy_call_t *)sys_mach_semaphore_signal_thread_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 35 = mach_semaphore_signal_thread_trap */ 4418+ { AS(mach_semaphore_wait_trap_args), (sy_call_t *)sys_mach_semaphore_wait_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 36 = mach_semaphore_wait_trap */ 4419+ { AS(mach_semaphore_wait_signal_trap_args), (sy_call_t *)sys_mach_semaphore_wait_signal_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 37 = mach_semaphore_wait_signal_trap */ 4420+ { AS(mach_semaphore_timedwait_trap_args), (sy_call_t *)sys_mach_semaphore_timedwait_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 38 = mach_semaphore_timedwait_trap */ 4421+ { AS(mach_semaphore_timedwait_signal_trap_args), (sy_call_t *)sys_mach_semaphore_timedwait_signal_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 39 = mach_semaphore_timedwait_signal_trap */ 4422+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 40 = nosys */ 4423+ { 0, (sy_call_t *)sys_mach_init_process, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 41 = mach_init_process */ 4424+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 42 = nosys */ 4425+ { AS(mach_map_fd_args), (sy_call_t *)sys_mach_map_fd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 43 = mach_map_fd */ 4426+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 44 = nosys */ 4427+ { AS(mach_task_for_pid_args), (sy_call_t *)sys_mach_task_for_pid, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 45 = mach_task_for_pid */ 4428+ { AS(mach_pid_for_task_args), (sy_call_t *)sys_mach_pid_for_task, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 46 = mach_pid_for_task */ 4429+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 47 = nosys */ 4430+ { AS(mach_macx_swapon_args), (sy_call_t *)sys_mach_macx_swapon, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 48 = mach_macx_swapon */ 4431+ { AS(mach_macx_swapoff_args), (sy_call_t *)sys_mach_macx_swapoff, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 49 = mach_macx_swapoff */ 4432+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 50 = nosys */ 4433+ { AS(mach_macx_triggers_args), (sy_call_t *)sys_mach_macx_triggers, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 51 = mach_macx_triggers */ 4434+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 52 = nosys */ 4435+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 53 = nosys */ 4436+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 54 = nosys */ 4437+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 55 = nosys */ 4438+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 56 = nosys */ 4439+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 57 = nosys */ 4440+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 58 = nosys */ 4441+ { AS(mach_swtch_pri_args), (sy_call_t *)sys_mach_swtch_pri, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 59 = mach_swtch_pri */ 4442+ { 0, (sy_call_t *)sys_mach_swtch, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 60 = mach_swtch */ 4443+ { AS(mach_syscall_thread_switch_args), (sy_call_t *)sys_mach_syscall_thread_switch, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 61 = mach_syscall_thread_switch */ 4444+ { AS(mach_clock_sleep_trap_args), (sy_call_t *)sys_mach_clock_sleep_trap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 62 = mach_clock_sleep_trap */ 4445+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 63 = nosys */ 4446+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 64 = nosys */ 4447+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 65 = nosys */ 4448+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 66 = nosys */ 4449+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 67 = nosys */ 4450+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 68 = nosys */ 4451+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 69 = nosys */ 4452+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 70 = nosys */ 4453+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 71 = nosys */ 4454+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 72 = nosys */ 4455+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 73 = nosys */ 4456+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 74 = nosys */ 4457+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 75 = nosys */ 4458+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 76 = nosys */ 4459+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 77 = nosys */ 4460+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 78 = nosys */ 4461+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 79 = nosys */ 4462+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 80 = nosys */ 4463+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 81 = nosys */ 4464+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 82 = nosys */ 4465+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 83 = nosys */ 4466+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 84 = nosys */ 4467+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 85 = nosys */ 4468+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 86 = nosys */ 4469+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 87 = nosys */ 4470+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 88 = nosys */ 4471+ { AS(mach_timebase_info_args), (sy_call_t *)sys_mach_timebase_info, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 89 = mach_timebase_info */ 4472+ { AS(mach_wait_until_args), (sy_call_t *)sys_mach_wait_until, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 90 = mach_wait_until */ 4473+ { 0, (sy_call_t *)sys_mach_timer_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 91 = mach_timer_create */ 4474+ { AS(mach_timer_destroy_args), (sy_call_t *)sys_mach_timer_destroy, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 92 = mach_timer_destroy */ 4475+ { AS(mach_timer_arm_args), (sy_call_t *)sys_mach_timer_arm, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 93 = mach_timer_arm */ 4476+ { AS(mach_timer_cancel_args), (sy_call_t *)sys_mach_timer_cancel, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 94 = mach_timer_cancel */ 4477+ { 0, (sy_call_t *)sys_mach_get_time_base_info, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 95 = mach_get_time_base_info */ 4478+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 96 = nosys */ 4479+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 97 = nosys */ 4480+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 98 = nosys */ 4481+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 99 = nosys */ 4482+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 100 = nosys */ 4483+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 101 = nosys */ 4484+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 102 = nosys */ 4485+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 103 = nosys */ 4486+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 104 = nosys */ 4487+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 105 = nosys */ 4488+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 106 = nosys */ 4489+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 107 = nosys */ 4490+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 108 = nosys */ 4491+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 109 = nosys */ 4492+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 110 = nosys */ 4493+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 111 = nosys */ 4494+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 112 = nosys */ 4495+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 113 = nosys */ 4496+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 114 = nosys */ 4497+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 115 = nosys */ 4498+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 116 = nosys */ 4499+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 117 = nosys */ 4500+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 118 = nosys */ 4501+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 119 = nosys */ 4502+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 120 = nosys */ 4503+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 121 = nosys */ 4504+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 122 = nosys */ 4505+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 123 = nosys */ 4506+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 124 = nosys */ 4507+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 125 = nosys */ 4508+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 126 = nosys */ 4509+ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 127 = nosys */ 4510 }; 4511diff --git a/sys/compat/mach/mach_task.c b/sys/compat/mach/mach_task.c 4512index d37c571..b67762f 100644 4513--- a/sys/compat/mach/mach_task.c 4514+++ b/sys/compat/mach/mach_task.c 4515@@ -1,4 +1,4 @@ 4516-/* $NetBSD: mach_task.c,v 1.72 2010/07/01 02:38:29 rmind Exp $ */ 4517+/* $FreeBSD$ */ 4518 4519 /*- 4520 * Copyright (c) 2002-2003, 2008 The NetBSD Foundation, Inc. 4521@@ -29,10 +29,9 @@ 4522 * POSSIBILITY OF SUCH DAMAGE. 4523 */ 4524 4525-#include "opt_compat_darwin.h" 4526 4527 #include <sys/cdefs.h> 4528-__KERNEL_RCSID(0, "$NetBSD: mach_task.c,v 1.72 2010/07/01 02:38:29 rmind Exp $"); 4529+__FBSDID("$FreeBSD$"); 4530 4531 #include <sys/types.h> 4532 #include <sys/param.h> 4533@@ -43,7 +42,7 @@ __KERNEL_RCSID(0, "$NetBSD: mach_task.c,v 1.72 2010/07/01 02:38:29 rmind Exp $") 4534 #include <sys/resourcevar.h> 4535 #include <sys/malloc.h> 4536 #include <sys/mount.h> 4537-#include <sys/syscallargs.h> 4538+#include <sys/sysproto.h> 4539 #include <sys/kauth.h> 4540 4541 #include <uvm/uvm_extern.h> 4542@@ -57,7 +56,7 @@ __KERNEL_RCSID(0, "$NetBSD: mach_task.c,v 1.72 2010/07/01 02:38:29 rmind Exp $") 4543 #include <compat/mach/mach_port.h> 4544 #include <compat/mach/mach_task.h> 4545 #include <compat/mach/mach_services.h> 4546-#include <compat/mach/mach_syscallargs.h> 4547+#include <compat/mach/mach_proto.h> 4548 4549 #ifdef COMPAT_DARWIN 4550 #include <compat/darwin/darwin_exec.h> 4551@@ -74,25 +73,25 @@ mach_task_get_special_port(struct mach_trap_args *args) 4552 mach_task_get_special_port_request_t *req = args->smsg; 4553 mach_task_get_special_port_reply_t *rep = args->rmsg; 4554 size_t *msglen = args->rsize; 4555- struct lwp *l = args->l; 4556- struct lwp *tl = args->tl; 4557+ struct thread *td = args->td; 4558+ struct thread *ttd = args->ttd; 4559 struct mach_emuldata *med; 4560 struct mach_right *mr; 4561 4562- med = (struct mach_emuldata *)tl->l_proc->p_emuldata; 4563+ med = (struct mach_emuldata *)ttd->td_proc->p_emuldata; 4564 4565 switch (req->req_which_port) { 4566 case MACH_TASK_KERNEL_PORT: 4567- mr = mach_right_get(med->med_kernel, l, MACH_PORT_TYPE_SEND, 0); 4568+ mr = mach_right_get(med->med_kernel, td, MACH_PORT_TYPE_SEND, 0); 4569 break; 4570 4571 case MACH_TASK_HOST_PORT: 4572- mr = mach_right_get(med->med_host, l, MACH_PORT_TYPE_SEND, 0); 4573+ mr = mach_right_get(med->med_host, td, MACH_PORT_TYPE_SEND, 0); 4574 break; 4575 4576 case MACH_TASK_BOOTSTRAP_PORT: 4577 mr = mach_right_get(med->med_bootstrap, 4578- l, MACH_PORT_TYPE_SEND, 0); 4579+ td, MACH_PORT_TYPE_SEND, 0); 4580 break; 4581 4582 case MACH_TASK_WIRED_LEDGER_PORT: 4583@@ -118,8 +117,8 @@ mach_ports_lookup(struct mach_trap_args *args) 4584 mach_ports_lookup_request_t *req = args->smsg; 4585 mach_ports_lookup_reply_t *rep = args->rmsg; 4586 size_t *msglen = args->rsize; 4587- struct lwp *l = args->l; 4588- struct lwp *tl = args->tl; 4589+ struct thread *td = args->td; 4590+ struct thread *ttd = args->ttd; 4591 struct mach_emuldata *med; 4592 struct mach_right *mr; 4593 mach_port_name_t mnp[7]; 4594@@ -133,17 +132,17 @@ mach_ports_lookup(struct mach_trap_args *args) 4595 * filled. We have to see more of this in order to fully understand 4596 * how this trap works. 4597 */ 4598- med = (struct mach_emuldata *)tl->l_proc->p_emuldata; 4599+ med = (struct mach_emuldata *)ttd->td_proc->p_emuldata; 4600 mnp[0] = (mach_port_name_t)MACH_PORT_DEAD; 4601 mnp[3] = (mach_port_name_t)MACH_PORT_DEAD; 4602 mnp[5] = (mach_port_name_t)MACH_PORT_DEAD; 4603 mnp[6] = (mach_port_name_t)MACH_PORT_DEAD; 4604 4605- mr = mach_right_get(med->med_kernel, l, MACH_PORT_TYPE_SEND, 0); 4606+ mr = mach_right_get(med->med_kernel, td, MACH_PORT_TYPE_SEND, 0); 4607 mnp[MACH_TASK_KERNEL_PORT] = mr->mr_name; 4608- mr = mach_right_get(med->med_host, l, MACH_PORT_TYPE_SEND, 0); 4609+ mr = mach_right_get(med->med_host, td, MACH_PORT_TYPE_SEND, 0); 4610 mnp[MACH_TASK_HOST_PORT] = mr->mr_name; 4611- mr = mach_right_get(med->med_bootstrap, l, MACH_PORT_TYPE_SEND, 0); 4612+ mr = mach_right_get(med->med_bootstrap, td, MACH_PORT_TYPE_SEND, 0); 4613 mnp[MACH_TASK_BOOTSTRAP_PORT] = mr->mr_name; 4614 4615 /* 4616@@ -173,8 +172,8 @@ mach_task_set_special_port(struct mach_trap_args *args) 4617 mach_task_set_special_port_request_t *req = args->smsg; 4618 mach_task_set_special_port_reply_t *rep = args->rmsg; 4619 size_t *msglen = args->rsize; 4620- struct lwp *l = args->l; 4621- struct lwp *tl = args->tl; 4622+ struct thread *td = args->td; 4623+ struct thread *ttd = args->ttd; 4624 mach_port_t mn; 4625 struct mach_right *mr; 4626 struct mach_port *mp; 4627@@ -187,13 +186,13 @@ mach_task_set_special_port(struct mach_trap_args *args) 4628 return mach_msg_error(args, 0); 4629 4630 /* Does the inserted port exists? */ 4631- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_ALL_RIGHTS)) == 0) 4632+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_ALL_RIGHTS)) == 0) 4633 return mach_msg_error(args, EPERM); 4634 4635 if (mr->mr_type == MACH_PORT_TYPE_DEAD_NAME) 4636 return mach_msg_error(args, EINVAL); 4637 4638- med = (struct mach_emuldata *)tl->l_proc->p_emuldata; 4639+ med = (struct mach_emuldata *)ttd->td_proc->p_emuldata; 4640 4641 switch (req->req_which_port) { 4642 case MACH_TASK_KERNEL_PORT: 4643@@ -225,7 +224,7 @@ mach_task_set_special_port(struct mach_trap_args *args) 4644 { 4645 struct darwin_emuldata *ded; 4646 4647- ded = tl->l_proc->p_emuldata; 4648+ ded = ttd->td_proc->p_emuldata; 4649 if (ded->ded_fakepid == 1) { 4650 mach_bootstrap_port = med->med_bootstrap; 4651 #ifdef DEBUG_DARWIN 4652@@ -261,9 +260,9 @@ mach_task_threads(struct mach_trap_args *args) 4653 mach_task_threads_request_t *req = args->smsg; 4654 mach_task_threads_reply_t *rep = args->rmsg; 4655 size_t *msglen = args->rsize; 4656- struct lwp *l = args->l; 4657- struct lwp *tl = args->tl; 4658- struct proc *tp = tl->l_proc; 4659+ struct thread *td = args->td; 4660+ struct thread *ttd = args->ttd; 4661+ struct proc *tp = ttd->td_proc; 4662 struct lwp *cl; 4663 struct mach_emuldata *med; 4664 struct mach_lwp_emuldata *mle; 4665@@ -281,7 +280,7 @@ mach_task_threads(struct mach_trap_args *args) 4666 4667 LIST_FOREACH(cl, &tp->p_lwps, l_sibling) { 4668 mle = cl->l_emuldata; 4669- mr = mach_right_get(mle->mle_kernel, l, MACH_PORT_TYPE_SEND, 0); 4670+ mr = mach_right_get(mle->mle_kernel, td, MACH_PORT_TYPE_SEND, 0); 4671 mnp[i++] = mr->mr_name; 4672 } 4673 4674@@ -306,15 +305,15 @@ mach_task_get_exception_ports(struct mach_trap_args *args) 4675 { 4676 mach_task_get_exception_ports_request_t *req = args->smsg; 4677 mach_task_get_exception_ports_reply_t *rep = args->rmsg; 4678- struct lwp *l = args->l; 4679- struct lwp *tl = args->tl; 4680+ struct thread *td = args->td; 4681+ struct thread *ttd = args->ttd; 4682 size_t *msglen = args->rsize; 4683 struct mach_emuldata *med; 4684 struct mach_right *mr; 4685 struct mach_exc_info *mei; 4686 int i, j, count; 4687 4688- med = tl->l_proc->p_emuldata; 4689+ med = ttd->td_proc->p_emuldata; 4690 4691 /* It always returns an array of 32 ports even if only 9 can be used */ 4692 count = sizeof(rep->rep_old_handler) / sizeof(rep->rep_old_handler[0]); 4693@@ -336,7 +335,7 @@ mach_task_get_exception_ports(struct mach_trap_args *args) 4694 } 4695 mei = med->med_exc[i]->mp_data; 4696 4697- mr = mach_right_get(med->med_exc[i], l, MACH_PORT_TYPE_SEND, 0); 4698+ mr = mach_right_get(med->med_exc[i], td, MACH_PORT_TYPE_SEND, 0); 4699 4700 mach_add_port_desc(rep, mr->mr_name); 4701 4702@@ -369,8 +368,8 @@ mach_task_set_exception_ports(struct mach_trap_args *args) 4703 { 4704 mach_task_set_exception_ports_request_t *req = args->smsg; 4705 mach_task_set_exception_ports_reply_t *rep = args->rmsg; 4706- struct lwp *l = args->l; 4707- struct lwp *tl = args->tl; 4708+ struct thread *td = args->td; 4709+ struct thread *ttd = args->ttd; 4710 size_t *msglen = args->rsize; 4711 struct mach_emuldata *med; 4712 mach_port_name_t mn; 4713@@ -379,7 +378,7 @@ mach_task_set_exception_ports(struct mach_trap_args *args) 4714 struct mach_exc_info *mei; 4715 4716 mn = req->req_new_port.name; 4717- if ((mr = mach_right_check(mn, l, MACH_PORT_TYPE_SEND)) == 0) 4718+ if ((mr = mach_right_check(mn, td, MACH_PORT_TYPE_SEND)) == 0) 4719 return mach_msg_error(args, EPERM); 4720 4721 mp = mr->mr_port; 4722@@ -388,7 +387,7 @@ mach_task_set_exception_ports(struct mach_trap_args *args) 4723 (mp->mp_datatype != MACH_MP_NONE)) 4724 printf("mach_task_set_exception_ports: data exists\n"); 4725 #endif 4726- mei = malloc(sizeof(*mei), M_EMULDATA, M_WAITOK); 4727+ mei = malloc(sizeof(*mei), M_MACH, M_WAITOK); 4728 mei->mei_flavor = req->req_flavor; 4729 mei->mei_behavior = req->req_behavior; 4730 4731@@ -396,7 +395,7 @@ mach_task_set_exception_ports(struct mach_trap_args *args) 4732 mp->mp_flags |= MACH_MP_DATA_ALLOCATED; 4733 mp->mp_datatype = MACH_MP_EXC_INFO; 4734 4735- med = tl->l_proc->p_emuldata; 4736+ med = ttd->td_proc->p_emuldata; 4737 if (req->req_mask & MACH_EXC_MASK_BAD_ACCESS) 4738 update_exception_port(med, MACH_EXC_BAD_ACCESS, mp); 4739 if (req->req_mask & MACH_EXC_MASK_BAD_INSTRUCTION) 4740@@ -439,10 +438,10 @@ mach_task_info(struct mach_trap_args *args) 4741 { 4742 mach_task_info_request_t *req = args->smsg; 4743 mach_task_info_reply_t *rep = args->rmsg; 4744- struct lwp *tl = args->tl; 4745+ struct thread *ttd = args->ttd; 4746 size_t *msglen = args->rsize; 4747 int count; 4748- struct proc *tp = tl->l_proc; 4749+ struct proc *tp = ttd->td_proc; 4750 4751 switch(req->req_flavor) { 4752 case MACH_TASK_BASIC_INFO: { 4753@@ -542,10 +541,10 @@ mach_task_suspend(struct mach_trap_args *args) 4754 mach_task_suspend_request_t *req = args->smsg; 4755 mach_task_suspend_reply_t *rep = args->rmsg; 4756 size_t *msglen = args->rsize; 4757- struct lwp *tl = args->tl; 4758- struct lwp *lp; 4759+ struct thread *ttd = args->ttd; 4760+ struct thread *tdp; 4761 struct mach_emuldata *med; 4762- struct proc *tp = tl->l_proc; 4763+ struct proc *tp = ttd->td_proc; 4764 4765 med = tp->p_emuldata; 4766 med->med_suspend++; /* XXX Mach also has a per thread semaphore */ 4767@@ -585,9 +584,9 @@ mach_task_resume(struct mach_trap_args *args) 4768 mach_task_resume_request_t *req = args->smsg; 4769 mach_task_resume_reply_t *rep = args->rmsg; 4770 size_t *msglen = args->rsize; 4771- struct lwp *tl = args->tl; 4772+ struct thread *ttd = args->ttd; 4773 struct mach_emuldata *med; 4774- struct proc *tp = tl->l_proc; 4775+ struct proc *tp = ttd->td_proc; 4776 4777 med = tp->p_emuldata; 4778 med->med_suspend--; /* XXX Mach also has a per thread semaphore */ 4779@@ -622,13 +621,13 @@ mach_task_terminate(struct mach_trap_args *args) 4780 mach_task_resume_request_t *req = args->smsg; 4781 mach_task_resume_reply_t *rep = args->rmsg; 4782 size_t *msglen = args->rsize; 4783- struct lwp *tl = args->tl; 4784+ struct thread *ttd = args->ttd; 4785 struct sys_exit_args cup; 4786 register_t retval; 4787 int error; 4788 4789 4790- SCARG(&cup, rval) = 0; 4791+ &cup->rval = 0; 4792 error = sys_exit(tl, &cup, &retval); 4793 4794 *msglen = sizeof(*rep); 4795@@ -642,7 +641,7 @@ mach_task_terminate(struct mach_trap_args *args) 4796 } 4797 4798 int 4799-mach_sys_task_for_pid(struct lwp *l, const struct mach_sys_task_for_pid_args *uap, register_t *retval) 4800+mach_sys_task_for_pid(struct thread *td, struct mach_sys_task_for_pid_args *uap) 4801 { 4802 /* { 4803 syscallarg(mach_port_t) target_tport; 4804@@ -661,12 +660,12 @@ mach_sys_task_for_pid(struct lwp *l, const struct mach_sys_task_for_pid_args *ua 4805 * yet, so this parameter should be useless. 4806 * However, we still validate it. 4807 */ 4808- if ((mr = mach_right_check(SCARG(uap, target_tport), 4809- l, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 4810+ if ((mr = mach_right_check(uap->target_tport, 4811+ td, MACH_PORT_TYPE_ALL_RIGHTS)) == NULL) 4812 return EPERM; 4813 4814 mutex_enter(proc_lock); 4815- if ((t = proc_find(SCARG(uap, pid))) == NULL) { 4816+ if ((t = proc_find(uap->pid)) == NULL) { 4817 mutex_exit(proc_lock); 4818 return ESRCH; 4819 } 4820@@ -694,9 +693,9 @@ mach_sys_task_for_pid(struct lwp *l, const struct mach_sys_task_for_pid_args *ua 4821 4822 /* XXX: Unlocked, broken. */ 4823 med = t->p_emuldata; 4824- mr = mach_right_get(med->med_kernel, l, MACH_PORT_TYPE_SEND, 0); 4825+ mr = mach_right_get(med->med_kernel, td, MACH_PORT_TYPE_SEND, 0); 4826 if (mr) { 4827- error = copyout(&mr->mr_name, SCARG(uap, t), 4828+ error = copyout(&mr->mr_name, uap->t, 4829 sizeof(mr->mr_name)); 4830 } else { 4831 error = EINVAL; 4832diff --git a/sys/compat/mach/mach_task.h b/sys/compat/mach/mach_task.h 4833index e0ea1f8..ed5e8ff 100644 4834--- a/sys/compat/mach/mach_task.h 4835+++ b/sys/compat/mach/mach_task.h 4836@@ -1,4 +1,4 @@ 4837-/* $NetBSD: mach_task.h,v 1.16 2008/04/28 20:23:44 martin Exp $ */ 4838+/* $FreeBSD$ */ 4839 4840 /*- 4841 * Copyright (c) 2002-2003 The NetBSD Foundation, Inc. 4842diff --git a/sys/compat/mach/mach_thread.c b/sys/compat/mach/mach_thread.c 4843index a5abd61..36bccba 100644 4844--- a/sys/compat/mach/mach_thread.c 4845+++ b/sys/compat/mach/mach_thread.c 4846@@ -1,5 +1,3 @@ 4847-/* $NetBSD: mach_thread.c,v 1.50 2010/06/13 04:13:31 yamt Exp $ */ 4848- 4849 /*- 4850 * Copyright (c) 2002-2003 The NetBSD Foundation, Inc. 4851 * All rights reserved. 4852@@ -30,13 +28,14 @@ 4853 */ 4854 4855 #include <sys/cdefs.h> 4856-__KERNEL_RCSID(0, "$NetBSD: mach_thread.c,v 1.50 2010/06/13 04:13:31 yamt Exp $"); 4857+__FBSDID("$FreeBSD$"); 4858 4859 #include <sys/types.h> 4860 #include <sys/param.h> 4861 #include <sys/kernel.h> 4862 #include <sys/systm.h> 4863 #include <sys/signal.h> 4864+#include <sys/lock.h> 4865 #include <sys/rwlock.h> 4866 #include <sys/queue.h> 4867 #include <sys/proc.h> 4868@@ -54,10 +53,10 @@ __KERNEL_RCSID(0, "$NetBSD: mach_thread.c,v 1.50 2010/06/13 04:13:31 yamt Exp $" 4869 #include <compat/mach/mach_thread.h> 4870 #include <compat/mach/mach_errno.h> 4871 #include <compat/mach/mach_services.h> 4872-#include <compat/mach/mach_syscallargs.h> 4873+#include <compat/mach/mach_proto.h> 4874 4875 int 4876-mach_sys_syscall_thread_switch(struct lwp *l, const struct mach_sys_syscall_thread_switch_args *uap, register_t *retval) 4877+mach_sys_syscall_thread_switch(struct thread *td, const struct mach_sys_syscall_thread_switch_args *uap) 4878 { 4879 /* { 4880 syscallarg(mach_port_name_t) thread_name; 4881@@ -67,15 +66,15 @@ mach_sys_syscall_thread_switch(struct lwp *l, const struct mach_sys_syscall_thre 4882 int timeout; 4883 struct mach_emuldata *med; 4884 4885- med = (struct mach_emuldata *)l->l_proc->p_emuldata; 4886- timeout = SCARG(uap, option_time) * hz / 1000; 4887+ med = (struct mach_emuldata *)td->td_proc->p_emuldata; 4888+ timeout = uap->option_time * hz / 1000; 4889 4890 /* 4891 * The day we will be able to find out the struct proc from 4892 * the port number, try to use preempt() to call the right thread. 4893 * [- but preempt() is for _involuntary_ context switches.] 4894 */ 4895- switch(SCARG(uap, option)) { 4896+ switch(uap->option) { 4897 case MACH_SWITCH_OPTION_NONE: 4898 yield(); 4899 break; 4900@@ -95,14 +94,14 @@ mach_sys_syscall_thread_switch(struct lwp *l, const struct mach_sys_syscall_thre 4901 break; 4902 4903 default: 4904- uprintf("mach_sys_syscall_thread_switch(): unknown option %d\n", SCARG(uap, option)); 4905+ uprintf("mach_sys_syscall_thread_switch(): unknown option %d\n", uap->option); 4906 break; 4907 } 4908 return 0; 4909 } 4910 4911 int 4912-mach_sys_swtch_pri(struct lwp *l, const struct mach_sys_swtch_pri_args *uap, register_t *retval) 4913+mach_sys_swtch_pri(struct thread *td, struct mach_sys_swtch_pri_args *uap) 4914 { 4915 /* { 4916 syscallarg(int) pri; 4917@@ -115,21 +114,21 @@ mach_sys_swtch_pri(struct lwp *l, const struct mach_sys_swtch_pri_args *uap, reg 4918 KERNEL_UNLOCK_ALL(l, &l->l_biglocks); 4919 lwp_lock(l); 4920 if (l->l_stat == LSONPROC) 4921- l->l_proc->p_stats->p_ru.ru_nivcsw++; /* XXXSMP */ 4922- *retval = mi_switch(l); 4923+ td->td_proc->p_stats->p_ru.ru_nivcsw++; /* XXXSMP */ 4924+ td->td_retval[0] = mi_switch(td); 4925 KERNEL_LOCK(l->l_biglocks, l); 4926 4927 return 0; 4928 } 4929 4930 int 4931-mach_sys_swtch(struct lwp *l, const void *v, register_t *retval) 4932+mach_sys_swtch(struct thread *td, const void *v) 4933 { 4934 struct mach_sys_swtch_pri_args cup; 4935 4936- SCARG(&cup, pri) = 0; 4937+ cup.pri = 0; 4938 4939- return mach_sys_swtch_pri(l, &cup, retval); 4940+ return mach_sys_swtch_pri(td, &cup, retval); 4941 } 4942 4943 4944@@ -166,12 +165,12 @@ mach_thread_create_running(struct mach_trap_args *args) 4945 mach_thread_create_running_request_t *req = args->smsg; 4946 mach_thread_create_running_reply_t *rep = args->rmsg; 4947 size_t *msglen = args->rsize; 4948- struct lwp *l = args->l; 4949- struct proc *p = l->l_proc; 4950+ struct thread *td = args->td; 4951+ struct proc *p = td->td_proc; 4952 struct mach_create_thread_child_args mctc; 4953 struct mach_right *child_mr; 4954 struct mach_lwp_emuldata *mle; 4955- vaddr_t uaddr; 4956+ vm_offset_t uaddr; 4957 int flags; 4958 int error; 4959 int end_offset; 4960@@ -217,7 +216,7 @@ mach_thread_create_running(struct mach_trap_args *args) 4961 * Get the child's kernel port 4962 */ 4963 mle = mctc.mctc_lwp->l_emuldata; 4964- child_mr = mach_right_get(mle->mle_kernel, l, MACH_PORT_TYPE_SEND, 0); 4965+ child_mr = mach_right_get(mle->mle_kernel, td, MACH_PORT_TYPE_SEND, 0); 4966 4967 /* 4968 * The child relies on some values in mctc, so we should not 4969@@ -243,9 +242,9 @@ mach_thread_info(struct mach_trap_args *args) 4970 mach_thread_info_request_t *req = args->smsg; 4971 mach_thread_info_reply_t *rep = args->rmsg; 4972 size_t *msglen = args->rsize; 4973- struct lwp *l = args->l; 4974- struct lwp *tl = args->tl; 4975- struct proc *tp = tl->l_proc; 4976+ struct thread *td = args->td; 4977+ struct thread *ttd = args->ttd; 4978+ struct proc *tp = ttd->td_proc; 4979 4980 /* Sanity check req->req_count */ 4981 if (req->req_count > 12) 4982@@ -335,7 +334,7 @@ mach_thread_get_state(struct mach_trap_args *args) 4983 mach_thread_get_state_request_t *req = args->smsg; 4984 mach_thread_get_state_reply_t *rep = args->rmsg; 4985 size_t *msglen = args->rsize; 4986- struct lwp *tl = args->tl; 4987+ struct thread *ttd = args->ttd; 4988 int error; 4989 int size; 4990 4991@@ -361,7 +360,7 @@ mach_thread_set_state(struct mach_trap_args *args) 4992 mach_thread_set_state_request_t *req = args->smsg; 4993 mach_thread_set_state_reply_t *rep = args->rmsg; 4994 size_t *msglen = args->rsize; 4995- struct lwp *tl = args->tl; 4996+ struct thread *ttd = args->ttd; 4997 int error; 4998 int end_offset; 4999 5000@@ -390,9 +389,9 @@ mach_thread_suspend(struct mach_trap_args *args) 5001 mach_thread_suspend_request_t *req = args->smsg; 5002 mach_thread_suspend_reply_t *rep = args->rmsg; 5003 size_t *msglen = args->rsize; 5004- struct lwp *l = args->l; 5005- struct lwp *tl = args->tl; 5006- struct proc *p = tl->l_proc; 5007+ struct thread *td = args->td; 5008+ struct thread *ttd = args->ttd; 5009+ struct proc *p = ttd->td_proc; 5010 int error; 5011 5012 mutex_enter(p->p_lock); 5013@@ -414,8 +413,8 @@ mach_thread_resume(struct mach_trap_args *args) 5014 mach_thread_resume_request_t *req = args->smsg; 5015 mach_thread_resume_reply_t *rep = args->rmsg; 5016 size_t *msglen = args->rsize; 5017- struct lwp *tl = args->tl; 5018- struct proc *p = tl->l_proc; 5019+ struct thread *ttd = args->ttd; 5020+ struct proc *p = ttd->td_proc; 5021 5022 mutex_enter(p->p_lock); 5023 lwp_lock(tl); 5024@@ -436,7 +435,7 @@ mach_thread_abort(struct mach_trap_args *args) 5025 mach_thread_abort_request_t *req = args->smsg; 5026 mach_thread_abort_reply_t *rep = args->rmsg; 5027 size_t *msglen = args->rsize; 5028- struct lwp *tl = args->tl; 5029+ struct thread *ttd = args->ttd; 5030 5031 lwp_exit(tl); 5032 5033@@ -454,7 +453,7 @@ mach_thread_set_policy(struct mach_trap_args *args) 5034 mach_thread_set_policy_request_t *req = args->smsg; 5035 mach_thread_set_policy_reply_t *rep = args->rmsg; 5036 size_t *msglen = args->rsize; 5037- struct lwp *tl = args->tl; 5038+ struct thread *ttd = args->ttd; 5039 mach_port_t mn; 5040 struct mach_right *mr; 5041 int limit_count_offset, limit_offset; 5042diff --git a/sys/compat/mach/mach_thread.h b/sys/compat/mach/mach_thread.h 5043index 9a10ebb..30ef758 100644 5044--- a/sys/compat/mach/mach_thread.h 5045+++ b/sys/compat/mach/mach_thread.h 5046@@ -1,4 +1,4 @@ 5047-/* $NetBSD: mach_thread.h,v 1.19 2008/04/28 20:23:44 martin Exp $ */ 5048+/* $FreeBSD$ */ 5049 5050 /*- 5051 * Copyright (c) 2002-2003 The NetBSD Foundation, Inc. 5052@@ -42,8 +42,8 @@ 5053 5054 /* For mach_create_thread_child() */ 5055 struct mach_create_thread_child_args { 5056- struct lwp *mctc_lwp; 5057- struct lwp *mctc_oldlwp; 5058+ struct thread *mctc_lwp; 5059+ struct thread *mctc_oldlwp; 5060 mach_natural_t *mctc_state; 5061 int mctc_flavor; 5062 int mctc_child_done; 5063@@ -242,8 +242,8 @@ typedef struct { 5064 } mach_thread_set_policy_reply_t; 5065 5066 /* These are machine dependent functions */ 5067-int mach_thread_get_state_machdep(struct lwp *, int, void *, int *); 5068-int mach_thread_set_state_machdep(struct lwp *, int, void *); 5069+int mach_thread_get_state_machdep(struct thread *, int, void *, int *); 5070+int mach_thread_set_state_machdep(struct thread *, int, void *); 5071 void mach_create_thread_child(void *); 5072 5073 #endif /* _MACH_THREAD_H_ */ 5074diff --git a/sys/compat/mach/mach_types.h b/sys/compat/mach/mach_types.h 5075index 7a2617b..6ef1603 100644 5076--- a/sys/compat/mach/mach_types.h 5077+++ b/sys/compat/mach/mach_types.h 5078@@ -1,5 +1,4 @@ 5079-/* $NetBSD: mach_types.h,v 1.24 2008/04/28 20:23:44 martin Exp $ */ 5080- 5081+/* $FreeBSD$ */ 5082 /*- 5083 * Copyright (c) 2001-2003 The NetBSD Foundation, Inc. 5084 * All rights reserved. 5085@@ -32,6 +31,10 @@ 5086 #ifndef _MACH_TYPES_H_ 5087 #define _MACH_TYPES_H_ 5088 5089+#include <sys/param.h> 5090+#include <sys/kernel.h> 5091+#include <sys/malloc.h> 5092+ 5093 typedef int mach_port_t; 5094 typedef int mach_port_name_t; 5095 typedef int mach_port_type_t; 5096@@ -73,6 +76,7 @@ typedef unsigned int mach_vm_machine_attribute_t; 5097 typedef mach_natural_t mach_port_urefs_t; 5098 typedef int mach_port_delta_t; 5099 5100+MALLOC_DECLARE(M_MACH); 5101 5102 /* 5103 * This is called cproc_t in Mach (cthread_t in Darwin). It is a pointer to 5104diff --git a/sys/compat/mach/mach_vm.c b/sys/compat/mach/mach_vm.c 5105index b495add..aeb3588 100644 5106--- a/sys/compat/mach/mach_vm.c 5107+++ b/sys/compat/mach/mach_vm.c 5108@@ -1,5 +1,3 @@ 5109-/* $NetBSD: mach_vm.c,v 1.62 2010/06/24 13:03:07 hannken Exp $ */ 5110- 5111 /*- 5112 * Copyright (c) 2002-2003, 2008 The NetBSD Foundation, Inc. 5113 * All rights reserved. 5114@@ -30,7 +28,7 @@ 5115 */ 5116 5117 #include <sys/cdefs.h> 5118-__KERNEL_RCSID(0, "$NetBSD: mach_vm.c,v 1.62 2010/06/24 13:03:07 hannken Exp $"); 5119+__FBSDID("$FreeBSD$"); 5120 5121 #include <sys/types.h> 5122 #include <sys/param.h> 5123@@ -44,11 +42,11 @@ __KERNEL_RCSID(0, "$NetBSD: mach_vm.c,v 1.62 2010/06/24 13:03:07 hannken Exp $") 5124 #include <sys/filedesc.h> 5125 #include <sys/ktrace.h> 5126 #include <sys/exec.h> 5127-#include <sys/syscallargs.h> 5128+#include <sys/sysproto.h> 5129 5130-#include <uvm/uvm_prot.h> 5131-#include <uvm/uvm_map.h> 5132-#include <uvm/uvm_extern.h> 5133+#include <vm/pmap.h> 5134+#include <vm/vm_map.h> 5135+#include <vm/vm_extern.h> 5136 5137 #include <compat/mach/mach_types.h> 5138 #include <compat/mach/mach_message.h> 5139@@ -57,7 +55,7 @@ __KERNEL_RCSID(0, "$NetBSD: mach_vm.c,v 1.62 2010/06/24 13:03:07 hannken Exp $") 5140 #include <compat/mach/mach_errno.h> 5141 #include <compat/mach/mach_port.h> 5142 #include <compat/mach/mach_services.h> 5143-#include <compat/mach/mach_syscallargs.h> 5144+#include <compat/mach/mach_proto.h> 5145 5146 int 5147 mach_vm_map(struct mach_trap_args *args) 5148@@ -65,10 +63,10 @@ mach_vm_map(struct mach_trap_args *args) 5149 mach_vm_map_request_t *req = args->smsg; 5150 mach_vm_map_reply_t *rep = args->rmsg; 5151 size_t *msglen = args->rsize; 5152- struct lwp *tl = args->tl; 5153- struct proc *tp = tl->l_proc; 5154+ struct thread *ttd = args->ttd; 5155+ struct proc *tp = ttd->td_proc; 5156 struct sys_mmap_args cup; 5157- vaddr_t addr; 5158+ vm_offset_t addr; 5159 int error, flags; 5160 void *ret; 5161 5162@@ -95,10 +93,10 @@ mach_vm_map(struct mach_trap_args *args) 5163 req->req_mask += 1; 5164 5165 if (req->req_flags & MACH_VM_FLAGS_ANYWHERE) { 5166- SCARG(&cup, flags) = MAP_ANON; 5167+ cup.flags = MAP_ANON; 5168 flags = 0; 5169 } else { 5170- SCARG(&cup, flags) = MAP_ANON | MAP_FIXED; 5171+ cup.flags = MAP_ANON | MAP_FIXED; 5172 flags = MAP_FIXED; 5173 } 5174 5175@@ -107,7 +105,7 @@ mach_vm_map(struct mach_trap_args *args) 5176 * requested alignement. 5177 */ 5178 vm_map_lock(&tp->p_vmspace->vm_map); 5179- ret = uvm_map_findspace(&tp->p_vmspace->vm_map, 5180+ ret = vm_map_findspace(&tp->p_vmspace->vm_map, 5181 trunc_page(req->req_address), req->req_size, &addr, 5182 NULL, 0, req->req_mask, flags); 5183 vm_map_unlock(&tp->p_vmspace->vm_map); 5184@@ -117,27 +115,27 @@ mach_vm_map(struct mach_trap_args *args) 5185 5186 switch(req->req_inherance) { 5187 case MACH_VM_INHERIT_SHARE: 5188- SCARG(&cup, flags) |= MAP_INHERIT; 5189+ cup.flags |= MAP_INHERIT_SHARE; 5190 break; 5191 case MACH_VM_INHERIT_COPY: 5192- SCARG(&cup, flags) |= MAP_COPY; 5193+ cup.flags) |= MAP_COPY_ON_WRITE; 5194 break; 5195 case MACH_VM_INHERIT_NONE: 5196 break; 5197 case MACH_VM_INHERIT_DONATE_COPY: 5198 default: 5199- uprintf("mach_vm_map: unsupported inherance flag %d\n", 5200+ uprintf("mach_vm_map: unsupported inheritance flag %d\n", 5201 req->req_inherance); 5202 break; 5203 } 5204 5205- SCARG(&cup, addr) = (void *)addr; 5206- SCARG(&cup, len) = req->req_size; 5207- SCARG(&cup, prot) = req->req_cur_protection; 5208- SCARG(&cup, fd) = -1; /* XXX For now, no object mapping */ 5209- SCARG(&cup, pos) = req->req_offset; 5210+ cup.addr) = (void *)addr; 5211+ cup.len) = req->req_size; 5212+ cup.prot) = req->req_cur_protection; 5213+ cup.fd) = -1; /* XXX For now, no object mapping */ 5214+ cup.pos) = req->req_offset; 5215 5216- if ((error = sys_mmap(tl, &cup, &rep->rep_retval)) != 0) 5217+ if ((error = sys_mmap(ttd, &cup, &rep->rep_retval)) != 0) 5218 return mach_msg_error(args, error); 5219 5220 *msglen = sizeof(*rep); 5221@@ -153,10 +151,10 @@ mach_vm_allocate(struct mach_trap_args *args) 5222 mach_vm_allocate_request_t *req = args->smsg; 5223 mach_vm_allocate_reply_t *rep = args->rmsg; 5224 size_t *msglen = args->rsize; 5225- struct lwp *tl = args->tl; 5226- struct proc *tp = tl->l_proc; 5227+ struct thread *ttd = args->ttd; 5228+ struct proc *tp = ttd->td_proc; 5229 struct sys_mmap_args cup; 5230- vaddr_t addr; 5231+ vm_offset_t addr; 5232 size_t size; 5233 int error; 5234 5235@@ -195,16 +193,16 @@ mach_vm_allocate(struct mach_trap_args *args) 5236 if (size == 0) 5237 goto out; 5238 5239- SCARG(&cup, addr) = (void *)addr; 5240- SCARG(&cup, len) = size; 5241- SCARG(&cup, prot) = PROT_READ | PROT_WRITE; 5242- SCARG(&cup, flags) = MAP_ANON; 5243+ cup.addr) = (void *)addr; 5244+ cup.len) = size; 5245+ cup.prot) = PROT_READ | PROT_WRITE; 5246+ cup.flags) = MAP_ANON; 5247 if ((req->req_flags & MACH_VM_FLAGS_ANYWHERE) == 0) 5248- SCARG(&cup, flags) |= MAP_FIXED; 5249- SCARG(&cup, fd) = -1; 5250- SCARG(&cup, pos) = 0; 5251+ cup.flags) |= MAP_FIXED; 5252+ cup.fd) = -1; 5253+ cup.pos) = 0; 5254 5255- if ((error = sys_mmap(tl, &cup, &rep->rep_address)) != 0) 5256+ if ((error = sys_mmap(ttd, &cup, &rep->rep_address)) != 0) 5257 return mach_msg_error(args, error); 5258 #ifdef DEBUG_MACH_VM 5259 printf("vm_allocate: success at %p\n", (void *)rep->rep_address); 5260@@ -227,7 +225,7 @@ mach_vm_deallocate(struct mach_trap_args *args) 5261 mach_vm_deallocate_request_t *req = args->smsg; 5262 mach_vm_deallocate_reply_t *rep = args->rmsg; 5263 size_t *msglen = args->rsize; 5264- struct lwp *tl = args->tl; 5265+ struct thread *ttd = args->ttd; 5266 struct sys_munmap_args cup; 5267 int error; 5268 5269@@ -236,10 +234,10 @@ mach_vm_deallocate(struct mach_trap_args *args) 5270 (void *)req->req_address, (long)req->req_size); 5271 #endif 5272 5273- SCARG(&cup, addr) = (void *)req->req_address; 5274- SCARG(&cup, len) = req->req_size; 5275+ cup.addr) = (void *)req->req_address; 5276+ cup.len) = req->req_size; 5277 5278- if ((error = sys_munmap(tl, &cup, &rep->rep_retval)) != 0) 5279+ if ((error = sys_munmap(ttd, &cup, &rep->rep_retval)) != 0) 5280 return mach_msg_error(args, error); 5281 5282 *msglen = sizeof(*rep); 5283@@ -260,7 +258,7 @@ mach_vm_wire(struct mach_trap_args *args) 5284 mach_vm_wire_request_t *req = args->smsg; 5285 mach_vm_wire_reply_t *rep = args->rmsg; 5286 size_t *msglen = args->rsize; 5287- struct lwp *tl = args->tl; 5288+ struct thread *ttd = args->ttd; 5289 register_t retval; 5290 int error; 5291 5292@@ -281,20 +279,20 @@ mach_vm_wire(struct mach_trap_args *args) 5293 if (req->req_access == 0) { 5294 struct sys_munlock_args cup; 5295 5296- SCARG(&cup, addr) = (void *)req->req_address; 5297- SCARG(&cup, len) = req->req_size; 5298- error = sys_munlock(tl, &cup, &retval); 5299+ cup.addr) = (void *)req->req_address; 5300+ cup.len) = req->req_size; 5301+ error = sys_munlock(ttd, &cup, &retval); 5302 } else { 5303 struct sys_mlock_args cup; 5304 5305- SCARG(&cup, addr) = (void *)req->req_address; 5306- SCARG(&cup, len) = req->req_size; 5307- error = sys_mlock(tl, &cup, &retval); 5308+ cup.addr) = (void *)req->req_address; 5309+ cup.len) = req->req_size; 5310+ error = sys_mlock(ttd, &cup, &retval); 5311 } 5312 if (error != 0) 5313 return mach_msg_error(args, error); 5314 5315- if ((error = uvm_map_protect(&tl->l_proc->p_vmspace->vm_map, 5316+ if ((error = vm_map_protect(&ttd->td_proc->p_vmspace->vm_map, 5317 req->req_address, req->req_address + req->req_size, 5318 req->req_access, 0)) != 0) 5319 return mach_msg_error(args, error); 5320@@ -313,16 +311,16 @@ mach_vm_protect(struct mach_trap_args *args) 5321 mach_vm_protect_request_t *req = args->smsg; 5322 mach_vm_protect_reply_t *rep = args->rmsg; 5323 size_t *msglen = args->rsize; 5324- struct lwp *tl = args->tl; 5325+ struct thread *ttd = args->ttd; 5326 struct sys_mprotect_args cup; 5327 register_t retval; 5328 int error; 5329 5330- SCARG(&cup, addr) = (void *)req->req_addr; 5331- SCARG(&cup, len) = req->req_size; 5332- SCARG(&cup, prot) = req->req_prot; 5333+ cup.addr) = (void *)req->req_addr; 5334+ cup.len) = req->req_size; 5335+ cup.prot) = req->req_prot; 5336 5337- if ((error = sys_mprotect(tl, &cup, &retval)) != 0) 5338+ if ((error = sys_mprotect(ttd, &cup, &retval)) != 0) 5339 return mach_msg_error(args, error); 5340 5341 *msglen = sizeof(*rep); 5342@@ -333,7 +331,7 @@ mach_vm_protect(struct mach_trap_args *args) 5343 } 5344 5345 int 5346-mach_sys_map_fd(struct lwp *l, const struct mach_sys_map_fd_args *uap, register_t *retval) 5347+mach_sys_map_fd(struct thread *td, const struct mach_sys_map_fd_args *uap) 5348 { 5349 /* { 5350 syscallarg(int) fd; 5351@@ -346,23 +344,23 @@ mach_sys_map_fd(struct lwp *l, const struct mach_sys_map_fd_args *uap, register_ 5352 struct vnode *vp; 5353 struct exec_vmcmd evc; 5354 struct vm_map_entry *ret; 5355- struct proc *p = l->l_proc; 5356+ struct proc *p = td->td_proc; 5357 register_t dontcare; 5358 struct sys_munmap_args cup; 5359 void *va; 5360 int error; 5361 5362- if ((error = copyin(SCARG(uap, va), (void *)&va, sizeof(va))) != 0) 5363+ if ((error = copyin(uap->va, (void *)&va, sizeof(va))) != 0) 5364 return error; 5365 5366- if (SCARG(uap, findspace) == 0) { 5367+ if (uap->findspace == 0) { 5368 /* Make some free space XXX probably not The Right Way */ 5369- SCARG(&cup, addr) = va; 5370- SCARG(&cup, len) = SCARG(uap, size); 5371- (void)sys_munmap(l, &cup, &dontcare); 5372+ cup.addr = va; 5373+ cup.len = uap->size; 5374+ (void)sys_munmap(td, &cup, &dontcare); 5375 } 5376 5377- fp = fd_getfile(SCARG(uap, fd)); 5378+ fp = fd_getfile(uap->fd); 5379 if (fp == NULL) 5380 return EBADF; 5381 5382@@ -371,32 +369,32 @@ mach_sys_map_fd(struct lwp *l, const struct mach_sys_map_fd_args *uap, register_ 5383 5384 #ifdef DEBUG_MACH_VM 5385 printf("vm_map_fd: addr = %p len = 0x%08lx\n", 5386- va, (long)SCARG(uap, size)); 5387+ va, (long)uap->size); 5388 #endif 5389 memset(&evc, 0, sizeof(evc)); 5390 evc.ev_addr = (u_long)va; 5391- evc.ev_len = SCARG(uap, size); 5392+ evc.ev_len = uap->size; 5393 evc.ev_prot = VM_PROT_ALL; 5394- evc.ev_flags = SCARG(uap, findspace) ? 0 : VMCMD_FIXED; 5395+ evc.ev_flags = uap->findspace ? 0 : VMCMD_FIXED; 5396 evc.ev_proc = vmcmd_map_readvn; 5397- evc.ev_offset = SCARG(uap, offset); 5398+ evc.ev_offset = uap->offset; 5399 evc.ev_vp = vp; 5400 5401 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); 5402- if ((error = (*evc.ev_proc)(l, &evc)) != 0) { 5403+ if ((error = (*evc.ev_proc)(td, &evc)) != 0) { 5404 VOP_UNLOCK(vp); 5405 5406 #ifdef DEBUG_MACH_VM 5407 printf("mach_sys_map_fd: mapping at %p failed\n", va); 5408 #endif 5409 5410- if (SCARG(uap, findspace) == 0) 5411+ if (uap->findspace == 0) 5412 goto bad2; 5413 5414 vm_map_lock(&p->p_vmspace->vm_map); 5415- if ((ret = uvm_map_findspace(&p->p_vmspace->vm_map, 5416+ if ((ret = vm_map_findspace(&p->p_vmspace->vm_map, 5417 vm_map_min(&p->p_vmspace->vm_map), evc.ev_len, 5418- (vaddr_t *)&evc.ev_addr, NULL, 0, PAGE_SIZE, 0)) == NULL) { 5419+ (vm_offset_t *)&evc.ev_addr, NULL, 0, PAGE_SIZE, 0)) == NULL) { 5420 vm_map_unlock(&p->p_vmspace->vm_map); 5421 goto bad2; 5422 } 5423@@ -406,30 +404,30 @@ mach_sys_map_fd(struct lwp *l, const struct mach_sys_map_fd_args *uap, register_ 5424 5425 memset(&evc, 0, sizeof(evc)); 5426 evc.ev_addr = (u_long)va; 5427- evc.ev_len = SCARG(uap, size); 5428+ evc.ev_len = uap->size; 5429 evc.ev_prot = VM_PROT_ALL; 5430 evc.ev_flags = 0; 5431 evc.ev_proc = vmcmd_map_readvn; 5432- evc.ev_offset = SCARG(uap, offset); 5433+ evc.ev_offset = uap->offset; 5434 evc.ev_vp = vp; 5435 5436 #ifdef DEBUG_MACH_VM 5437 printf("mach_sys_map_fd: trying at %p\n", va); 5438 #endif 5439 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); 5440- if ((error = (*evc.ev_proc)(l, &evc)) != 0) 5441+ if ((error = (*evc.ev_proc)(td, &evc)) != 0) 5442 goto bad1; 5443 } 5444 5445 vput(vp); 5446- fd_putfile(SCARG(uap, fd)); 5447+ fd_putfile(uap->fd); 5448 #ifdef DEBUG_MACH_VM 5449 printf("mach_sys_map_fd: mapping at %p\n", (void *)evc.ev_addr); 5450 #endif 5451 5452 va = (mach_vm_offset_t *)evc.ev_addr; 5453 5454- if ((error = copyout((void *)&va, SCARG(uap, va), sizeof(va))) != 0) 5455+ if ((error = copyout((void *)&va, uap->va, sizeof(va))) != 0) 5456 return error; 5457 5458 return 0; 5459@@ -438,7 +436,7 @@ bad1: 5460 VOP_UNLOCK(vp); 5461 bad2: 5462 vrele(vp); 5463- fd_putfile(SCARG(uap, fd)); 5464+ fd_putfile(uap->fd); 5465 #ifdef DEBUG_MACH_VM 5466 printf("mach_sys_map_fd: mapping at %p failed, error = %d\n", 5467 (void *)evc.ev_addr, error); 5468@@ -452,17 +450,17 @@ mach_vm_inherit(struct mach_trap_args *args) 5469 mach_vm_inherit_request_t *req = args->smsg; 5470 mach_vm_inherit_reply_t *rep = args->rmsg; 5471 size_t *msglen = args->rsize; 5472- struct lwp *tl = args->tl; 5473+ struct thread *ttd = args->ttd; 5474 struct sys_minherit_args cup; 5475 register_t retval; 5476 int error; 5477 5478- SCARG(&cup, addr) = (void *)req->req_addr; 5479- SCARG(&cup, len) = req->req_size; 5480+ cup.addr) = (void *)req->req_addr; 5481+ cup.len) = req->req_size; 5482 /* Flags map well between Mach and NetBSD */ 5483- SCARG(&cup, inherit) = req->req_inh; 5484+ cup.inherit) = req->req_inh; 5485 5486- if ((error = sys_minherit(tl, &cup, &retval)) != 0) 5487+ if ((error = sys_minherit(ttd, &cup, &retval)) != 0) 5488 return mach_msg_error(args, error); 5489 5490 *msglen = sizeof(*rep); 5491@@ -478,8 +476,8 @@ mach_make_memory_entry_64(struct mach_trap_args *args) 5492 mach_make_memory_entry_64_request_t *req = args->smsg; 5493 mach_make_memory_entry_64_reply_t *rep = args->rmsg; 5494 size_t *msglen = args->rsize; 5495- struct lwp *l = args->l; 5496- struct lwp *tl = args->tl; 5497+ struct thread *td = args->td; 5498+ struct thread *ttd = args->ttd; 5499 struct mach_port *mp; 5500 struct mach_right *mr; 5501 struct mach_memory_entry *mme; 5502@@ -491,13 +489,13 @@ mach_make_memory_entry_64(struct mach_trap_args *args) 5503 mp->mp_flags |= (MACH_MP_INKERNEL | MACH_MP_DATA_ALLOCATED); 5504 mp->mp_datatype = MACH_MP_MEMORY_ENTRY; 5505 5506- mme = malloc(sizeof(*mme), M_EMULDATA, M_WAITOK); 5507- mme->mme_proc = tl->l_proc; 5508+ mme = malloc(sizeof(*mme), M_MACH, M_WAITOK); 5509+ mme->mme_proc = td->td_proc; 5510 mme->mme_offset = req->req_offset; 5511 mme->mme_size = req->req_size; 5512 mp->mp_data = mme; 5513 5514- mr = mach_right_get(mp, l, MACH_PORT_TYPE_SEND, 0); 5515+ mr = mach_right_get(mp, td, MACH_PORT_TYPE_SEND, 0); 5516 5517 *msglen = sizeof(*rep); 5518 mach_set_header(rep, req, *msglen); 5519@@ -516,7 +514,7 @@ mach_vm_region(struct mach_trap_args *args) 5520 mach_vm_region_request_t *req = args->smsg; 5521 mach_vm_region_reply_t *rep = args->rmsg; 5522 size_t *msglen = args->rsize; 5523- struct lwp *tl = args->tl; 5524+ struct thread *ttd = args->ttd; 5525 struct mach_vm_region_basic_info *rbi; 5526 struct vm_map *map; 5527 struct vm_map_entry *vme; 5528@@ -536,10 +534,10 @@ mach_vm_region(struct mach_trap_args *args) 5529 return mach_msg_error(args, EINVAL); 5530 *msglen = sizeof(*rep) + ((req->req_count - 9) * sizeof(int)); 5531 5532- map = &tl->l_proc->p_vmspace->vm_map; 5533+ map = &td->td_proc->p_vmspace->vm_map; 5534 5535 vm_map_lock(map); 5536- error = uvm_map_lookup_entry(map, req->req_addr, &vme); 5537+ error = vm_map_lookup_entry(map, req->req_addr, &vme); 5538 vm_map_unlock(map); 5539 5540 if (error == 0) 5541@@ -574,7 +572,7 @@ mach_vm_region_64(struct mach_trap_args *args) 5542 mach_vm_region_64_request_t *req = args->smsg; 5543 mach_vm_region_64_reply_t *rep = args->rmsg; 5544 size_t *msglen = args->rsize; 5545- struct lwp *tl = args->tl; 5546+ struct thread *ttd = args->ttd; 5547 struct mach_vm_region_basic_info_64 *rbi; 5548 struct vm_map *map; 5549 struct vm_map_entry *vme; 5550@@ -594,10 +592,10 @@ mach_vm_region_64(struct mach_trap_args *args) 5551 return mach_msg_error(args, EINVAL); 5552 *msglen = sizeof(*rep) + ((req->req_count - 9) * sizeof(int)); 5553 5554- map = &tl->l_proc->p_vmspace->vm_map; 5555+ map = &td->td_proc->p_vmspace->vm_map; 5556 5557 vm_map_lock(map); 5558- error = uvm_map_lookup_entry(map, req->req_addr, &vme); 5559+ error = vm_map_lookup_entry(map, req->req_addr, &vme); 5560 vm_map_unlock(map); 5561 5562 if (error == 0) 5563@@ -631,22 +629,22 @@ mach_vm_msync(struct mach_trap_args *args) 5564 mach_vm_msync_request_t *req = args->smsg; 5565 mach_vm_msync_reply_t *rep = args->rmsg; 5566 size_t *msglen = args->rsize; 5567- struct lwp *tl = args->tl; 5568+ struct thread *ttd = args->ttd; 5569 struct sys___msync13_args cup; 5570 int error; 5571 register_t dontcare; 5572 5573- SCARG(&cup, addr) = (void *)req->req_addr; 5574- SCARG(&cup, len) = req->req_size; 5575- SCARG(&cup, flags) = 0; 5576+ cup.addr = (void *)req->req_addr; 5577+ cup.len = req->req_size; 5578+ cup.flags = 0; 5579 if (req->req_flags & MACH_VM_SYNC_ASYNCHRONOUS) 5580- SCARG(&cup, flags) |= MS_ASYNC; 5581+ cup.flags |= MS_ASYNC; 5582 if (req->req_flags & MACH_VM_SYNC_SYNCHRONOUS) 5583- SCARG(&cup, flags) |= MS_SYNC; 5584+ cup.flags |= MS_SYNC; 5585 if (req->req_flags & MACH_VM_SYNC_INVALIDATE) 5586- SCARG(&cup, flags) |= MS_INVALIDATE; 5587+ cup.flags |= MS_INVALIDATE; 5588 5589- error = sys___msync13(tl, &cup, &dontcare); 5590+ error = sys___msync13(ttd, &cup, &dontcare); 5591 5592 *msglen = sizeof(*rep); 5593 mach_set_header(rep, req, *msglen); 5594@@ -719,17 +717,17 @@ mach_vm_read(struct mach_trap_args *args) 5595 mach_vm_read_request_t *req = args->smsg; 5596 mach_vm_read_reply_t *rep = args->rmsg; 5597 size_t *msglen = args->rsize; 5598- struct lwp *l = args->l; 5599- struct lwp *tl = args->tl; 5600+ struct thread *td = args->td; 5601+ struct thread *ttd = args->ttd; 5602 char *tbuf; 5603 void *addr; 5604- vaddr_t va; 5605+ vm_offset_t va; 5606 size_t size; 5607 int error; 5608 5609 size = req->req_size; 5610- va = vm_map_min(&l->l_proc->p_vmspace->vm_map); 5611- if ((error = uvm_map(&l->l_proc->p_vmspace->vm_map, &va, 5612+ va = vm_map_min(&td->td_proc->p_vmspace->vm_map); 5613+ if ((error = vm_map(&td->td_proc->p_vmspace->vm_map, &va, 5614 round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, 5615 UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_ALL, 5616 UVM_INH_COPY, UVM_ADV_NORMAL, UVM_FLAG_COPYONW))) != 0) { 5617@@ -742,10 +740,10 @@ mach_vm_read(struct mach_trap_args *args) 5618 * This is reasonable for small chunk of data, but we should 5619 * remap COW for areas bigger than a page. 5620 */ 5621- tbuf = malloc(size, M_EMULDATA, M_WAITOK); 5622+ tbuf = malloc(size, M_MACH, M_WAITOK); 5623 5624 addr = (void *)req->req_addr; 5625- if ((error = copyin_proc(tl->l_proc, addr, tbuf, size)) != 0) { 5626+ if ((error = copyin_proc(td->td_proc, addr, tbuf, size)) != 0) { 5627 printf("copyin_proc error = %d, addr = %p, size = %x\n", error, addr, size); 5628 free(tbuf, M_WAITOK); 5629 return mach_msg_error(args, EFAULT); 5630@@ -779,7 +777,7 @@ mach_vm_write(struct mach_trap_args *args) 5631 mach_vm_write_request_t *req = args->smsg; 5632 mach_vm_write_reply_t *rep = args->rmsg; 5633 size_t *msglen = args->rsize; 5634- struct lwp *tl = args->tl; 5635+ struct thread *ttd = args->ttd; 5636 size_t size; 5637 void *addr; 5638 char *tbuf; 5639@@ -796,7 +794,7 @@ mach_vm_write(struct mach_trap_args *args) 5640 * remap COW for areas bigger than a page. 5641 */ 5642 size = req->req_data.size; 5643- tbuf = malloc(size, M_EMULDATA, M_WAITOK); 5644+ tbuf = malloc(size, M_MACH, M_WAITOK); 5645 5646 if ((error = copyin(req->req_data.address, tbuf, size)) != 0) { 5647 printf("copyin error = %d\n", error); 5648@@ -805,7 +803,7 @@ mach_vm_write(struct mach_trap_args *args) 5649 } 5650 5651 addr = (void *)req->req_addr; 5652- if ((error = copyout_proc(tl->l_proc, tbuf, addr, size)) != 0) { 5653+ if ((error = copyout_proc(td->td_proc, tbuf, addr, size)) != 0) { 5654 printf("copyout_proc error = %d\n", error); 5655 free(tbuf, M_WAITOK); 5656 return mach_msg_error(args, EFAULT); 5657@@ -832,7 +830,7 @@ mach_vm_machine_attribute(struct mach_trap_args *args) 5658 mach_vm_machine_attribute_request_t *req = args->smsg; 5659 mach_vm_machine_attribute_reply_t *rep = args->rmsg; 5660 size_t *msglen = args->rsize; 5661- struct lwp *tl = args->tl; 5662+ struct thread *ttd = args->ttd; 5663 int error = 0; 5664 int attribute, value; 5665 5666@@ -846,7 +844,7 @@ mach_vm_machine_attribute(struct mach_trap_args *args) 5667 case MACH_MATTR_VAL_DCACHE_FLUSH: 5668 case MACH_MATTR_VAL_ICACHE_FLUSH: 5669 case MACH_MATTR_VAL_CACHE_SYNC: 5670- error = mach_vm_machine_attribute_machdep(tl, 5671+ error = mach_vm_machine_attribute_machdep(ttd, 5672 req->req_addr, req->req_size, &value); 5673 break; 5674 default: 5675diff --git a/sys/compat/mach/mach_vm.h b/sys/compat/mach/mach_vm.h 5676index 0c887d9..8f277f7 100644 5677--- a/sys/compat/mach/mach_vm.h 5678+++ b/sys/compat/mach/mach_vm.h 5679@@ -1,4 +1,4 @@ 5680-/* $NetBSD: mach_vm.h,v 1.30 2008/04/28 20:23:45 martin Exp $ */ 5681+/* $FreeBSD$ */ 5682 5683 /*- 5684 * Copyright (c) 2002-2003 The NetBSD Foundation, Inc. 5685@@ -381,11 +381,11 @@ typedef struct { 5686 5687 struct mach_memory_entry { 5688 struct proc *mme_proc; 5689- vaddr_t mme_offset; 5690+ vm_offset_t mme_offset; 5691 size_t mme_size; 5692 }; 5693 5694 /* These are machine dependent functions */ 5695-int mach_vm_machine_attribute_machdep(struct lwp *, vaddr_t, size_t, int *); 5696+int mach_vm_machine_attribute_machdep(struct td *, vm_offset_t, size_t, int *); 5697 5698 #endif /* _MACH_VM_H_ */ 5699diff --git a/sys/compat/mach/makemachservices.sh b/sys/compat/mach/makemachservices.sh 5700index 34c2be6..005eace 100755 5701--- a/sys/compat/mach/makemachservices.sh 5702+++ b/sys/compat/mach/makemachservices.sh 5703@@ -1,5 +1,5 @@ 5704 #!/bin/sh 5705-# $NetBSD: makemachservices.sh,v 1.8 2008/05/04 00:43:55 martin Exp $ 5706+# $FreeBSD$ 5707 # 5708 # Copyright (c) 2003 The NetBSD Foundation, Inc. 5709 # All rights reserved. 5710@@ -47,17 +47,17 @@ BEGIN{ 5711 headers = "'$headers'"; 5712 names = "'$names'"; 5713 5714- printf("/* \$NetBSD\$ *\/\n\n") > table; 5715+ printf("/* \$FreeBSD\$ *\/\n\n") > table; 5716 printf("/*\n * Mach services table.\n *\n") > table; 5717 printf(" * DO NOT EDIT -- this file is automatically generated.\n") > \ 5718 table; 5719 5720- printf("/* \$NetBSD\$ *\/\n\n") > headers; 5721+ printf("/* \$FreeBSD\$ *\/\n\n") > headers; 5722 printf("/*\n * Mach services prototypes.\n *\n") > headers; 5723 printf(" * DO NOT EDIT -- this file is automatically generated.\n") > \ 5724 headers; 5725 5726- printf("/* \$NetBSD\$ *\/\n\n") > names; 5727+ printf("/* \$FreeBSD\$ *\/\n\n") > names; 5728 printf("/*\n * Mach services names. This file is not built\n") > names; 5729 printf(" * by the kernel, it is included by kdump sources.\n *\n") > \ 5730 names; 5731@@ -69,18 +69,18 @@ BEGIN{ 5732 gsub(/\$.*$/, "", $0); 5733 sub(/ $/, ""); 5734 printf(" * created from %s\n */\n\n", $0) > table; 5735- printf("#include \<sys/cdefs.h\>\n__KERNEL_RCSID(0, " \ 5736- "\"\$NetBSD\$\");\n\n") > table; 5737+ printf("#include \<sys/cdefs.h\>\n__FBSDID(0, " \ 5738+ "\"\$FreeBSD\$\");\n\n") > table; 5739 5740 printf(" * created from %s\n */\n\n", $0) > headers; 5741- printf("#include \<sys/cdefs.h\>\n__KERNEL_RCSID(0, " \ 5742- "\"\$NetBSD\$\");\n\n") > headers; 5743+ printf("#include \<sys/cdefs.h\>\n__FBSDID(0, " \ 5744+ "\"\$FreeBSD\$\");\n\n") > headers; 5745 printf("#include <compat/mach/mach_types.h>\n") > headers; 5746 printf("#include <compat/mach/mach_message.h>\n") > headers; 5747 5748 printf(" * created from %s\n */\n\n", $0) > names; 5749- printf("#include \<sys/cdefs.h\>\n__KERNEL_RCSID(0, " \ 5750- "\"\$NetBSD\$\");\n\n") > names; 5751+ printf("#include \<sys/cdefs.h\>\n__FBSDID(0, " \ 5752+ "\"\$FreeBSD\$\");\n\n") > names; 5753 printf("struct mach_service_name {\n") > names; 5754 printf(" int srv_id;\n") > names; 5755 printf(" const char *srv_name;\n") > names; 5756diff --git a/sys/compat/mach/syscalls.c b/sys/compat/mach/syscalls.c 5757new file mode 100644 5758index 0000000..70639e0 5759--- /dev/null 5760+++ b/sys/compat/mach/syscalls.c 5761@@ -0,0 +1,5 @@ 5762+/* 5763+ * System call names. 5764+ * 5765+ * DO NOT EDIT-- this file is automatically generated. 5766+ * $FreeBSD$ 5767diff --git a/sys/compat/mach/syscalls.conf b/sys/compat/mach/syscalls.conf 5768index c416d08..86dfb98f 100644 5769--- a/sys/compat/mach/syscalls.conf 5770+++ b/sys/compat/mach/syscalls.conf 5771@@ -1,14 +1,18 @@ 5772-# $NetBSD: syscalls.conf,v 1.2 2007/12/10 22:32:15 dsl Exp $ 5773+# $FreeBSD$ 5774 5775 sysnames="mach_syscalls.c" 5776-sysnumhdr="mach_syscall.h" 5777+sysproto="mach_proto.h" 5778+sysproto_h=_MACH_SYSPROTO_H_ 5779+syshdr="mach_syscall.h" 5780 syssw="mach_sysent.c" 5781-sysarghdr="mach_syscallargs.h" 5782+sysmk="/dev/null" 5783+syscallprefix="MACH_SYS_" 5784 compatopts="" 5785 libcompatopts="" 5786 5787 switchname="mach_sysent" 5788 namesname="mach_syscallnames" 5789+systracte="mach_systrace_args.c" 5790 constprefix="MACH_SYS_" 5791 nsysent=128 5792 maxsysargs=9 5793diff --git a/sys/compat/mach/syscalls.master b/sys/compat/mach/syscalls.master 5794index 001a094..9a0433e 100644 5795--- a/sys/compat/mach/syscalls.master 5796+++ b/sys/compat/mach/syscalls.master 5797@@ -1,4 +1,4 @@ 5798- $NetBSD: syscalls.master,v 1.10 2009/01/13 22:27:43 pooka Exp $ 5799+ $FreeBSD$ 5800 5801 ; @(#)syscalls.master 8.1 (Berkeley) 7/19/93 5802 5803@@ -34,7 +34,6 @@ 5804 5805 #if defined(_KERNEL_OPT) 5806 #include "opt_ntp.h" 5807-#include "opt_sysv.h" 5808 #endif 5809 5810 #include <sys/param.h> 5811@@ -42,54 +41,54 @@ 5812 #include <sys/signal.h> 5813 #include <sys/mount.h> 5814 #include <sys/poll.h> 5815-#include <sys/syscallargs.h> 5816+#include <sys/sysent.h> 5817+#include <sys/sysproto.h> 5818 5819 #include <compat/mach/mach_types.h> 5820 #include <compat/mach/mach_message.h> 5821 #include <compat/mach/mach_clock.h> 5822-#include <compat/mach/mach_syscallargs.h> 5823-%% 5824+#include <compat/mach/mach_proto.h> 5825+;; 5826 5827-0 UNIMPL 5828-1 UNIMPL 5829-2 UNIMPL 5830-3 UNIMPL 5831-4 UNIMPL 5832-5 UNIMPL 5833-6 UNIMPL 5834-7 UNIMPL 5835-8 UNIMPL 5836-9 UNIMPL 5837-10 UNIMPL 5838-11 UNIMPL 5839-12 UNIMPL 5840-13 UNIMPL 5841-14 UNIMPL 5842-15 UNIMPL 5843-16 UNIMPL 5844-17 UNIMPL 5845-18 UNIMPL 5846-19 UNIMPL 5847-20 UNIMPL 5848-21 UNIMPL 5849-22 UNIMPL 5850-23 UNIMPL 5851-24 UNIMPL 5852-25 UNIMPL 5853-26 STD { mach_port_name_t|mach_sys||reply_port(void); } 5854-27 STD { mach_port_name_t|mach_sys||thread_self_trap(void); } 5855-28 STD { mach_port_name_t|mach_sys||task_self_trap(void); } 5856-29 STD { mach_port_name_t|mach_sys||host_self_trap(void); } 5857-30 UNIMPL 5858-31 STD { mach_msg_return_t|mach_sys||msg_trap( \ 5859- mach_msg_header_t *msg, \ 5860+0 AUE_NULL UNIMPL nosys 5861+1 AUE_NULL UNIMPL nosys 5862+2 AUE_NULL UNIMPL nosys 5863+3 AUE_NULL UNIMPL nosys 5864+4 AUE_NULL UNIMPL nosys 5865+5 AUE_NULL UNIMPL nosys 5866+6 AUE_NULL UNIMPL nosys 5867+7 AUE_NULL UNIMPL nosys 5868+8 AUE_NULL UNIMPL nosys 5869+9 AUE_NULL UNIMPL nosys 5870+10 AUE_NULL UNIMPL nosys 5871+11 AUE_NULL UNIMPL nosys 5872+12 AUE_NULL UNIMPL nosys 5873+13 AUE_NULL UNIMPL nosys 5874+14 AUE_NULL UNIMPL nosys 5875+15 AUE_NULL UNIMPL nosys 5876+16 AUE_NULL UNIMPL nosys 5877+17 AUE_NULL UNIMPL nosys 5878+18 AUE_NULL UNIMPL nosys 5879+19 AUE_NULL UNIMPL nosys 5880+20 AUE_NULL UNIMPL nosys 5881+21 AUE_NULL UNIMPL nosys 5882+22 AUE_NULL UNIMPL nosys 5883+23 AUE_NULL UNIMPL nosys 5884+24 AUE_NULL UNIMPL nosys 5885+25 AUE_NULL UNIMPL nosys 5886+26 AUE_NULL STD { int mach_reply_port(void); } 5887+27 AUE_NULL STD { int mach_thread_self_trap(void); } 5888+28 AUE_NULL STD { int mach_task_self_trap(void); } 5889+29 AUE_NULL STD { int mach_host_self_trap(void); } 5890+30 AUE_NULL UNIMPL nosys 5891+31 AUE_NULL STD { int mach_msg_trap(mach_msg_header_t *msg, \ 5892 mach_msg_option_t option, \ 5893 mach_msg_size_t send_size, \ 5894 mach_msg_size_t rcv_size, \ 5895 mach_port_name_t rcv_name, \ 5896 mach_msg_timeout_t timeout, \ 5897 mach_port_name_t notify); } 5898-32 STD { mach_kern_return_t|mach_sys||msg_overwrite_trap( \ 5899+32 AUE_NULL STD { int mach_msg_overwrite_trap( \ 5900 mach_msg_header_t *msg, \ 5901 mach_msg_option_t option, \ 5902 mach_msg_size_t send_size, \ 5903@@ -99,143 +98,129 @@ 5904 mach_port_name_t notify, \ 5905 mach_msg_header_t *rcv_msg, \ 5906 mach_msg_size_t scatter_list_size); } 5907-33 STD { mach_kern_return_t|\ 5908- mach_sys||semaphore_signal_trap( \ 5909- mach_port_name_t signal_name); } 5910-34 STD { mach_kern_return_t|\ 5911- mach_sys||semaphore_signal_all_trap( \ 5912- mach_port_name_t signal_name); } 5913-35 STD { mach_kern_return_t|\ 5914- mach_sys||semaphore_signal_thread_trap( \ 5915- mach_port_name_t signal_name, \ 5916- mach_port_name_t thread); } 5917-36 STD { mach_kern_return_t|\ 5918- mach_sys||semaphore_wait_trap( \ 5919- mach_port_name_t wait_name); } 5920-37 STD { mach_kern_return_t|\ 5921- mach_sys||semaphore_wait_signal_trap( \ 5922- mach_port_name_t wait_name, \ 5923- mach_port_name_t signal_name); } 5924-38 STD { mach_kern_return_t|\ 5925- mach_sys||semaphore_timedwait_trap( \ 5926+33 AUE_NULL STD { int mach_semaphore_signal_trap( \ 5927+ mach_port_name_t signal_name); } 5928+34 AUE_NULL STD { int mach_semaphore_signal_all_trap( \ 5929+ mach_port_name_t signal_name); } 5930+35 AUE_NULL STD { int mach_semaphore_signal_thread_trap( \ 5931+ mach_port_name_t signal_name, \ 5932+ mach_port_name_t thread); } 5933+36 AUE_NULL STD { int mach_semaphore_wait_trap( \ 5934+ mach_port_name_t wait_name); } 5935+37 AUE_NULL STD { int mach_semaphore_wait_signal_trap( \ 5936+ mach_port_name_t wait_name, \ 5937+ mach_port_name_t signal_name); } 5938+38 AUE_NULL STD { int mach_semaphore_timedwait_trap( \ 5939 mach_port_name_t wait_name, \ 5940 unsigned int sec, \ 5941 mach_clock_res_t nsec); } 5942-39 STD { mach_kern_return_t|\ 5943- mach_sys||semaphore_timedwait_signal_trap( \ 5944+39 AUE_NULL STD { int mach_semaphore_timedwait_signal_trap( \ 5945 mach_port_name_t wait_name, \ 5946 mach_port_name_t signal_name, \ 5947 unsigned int sec, \ 5948 mach_clock_res_t nsec); } 5949-40 UNIMPL 5950-41 STD { mach_kern_return_t|mach_sys||init_process(void); } 5951-42 UNIMPL 5952-43 STD { mach_kern_return_t|mach_sys||map_fd(int fd, \ 5953+40 AUE_NULL UNIMPL nosys 5954+41 AUE_NULL STD { int mach_init_process(void); } 5955+42 AUE_NULL UNIMPL nosys 5956+43 AUE_NULL STD { int mach_map_fd(int fd, \ 5957 mach_vm_offset_t offset, mach_vm_offset_t *va, \ 5958 mach_boolean_t findspace, mach_vm_size_t size); } 5959-44 UNIMPL 5960-45 STD { mach_kern_return_t|mach_sys||task_for_pid( \ 5961+44 AUE_NULL UNIMPL nosys 5962+45 AUE_NULL STD { int mach_task_for_pid( \ 5963 mach_port_t target_tport, int pid, \ 5964 mach_port_t *t); } 5965-46 STD { mach_kern_return_t|mach_sys||pid_for_task( \ 5966+46 AUE_NULL STD { int mach_pid_for_task( \ 5967 mach_port_t t, int *x); } 5968-47 UNIMPL 5969-48 STD { mach_kern_return_t|mach_sys||macx_swapon( \ 5970+47 AUE_NULL UNIMPL nosys 5971+48 AUE_NULL STD { int mach_macx_swapon( \ 5972 char *name, int flags, int size, int priority); } 5973-49 STD { mach_kern_return_t|mach_sys||macx_swapoff( \ 5974+49 AUE_NULL STD { int mach_macx_swapoff( \ 5975 char *name, int flags); } 5976-50 UNIMPL 5977-51 STD { mach_kern_return_t|mach_sys||macx_triggers( \ 5978- int hi_water, int low_water, int flags, \ 5979- mach_port_t alert_port); } 5980-52 UNIMPL 5981-53 UNIMPL 5982-54 UNIMPL 5983-55 UNIMPL 5984-56 UNIMPL 5985-57 UNIMPL 5986-58 UNIMPL 5987-59 STD { mach_kern_return_t|mach_sys||swtch_pri( \ 5988- int pri); } 5989-60 STD { mach_kern_return_t|mach_sys||swtch(void); } 5990-61 STD { mach_kern_return_t|mach_sys||syscall_thread_switch( \ 5991+50 AUE_NULL UNIMPL nosys 5992+51 AUE_NULL STD { int mach_macx_triggers(int hi_water, int low_water, \ 5993+ int flags, mach_port_t alert_port); } 5994+52 AUE_NULL UNIMPL nosys 5995+53 AUE_NULL UNIMPL nosys 5996+54 AUE_NULL UNIMPL nosys 5997+55 AUE_NULL UNIMPL nosys 5998+56 AUE_NULL UNIMPL nosys 5999+57 AUE_NULL UNIMPL nosys 6000+58 AUE_NULL UNIMPL nosys 6001+59 AUE_NULL STD { int mach_swtch_pri(int pri); } 6002+60 AUE_NULL STD { int mach_swtch(void); } 6003+61 AUE_NULL STD { int mach_syscall_thread_switch( \ 6004 mach_port_name_t thread_name, \ 6005 int option, \ 6006 mach_msg_timeout_t option_time); } 6007-62 STD { mach_kern_return_t|mach_sys||clock_sleep_trap( \ 6008+62 AUE_NULL STD { int mach_clock_sleep_trap( \ 6009 mach_port_name_t clock_name, \ 6010 mach_sleep_type_t sleep_type, \ 6011 int sleep_sec, int sleep_nsec, \ 6012 mach_timespec_t *wakeup_time); } 6013-63 UNIMPL 6014-64 UNIMPL 6015-65 UNIMPL 6016-66 UNIMPL 6017-67 UNIMPL 6018-68 UNIMPL 6019-69 UNIMPL 6020-70 UNIMPL 6021-71 UNIMPL 6022-72 UNIMPL 6023-73 UNIMPL 6024-74 UNIMPL 6025-75 UNIMPL 6026-76 UNIMPL 6027-77 UNIMPL 6028-78 UNIMPL 6029-79 UNIMPL 6030-80 UNIMPL 6031-81 UNIMPL 6032-82 UNIMPL 6033-83 UNIMPL 6034-84 UNIMPL 6035-85 UNIMPL 6036-86 UNIMPL 6037-87 UNIMPL 6038-88 UNIMPL 6039-89 STD { mach_kern_return_t|mach_sys||timebase_info( \ 6040- mach_timebase_info_t info); } 6041-90 STD { mach_kern_return_t|mach_sys||wait_until( \ 6042- u_int64_t deadline); } 6043-91 STD { mach_port_name_t|mach_sys||timer_create(void); } 6044-92 STD { mach_kern_return_t|mach_sys||timer_destroy( \ 6045- mach_port_name_t name); } 6046-93 STD { mach_kern_return_t|mach_sys||timer_arm( \ 6047- mach_port_name_t name, \ 6048- mach_absolute_time_t expire_time); } 6049-94 STD { mach_kern_return_t|mach_sys||timer_cancel( \ 6050- mach_port_name_t name, \ 6051- mach_absolute_time_t *result_time); } 6052-95 STD { mach_kern_return_t|mach_sys||get_time_base_info(void); } 6053-96 UNIMPL 6054-97 UNIMPL 6055-98 UNIMPL 6056-99 UNIMPL 6057-100 UNIMPL 6058-101 UNIMPL 6059-102 UNIMPL 6060-103 UNIMPL 6061-104 UNIMPL 6062-105 UNIMPL 6063-106 UNIMPL 6064-107 UNIMPL 6065-108 UNIMPL 6066-109 UNIMPL 6067-110 UNIMPL 6068-111 UNIMPL 6069-112 UNIMPL 6070-113 UNIMPL 6071-114 UNIMPL 6072-115 UNIMPL 6073-116 UNIMPL 6074-117 UNIMPL 6075-118 UNIMPL 6076-119 UNIMPL 6077-120 UNIMPL 6078-121 UNIMPL 6079-122 UNIMPL 6080-123 UNIMPL 6081-124 UNIMPL 6082-125 UNIMPL 6083-126 UNIMPL 6084-127 UNIMPL 6085+63 AUE_NULL UNIMPL nosys 6086+64 AUE_NULL UNIMPL nosys 6087+65 AUE_NULL UNIMPL nosys 6088+66 AUE_NULL UNIMPL nosys 6089+67 AUE_NULL UNIMPL nosys 6090+68 AUE_NULL UNIMPL nosys 6091+69 AUE_NULL UNIMPL nosys 6092+70 AUE_NULL UNIMPL nosys 6093+71 AUE_NULL UNIMPL nosys 6094+72 AUE_NULL UNIMPL nosys 6095+73 AUE_NULL UNIMPL nosys 6096+74 AUE_NULL UNIMPL nosys 6097+75 AUE_NULL UNIMPL nosys 6098+76 AUE_NULL UNIMPL nosys 6099+77 AUE_NULL UNIMPL nosys 6100+78 AUE_NULL UNIMPL nosys 6101+79 AUE_NULL UNIMPL nosys 6102+80 AUE_NULL UNIMPL nosys 6103+81 AUE_NULL UNIMPL nosys 6104+82 AUE_NULL UNIMPL nosys 6105+83 AUE_NULL UNIMPL nosys 6106+84 AUE_NULL UNIMPL nosys 6107+85 AUE_NULL UNIMPL nosys 6108+86 AUE_NULL UNIMPL nosys 6109+87 AUE_NULL UNIMPL nosys 6110+88 AUE_NULL UNIMPL nosys 6111+89 AUE_NULL STD { int mach_timebase_info(mach_timebase_info_t info); } 6112+90 AUE_NULL STD { int mach_wait_until(uint64_t deadline); } 6113+91 AUE_NULL STD { int mach_timer_create(void); } 6114+92 AUE_NULL STD { int mach_timer_destroy(mach_port_name_t name); } 6115+93 AUE_NULL STD { int mach_timer_arm(mach_port_name_t name, \ 6116+ mach_absolute_time_t expire_time); } 6117+94 AUE_NULL STD { int mach_timer_cancel(mach_port_name_t name, \ 6118+ mach_absolute_time_t *result_time); } 6119+95 AUE_NULL STD { int mach_get_time_base_info(void); } 6120+96 AUE_NULL UNIMPL nosys 6121+97 AUE_NULL UNIMPL nosys 6122+98 AUE_NULL UNIMPL nosys 6123+99 AUE_NULL UNIMPL nosys 6124+100 AUE_NULL UNIMPL nosys 6125+101 AUE_NULL UNIMPL nosys 6126+102 AUE_NULL UNIMPL nosys 6127+103 AUE_NULL UNIMPL nosys 6128+104 AUE_NULL UNIMPL nosys 6129+105 AUE_NULL UNIMPL nosys 6130+106 AUE_NULL UNIMPL nosys 6131+107 AUE_NULL UNIMPL nosys 6132+108 AUE_NULL UNIMPL nosys 6133+109 AUE_NULL UNIMPL nosys 6134+110 AUE_NULL UNIMPL nosys 6135+111 AUE_NULL UNIMPL nosys 6136+112 AUE_NULL UNIMPL nosys 6137+113 AUE_NULL UNIMPL nosys 6138+114 AUE_NULL UNIMPL nosys 6139+115 AUE_NULL UNIMPL nosys 6140+116 AUE_NULL UNIMPL nosys 6141+117 AUE_NULL UNIMPL nosys 6142+118 AUE_NULL UNIMPL nosys 6143+119 AUE_NULL UNIMPL nosys 6144+120 AUE_NULL UNIMPL nosys 6145+121 AUE_NULL UNIMPL nosys 6146+122 AUE_NULL UNIMPL nosys 6147+123 AUE_NULL UNIMPL nosys 6148+124 AUE_NULL UNIMPL nosys 6149+125 AUE_NULL UNIMPL nosys 6150+126 AUE_NULL UNIMPL nosys 6151+127 AUE_NULL UNIMPL nosys 6152diff --git a/sys/compat/mach/systrace_args.c b/sys/compat/mach/systrace_args.c 6153new file mode 100644 6154index 0000000..29b05e5 6155--- /dev/null 6156+++ b/sys/compat/mach/systrace_args.c 6157@@ -0,0 +1,804 @@ 6158+/* 6159+ * System call argument to DTrace register array converstion. 6160+ * 6161+ * DO NOT EDIT-- this file is automatically generated. 6162+ * $FreeBSD$ 6163+ * This file is part of the DTrace syscall provider. 6164+ */ 6165+ 6166+static void 6167+systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args) 6168+{ 6169+ int64_t *iarg = (int64_t *) uarg; 6170+ switch (sysnum) { 6171+#if defined(_KERNEL_OPT) 6172+#endif 6173+ /* mach_reply_port */ 6174+ case 26: { 6175+ *n_args = 0; 6176+ break; 6177+ } 6178+ /* mach_thread_self_trap */ 6179+ case 27: { 6180+ *n_args = 0; 6181+ break; 6182+ } 6183+ /* mach_task_self_trap */ 6184+ case 28: { 6185+ *n_args = 0; 6186+ break; 6187+ } 6188+ /* mach_host_self_trap */ 6189+ case 29: { 6190+ *n_args = 0; 6191+ break; 6192+ } 6193+ /* mach_msg_trap */ 6194+ case 31: { 6195+ struct mach_msg_trap_args *p = params; 6196+ uarg[0] = (intptr_t) p->msg; /* mach_msg_header_t * */ 6197+ iarg[1] = p->option; /* mach_msg_option_t */ 6198+ iarg[2] = p->send_size; /* mach_msg_size_t */ 6199+ iarg[3] = p->rcv_size; /* mach_msg_size_t */ 6200+ iarg[4] = p->rcv_name; /* mach_port_name_t */ 6201+ iarg[5] = p->timeout; /* mach_msg_timeout_t */ 6202+ iarg[6] = p->notify; /* mach_port_name_t */ 6203+ *n_args = 7; 6204+ break; 6205+ } 6206+ /* mach_msg_overwrite_trap */ 6207+ case 32: { 6208+ struct mach_msg_overwrite_trap_args *p = params; 6209+ uarg[0] = (intptr_t) p->msg; /* mach_msg_header_t * */ 6210+ iarg[1] = p->option; /* mach_msg_option_t */ 6211+ iarg[2] = p->send_size; /* mach_msg_size_t */ 6212+ iarg[3] = p->rcv_size; /* mach_msg_size_t */ 6213+ iarg[4] = p->rcv_name; /* mach_port_name_t */ 6214+ iarg[5] = p->timeout; /* mach_msg_timeout_t */ 6215+ iarg[6] = p->notify; /* mach_port_name_t */ 6216+ uarg[7] = (intptr_t) p->rcv_msg; /* mach_msg_header_t * */ 6217+ iarg[8] = p->scatter_list_size; /* mach_msg_size_t */ 6218+ *n_args = 9; 6219+ break; 6220+ } 6221+ /* mach_semaphore_signal_trap */ 6222+ case 33: { 6223+ struct mach_semaphore_signal_trap_args *p = params; 6224+ iarg[0] = p->signal_name; /* mach_port_name_t */ 6225+ *n_args = 1; 6226+ break; 6227+ } 6228+ /* mach_semaphore_signal_all_trap */ 6229+ case 34: { 6230+ struct mach_semaphore_signal_all_trap_args *p = params; 6231+ iarg[0] = p->signal_name; /* mach_port_name_t */ 6232+ *n_args = 1; 6233+ break; 6234+ } 6235+ /* mach_semaphore_signal_thread_trap */ 6236+ case 35: { 6237+ struct mach_semaphore_signal_thread_trap_args *p = params; 6238+ iarg[0] = p->signal_name; /* mach_port_name_t */ 6239+ iarg[1] = p->thread; /* mach_port_name_t */ 6240+ *n_args = 2; 6241+ break; 6242+ } 6243+ /* mach_semaphore_wait_trap */ 6244+ case 36: { 6245+ struct mach_semaphore_wait_trap_args *p = params; 6246+ iarg[0] = p->wait_name; /* mach_port_name_t */ 6247+ *n_args = 1; 6248+ break; 6249+ } 6250+ /* mach_semaphore_wait_signal_trap */ 6251+ case 37: { 6252+ struct mach_semaphore_wait_signal_trap_args *p = params; 6253+ iarg[0] = p->wait_name; /* mach_port_name_t */ 6254+ iarg[1] = p->signal_name; /* mach_port_name_t */ 6255+ *n_args = 2; 6256+ break; 6257+ } 6258+ /* mach_semaphore_timedwait_trap */ 6259+ case 38: { 6260+ struct mach_semaphore_timedwait_trap_args *p = params; 6261+ iarg[0] = p->wait_name; /* mach_port_name_t */ 6262+ uarg[1] = p->sec; /* unsigned int */ 6263+ iarg[2] = p->nsec; /* mach_clock_res_t */ 6264+ *n_args = 3; 6265+ break; 6266+ } 6267+ /* mach_semaphore_timedwait_signal_trap */ 6268+ case 39: { 6269+ struct mach_semaphore_timedwait_signal_trap_args *p = params; 6270+ iarg[0] = p->wait_name; /* mach_port_name_t */ 6271+ iarg[1] = p->signal_name; /* mach_port_name_t */ 6272+ uarg[2] = p->sec; /* unsigned int */ 6273+ iarg[3] = p->nsec; /* mach_clock_res_t */ 6274+ *n_args = 4; 6275+ break; 6276+ } 6277+ /* mach_init_process */ 6278+ case 41: { 6279+ *n_args = 0; 6280+ break; 6281+ } 6282+ /* mach_map_fd */ 6283+ case 43: { 6284+ struct mach_map_fd_args *p = params; 6285+ iarg[0] = p->fd; /* int */ 6286+ iarg[1] = p->offset; /* mach_vm_offset_t */ 6287+ uarg[2] = (intptr_t) p->va; /* mach_vm_offset_t * */ 6288+ iarg[3] = p->findspace; /* mach_boolean_t */ 6289+ iarg[4] = p->size; /* mach_vm_size_t */ 6290+ *n_args = 5; 6291+ break; 6292+ } 6293+ /* mach_task_for_pid */ 6294+ case 45: { 6295+ struct mach_task_for_pid_args *p = params; 6296+ iarg[0] = p->target_tport; /* mach_port_t */ 6297+ iarg[1] = p->pid; /* int */ 6298+ uarg[2] = (intptr_t) p->t; /* mach_port_t * */ 6299+ *n_args = 3; 6300+ break; 6301+ } 6302+ /* mach_pid_for_task */ 6303+ case 46: { 6304+ struct mach_pid_for_task_args *p = params; 6305+ iarg[0] = p->t; /* mach_port_t */ 6306+ uarg[1] = (intptr_t) p->x; /* int * */ 6307+ *n_args = 2; 6308+ break; 6309+ } 6310+ /* mach_macx_swapon */ 6311+ case 48: { 6312+ struct mach_macx_swapon_args *p = params; 6313+ uarg[0] = (intptr_t) p->name; /* char * */ 6314+ iarg[1] = p->flags; /* int */ 6315+ iarg[2] = p->size; /* int */ 6316+ iarg[3] = p->priority; /* int */ 6317+ *n_args = 4; 6318+ break; 6319+ } 6320+ /* mach_macx_swapoff */ 6321+ case 49: { 6322+ struct mach_macx_swapoff_args *p = params; 6323+ uarg[0] = (intptr_t) p->name; /* char * */ 6324+ iarg[1] = p->flags; /* int */ 6325+ *n_args = 2; 6326+ break; 6327+ } 6328+ /* mach_macx_triggers */ 6329+ case 51: { 6330+ struct mach_macx_triggers_args *p = params; 6331+ iarg[0] = p->hi_water; /* int */ 6332+ iarg[1] = p->low_water; /* int */ 6333+ iarg[2] = p->flags; /* int */ 6334+ iarg[3] = p->alert_port; /* mach_port_t */ 6335+ *n_args = 4; 6336+ break; 6337+ } 6338+ /* mach_swtch_pri */ 6339+ case 59: { 6340+ struct mach_swtch_pri_args *p = params; 6341+ iarg[0] = p->pri; /* int */ 6342+ *n_args = 1; 6343+ break; 6344+ } 6345+ /* mach_swtch */ 6346+ case 60: { 6347+ *n_args = 0; 6348+ break; 6349+ } 6350+ /* mach_syscall_thread_switch */ 6351+ case 61: { 6352+ struct mach_syscall_thread_switch_args *p = params; 6353+ iarg[0] = p->thread_name; /* mach_port_name_t */ 6354+ iarg[1] = p->option; /* int */ 6355+ iarg[2] = p->option_time; /* mach_msg_timeout_t */ 6356+ *n_args = 3; 6357+ break; 6358+ } 6359+ /* mach_clock_sleep_trap */ 6360+ case 62: { 6361+ struct mach_clock_sleep_trap_args *p = params; 6362+ iarg[0] = p->clock_name; /* mach_port_name_t */ 6363+ iarg[1] = p->sleep_type; /* mach_sleep_type_t */ 6364+ iarg[2] = p->sleep_sec; /* int */ 6365+ iarg[3] = p->sleep_nsec; /* int */ 6366+ uarg[4] = (intptr_t) p->wakeup_time; /* mach_timespec_t * */ 6367+ *n_args = 5; 6368+ break; 6369+ } 6370+ /* mach_timebase_info */ 6371+ case 89: { 6372+ struct mach_timebase_info_args *p = params; 6373+ iarg[0] = p->info; /* mach_timebase_info_t */ 6374+ *n_args = 1; 6375+ break; 6376+ } 6377+ /* mach_wait_until */ 6378+ case 90: { 6379+ struct mach_wait_until_args *p = params; 6380+ uarg[0] = p->deadline; /* uint64_t */ 6381+ *n_args = 1; 6382+ break; 6383+ } 6384+ /* mach_timer_create */ 6385+ case 91: { 6386+ *n_args = 0; 6387+ break; 6388+ } 6389+ /* mach_timer_destroy */ 6390+ case 92: { 6391+ struct mach_timer_destroy_args *p = params; 6392+ iarg[0] = p->name; /* mach_port_name_t */ 6393+ *n_args = 1; 6394+ break; 6395+ } 6396+ /* mach_timer_arm */ 6397+ case 93: { 6398+ struct mach_timer_arm_args *p = params; 6399+ iarg[0] = p->name; /* mach_port_name_t */ 6400+ iarg[1] = p->expire_time; /* mach_absolute_time_t */ 6401+ *n_args = 2; 6402+ break; 6403+ } 6404+ /* mach_timer_cancel */ 6405+ case 94: { 6406+ struct mach_timer_cancel_args *p = params; 6407+ iarg[0] = p->name; /* mach_port_name_t */ 6408+ uarg[1] = (intptr_t) p->result_time; /* mach_absolute_time_t * */ 6409+ *n_args = 2; 6410+ break; 6411+ } 6412+ /* mach_get_time_base_info */ 6413+ case 95: { 6414+ *n_args = 0; 6415+ break; 6416+ } 6417+ default: 6418+ *n_args = 0; 6419+ break; 6420+ }; 6421+} 6422+static void 6423+systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) 6424+{ 6425+ const char *p = NULL; 6426+ switch (sysnum) { 6427+#if defined(_KERNEL_OPT) 6428+#endif 6429+ /* mach_reply_port */ 6430+ case 26: 6431+ break; 6432+ /* mach_thread_self_trap */ 6433+ case 27: 6434+ break; 6435+ /* mach_task_self_trap */ 6436+ case 28: 6437+ break; 6438+ /* mach_host_self_trap */ 6439+ case 29: 6440+ break; 6441+ /* mach_msg_trap */ 6442+ case 31: 6443+ switch(ndx) { 6444+ case 0: 6445+ p = "mach_msg_header_t *"; 6446+ break; 6447+ case 1: 6448+ p = "mach_msg_option_t"; 6449+ break; 6450+ case 2: 6451+ p = "mach_msg_size_t"; 6452+ break; 6453+ case 3: 6454+ p = "mach_msg_size_t"; 6455+ break; 6456+ case 4: 6457+ p = "mach_port_name_t"; 6458+ break; 6459+ case 5: 6460+ p = "mach_msg_timeout_t"; 6461+ break; 6462+ case 6: 6463+ p = "mach_port_name_t"; 6464+ break; 6465+ default: 6466+ break; 6467+ }; 6468+ break; 6469+ /* mach_msg_overwrite_trap */ 6470+ case 32: 6471+ switch(ndx) { 6472+ case 0: 6473+ p = "mach_msg_header_t *"; 6474+ break; 6475+ case 1: 6476+ p = "mach_msg_option_t"; 6477+ break; 6478+ case 2: 6479+ p = "mach_msg_size_t"; 6480+ break; 6481+ case 3: 6482+ p = "mach_msg_size_t"; 6483+ break; 6484+ case 4: 6485+ p = "mach_port_name_t"; 6486+ break; 6487+ case 5: 6488+ p = "mach_msg_timeout_t"; 6489+ break; 6490+ case 6: 6491+ p = "mach_port_name_t"; 6492+ break; 6493+ case 7: 6494+ p = "mach_msg_header_t *"; 6495+ break; 6496+ case 8: 6497+ p = "mach_msg_size_t"; 6498+ break; 6499+ default: 6500+ break; 6501+ }; 6502+ break; 6503+ /* mach_semaphore_signal_trap */ 6504+ case 33: 6505+ switch(ndx) { 6506+ case 0: 6507+ p = "mach_port_name_t"; 6508+ break; 6509+ default: 6510+ break; 6511+ }; 6512+ break; 6513+ /* mach_semaphore_signal_all_trap */ 6514+ case 34: 6515+ switch(ndx) { 6516+ case 0: 6517+ p = "mach_port_name_t"; 6518+ break; 6519+ default: 6520+ break; 6521+ }; 6522+ break; 6523+ /* mach_semaphore_signal_thread_trap */ 6524+ case 35: 6525+ switch(ndx) { 6526+ case 0: 6527+ p = "mach_port_name_t"; 6528+ break; 6529+ case 1: 6530+ p = "mach_port_name_t"; 6531+ break; 6532+ default: 6533+ break; 6534+ }; 6535+ break; 6536+ /* mach_semaphore_wait_trap */ 6537+ case 36: 6538+ switch(ndx) { 6539+ case 0: 6540+ p = "mach_port_name_t"; 6541+ break; 6542+ default: 6543+ break; 6544+ }; 6545+ break; 6546+ /* mach_semaphore_wait_signal_trap */ 6547+ case 37: 6548+ switch(ndx) { 6549+ case 0: 6550+ p = "mach_port_name_t"; 6551+ break; 6552+ case 1: 6553+ p = "mach_port_name_t"; 6554+ break; 6555+ default: 6556+ break; 6557+ }; 6558+ break; 6559+ /* mach_semaphore_timedwait_trap */ 6560+ case 38: 6561+ switch(ndx) { 6562+ case 0: 6563+ p = "mach_port_name_t"; 6564+ break; 6565+ case 1: 6566+ p = "unsigned int"; 6567+ break; 6568+ case 2: 6569+ p = "mach_clock_res_t"; 6570+ break; 6571+ default: 6572+ break; 6573+ }; 6574+ break; 6575+ /* mach_semaphore_timedwait_signal_trap */ 6576+ case 39: 6577+ switch(ndx) { 6578+ case 0: 6579+ p = "mach_port_name_t"; 6580+ break; 6581+ case 1: 6582+ p = "mach_port_name_t"; 6583+ break; 6584+ case 2: 6585+ p = "unsigned int"; 6586+ break; 6587+ case 3: 6588+ p = "mach_clock_res_t"; 6589+ break; 6590+ default: 6591+ break; 6592+ }; 6593+ break; 6594+ /* mach_init_process */ 6595+ case 41: 6596+ break; 6597+ /* mach_map_fd */ 6598+ case 43: 6599+ switch(ndx) { 6600+ case 0: 6601+ p = "int"; 6602+ break; 6603+ case 1: 6604+ p = "mach_vm_offset_t"; 6605+ break; 6606+ case 2: 6607+ p = "mach_vm_offset_t *"; 6608+ break; 6609+ case 3: 6610+ p = "mach_boolean_t"; 6611+ break; 6612+ case 4: 6613+ p = "mach_vm_size_t"; 6614+ break; 6615+ default: 6616+ break; 6617+ }; 6618+ break; 6619+ /* mach_task_for_pid */ 6620+ case 45: 6621+ switch(ndx) { 6622+ case 0: 6623+ p = "mach_port_t"; 6624+ break; 6625+ case 1: 6626+ p = "int"; 6627+ break; 6628+ case 2: 6629+ p = "mach_port_t *"; 6630+ break; 6631+ default: 6632+ break; 6633+ }; 6634+ break; 6635+ /* mach_pid_for_task */ 6636+ case 46: 6637+ switch(ndx) { 6638+ case 0: 6639+ p = "mach_port_t"; 6640+ break; 6641+ case 1: 6642+ p = "int *"; 6643+ break; 6644+ default: 6645+ break; 6646+ }; 6647+ break; 6648+ /* mach_macx_swapon */ 6649+ case 48: 6650+ switch(ndx) { 6651+ case 0: 6652+ p = "char *"; 6653+ break; 6654+ case 1: 6655+ p = "int"; 6656+ break; 6657+ case 2: 6658+ p = "int"; 6659+ break; 6660+ case 3: 6661+ p = "int"; 6662+ break; 6663+ default: 6664+ break; 6665+ }; 6666+ break; 6667+ /* mach_macx_swapoff */ 6668+ case 49: 6669+ switch(ndx) { 6670+ case 0: 6671+ p = "char *"; 6672+ break; 6673+ case 1: 6674+ p = "int"; 6675+ break; 6676+ default: 6677+ break; 6678+ }; 6679+ break; 6680+ /* mach_macx_triggers */ 6681+ case 51: 6682+ switch(ndx) { 6683+ case 0: 6684+ p = "int"; 6685+ break; 6686+ case 1: 6687+ p = "int"; 6688+ break; 6689+ case 2: 6690+ p = "int"; 6691+ break; 6692+ case 3: 6693+ p = "mach_port_t"; 6694+ break; 6695+ default: 6696+ break; 6697+ }; 6698+ break; 6699+ /* mach_swtch_pri */ 6700+ case 59: 6701+ switch(ndx) { 6702+ case 0: 6703+ p = "int"; 6704+ break; 6705+ default: 6706+ break; 6707+ }; 6708+ break; 6709+ /* mach_swtch */ 6710+ case 60: 6711+ break; 6712+ /* mach_syscall_thread_switch */ 6713+ case 61: 6714+ switch(ndx) { 6715+ case 0: 6716+ p = "mach_port_name_t"; 6717+ break; 6718+ case 1: 6719+ p = "int"; 6720+ break; 6721+ case 2: 6722+ p = "mach_msg_timeout_t"; 6723+ break; 6724+ default: 6725+ break; 6726+ }; 6727+ break; 6728+ /* mach_clock_sleep_trap */ 6729+ case 62: 6730+ switch(ndx) { 6731+ case 0: 6732+ p = "mach_port_name_t"; 6733+ break; 6734+ case 1: 6735+ p = "mach_sleep_type_t"; 6736+ break; 6737+ case 2: 6738+ p = "int"; 6739+ break; 6740+ case 3: 6741+ p = "int"; 6742+ break; 6743+ case 4: 6744+ p = "mach_timespec_t *"; 6745+ break; 6746+ default: 6747+ break; 6748+ }; 6749+ break; 6750+ /* mach_timebase_info */ 6751+ case 89: 6752+ switch(ndx) { 6753+ case 0: 6754+ p = "mach_timebase_info_t"; 6755+ break; 6756+ default: 6757+ break; 6758+ }; 6759+ break; 6760+ /* mach_wait_until */ 6761+ case 90: 6762+ switch(ndx) { 6763+ case 0: 6764+ p = "uint64_t"; 6765+ break; 6766+ default: 6767+ break; 6768+ }; 6769+ break; 6770+ /* mach_timer_create */ 6771+ case 91: 6772+ break; 6773+ /* mach_timer_destroy */ 6774+ case 92: 6775+ switch(ndx) { 6776+ case 0: 6777+ p = "mach_port_name_t"; 6778+ break; 6779+ default: 6780+ break; 6781+ }; 6782+ break; 6783+ /* mach_timer_arm */ 6784+ case 93: 6785+ switch(ndx) { 6786+ case 0: 6787+ p = "mach_port_name_t"; 6788+ break; 6789+ case 1: 6790+ p = "mach_absolute_time_t"; 6791+ break; 6792+ default: 6793+ break; 6794+ }; 6795+ break; 6796+ /* mach_timer_cancel */ 6797+ case 94: 6798+ switch(ndx) { 6799+ case 0: 6800+ p = "mach_port_name_t"; 6801+ break; 6802+ case 1: 6803+ p = "mach_absolute_time_t *"; 6804+ break; 6805+ default: 6806+ break; 6807+ }; 6808+ break; 6809+ /* mach_get_time_base_info */ 6810+ case 95: 6811+ break; 6812+ default: 6813+ break; 6814+ }; 6815+ if (p != NULL) 6816+ strlcpy(desc, p, descsz); 6817+} 6818+static void 6819+systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) 6820+{ 6821+ const char *p = NULL; 6822+ switch (sysnum) { 6823+#if defined(_KERNEL_OPT) 6824+#endif 6825+ /* mach_reply_port */ 6826+ case 26: 6827+ /* mach_thread_self_trap */ 6828+ case 27: 6829+ /* mach_task_self_trap */ 6830+ case 28: 6831+ /* mach_host_self_trap */ 6832+ case 29: 6833+ /* mach_msg_trap */ 6834+ case 31: 6835+ if (ndx == 0 || ndx == 1) 6836+ p = "int"; 6837+ break; 6838+ /* mach_msg_overwrite_trap */ 6839+ case 32: 6840+ if (ndx == 0 || ndx == 1) 6841+ p = "int"; 6842+ break; 6843+ /* mach_semaphore_signal_trap */ 6844+ case 33: 6845+ if (ndx == 0 || ndx == 1) 6846+ p = "int"; 6847+ break; 6848+ /* mach_semaphore_signal_all_trap */ 6849+ case 34: 6850+ if (ndx == 0 || ndx == 1) 6851+ p = "int"; 6852+ break; 6853+ /* mach_semaphore_signal_thread_trap */ 6854+ case 35: 6855+ if (ndx == 0 || ndx == 1) 6856+ p = "int"; 6857+ break; 6858+ /* mach_semaphore_wait_trap */ 6859+ case 36: 6860+ if (ndx == 0 || ndx == 1) 6861+ p = "int"; 6862+ break; 6863+ /* mach_semaphore_wait_signal_trap */ 6864+ case 37: 6865+ if (ndx == 0 || ndx == 1) 6866+ p = "int"; 6867+ break; 6868+ /* mach_semaphore_timedwait_trap */ 6869+ case 38: 6870+ if (ndx == 0 || ndx == 1) 6871+ p = "int"; 6872+ break; 6873+ /* mach_semaphore_timedwait_signal_trap */ 6874+ case 39: 6875+ if (ndx == 0 || ndx == 1) 6876+ p = "int"; 6877+ break; 6878+ /* mach_init_process */ 6879+ case 41: 6880+ /* mach_map_fd */ 6881+ case 43: 6882+ if (ndx == 0 || ndx == 1) 6883+ p = "int"; 6884+ break; 6885+ /* mach_task_for_pid */ 6886+ case 45: 6887+ if (ndx == 0 || ndx == 1) 6888+ p = "int"; 6889+ break; 6890+ /* mach_pid_for_task */ 6891+ case 46: 6892+ if (ndx == 0 || ndx == 1) 6893+ p = "int"; 6894+ break; 6895+ /* mach_macx_swapon */ 6896+ case 48: 6897+ if (ndx == 0 || ndx == 1) 6898+ p = "int"; 6899+ break; 6900+ /* mach_macx_swapoff */ 6901+ case 49: 6902+ if (ndx == 0 || ndx == 1) 6903+ p = "int"; 6904+ break; 6905+ /* mach_macx_triggers */ 6906+ case 51: 6907+ if (ndx == 0 || ndx == 1) 6908+ p = "int"; 6909+ break; 6910+ /* mach_swtch_pri */ 6911+ case 59: 6912+ if (ndx == 0 || ndx == 1) 6913+ p = "int"; 6914+ break; 6915+ /* mach_swtch */ 6916+ case 60: 6917+ /* mach_syscall_thread_switch */ 6918+ case 61: 6919+ if (ndx == 0 || ndx == 1) 6920+ p = "int"; 6921+ break; 6922+ /* mach_clock_sleep_trap */ 6923+ case 62: 6924+ if (ndx == 0 || ndx == 1) 6925+ p = "int"; 6926+ break; 6927+ /* mach_timebase_info */ 6928+ case 89: 6929+ if (ndx == 0 || ndx == 1) 6930+ p = "int"; 6931+ break; 6932+ /* mach_wait_until */ 6933+ case 90: 6934+ if (ndx == 0 || ndx == 1) 6935+ p = "int"; 6936+ break; 6937+ /* mach_timer_create */ 6938+ case 91: 6939+ /* mach_timer_destroy */ 6940+ case 92: 6941+ if (ndx == 0 || ndx == 1) 6942+ p = "int"; 6943+ break; 6944+ /* mach_timer_arm */ 6945+ case 93: 6946+ if (ndx == 0 || ndx == 1) 6947+ p = "int"; 6948+ break; 6949+ /* mach_timer_cancel */ 6950+ case 94: 6951+ if (ndx == 0 || ndx == 1) 6952+ p = "int"; 6953+ break; 6954+ /* mach_get_time_base_info */ 6955+ case 95: 6956+ default: 6957+ break; 6958+ }; 6959+ if (p != NULL) 6960+ strlcpy(desc, p, descsz); 6961+} 6962diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c 6963index 4ada0e4..d3a4acd 100644 6964--- a/sys/kern/kern_sig.c 6965+++ b/sys/kern/kern_sig.c 6966@@ -105,7 +105,6 @@ static int coredump(struct thread *); 6967 static int killpg1(struct thread *td, int sig, int pgid, int all, 6968 ksiginfo_t *ksi); 6969 static int issignal(struct thread *td); 6970-static int sigprop(int sig); 6971 static void tdsigwakeup(struct thread *, int, sig_t, int); 6972 static void sig_suspend_threads(struct thread *, struct proc *, int); 6973 static int filt_sigattach(struct knote *kn); 6974@@ -607,7 +606,7 @@ sigonstack(size_t sp) 6975 } 6976 6977 static __inline int 6978-sigprop(int sig) 6979+__sigprop(int sig) 6980 { 6981 6982 if (sig > 0 && sig < NSIG) 6983@@ -616,6 +615,13 @@ sigprop(int sig) 6984 } 6985 6986 int 6987+sigprop(int sig) 6988+{ 6989+ 6990+ return (__sigprop(sig)); 6991+} 6992+ 6993+int 6994 sig_ffs(sigset_t *set) 6995 { 6996 int i; 6997@@ -757,7 +763,7 @@ kern_sigaction(td, sig, act, oact, flags) 6998 * have to restart the process. 6999 */ 7000 if (ps->ps_sigact[_SIG_IDX(sig)] == SIG_IGN || 7001- (sigprop(sig) & SA_IGNORE && 7002+ (__sigprop(sig) & SA_IGNORE && 7003 ps->ps_sigact[_SIG_IDX(sig)] == SIG_DFL)) { 7004 /* never to be seen again */ 7005 sigqueue_delete_proc(p, sig); 7006@@ -925,7 +931,7 @@ siginit(p) 7007 ps = p->p_sigacts; 7008 mtx_lock(&ps->ps_mtx); 7009 for (i = 1; i <= NSIG; i++) { 7010- if (sigprop(i) & SA_IGNORE && i != SIGCONT) { 7011+ if (__sigprop(i) & SA_IGNORE && i != SIGCONT) { 7012 SIGADDSET(ps->ps_sigignore, i); 7013 } 7014 } 7015@@ -942,7 +948,7 @@ sigdflt(struct sigacts *ps, int sig) 7016 7017 mtx_assert(&ps->ps_mtx, MA_OWNED); 7018 SIGDELSET(ps->ps_sigcatch, sig); 7019- if ((sigprop(sig) & SA_IGNORE) != 0 && sig != SIGCONT) 7020+ if ((__sigprop(sig) & SA_IGNORE) != 0 && sig != SIGCONT) 7021 SIGADDSET(ps->ps_sigignore, sig); 7022 ps->ps_sigact[_SIG_IDX(sig)] = SIG_DFL; 7023 SIGDELSET(ps->ps_siginfo, sig); 7024@@ -970,7 +976,7 @@ execsigs(struct proc *p) 7025 while (SIGNOTEMPTY(ps->ps_sigcatch)) { 7026 sig = sig_ffs(&ps->ps_sigcatch); 7027 sigdflt(ps, sig); 7028- if ((sigprop(sig) & SA_IGNORE) != 0) 7029+ if ((__sigprop(sig) & SA_IGNORE) != 0) 7030 sigqueue_delete_proc(p, sig); 7031 } 7032 /* 7033@@ -2100,7 +2106,7 @@ tdsendsignal(struct proc *p, struct thread *td, int sig, ksiginfo_t *ksi) 7034 7035 ps = p->p_sigacts; 7036 KNOTE_LOCKED(&p->p_klist, NOTE_SIGNAL | sig); 7037- prop = sigprop(sig); 7038+ prop = __sigprop(sig); 7039 7040 if (td == NULL) { 7041 td = sigtd(p, sig, prop); 7042@@ -2365,7 +2371,7 @@ tdsigwakeup(struct thread *td, int sig, sig_t action, int intrval) 7043 7044 wakeup_swapper = 0; 7045 PROC_LOCK_ASSERT(p, MA_OWNED); 7046- prop = sigprop(sig); 7047+ prop = __sigprop(sig); 7048 7049 PROC_SLOCK(p); 7050 thread_lock(td); 7051@@ -2722,7 +2728,7 @@ issignal(struct thread *td) 7052 continue; 7053 } 7054 7055- prop = sigprop(sig); 7056+ prop = __sigprop(sig); 7057 7058 /* 7059 * Decide whether the signal should be returned. 7060@@ -2946,7 +2952,7 @@ sigexit(td, sig) 7061 * XXX If another thread attempts to single-thread before us 7062 * (e.g. via fork()), we won't get a dump at all. 7063 */ 7064- if ((sigprop(sig) & SA_CORE) && thread_single(p, SINGLE_NO_EXIT) == 0) { 7065+ if ((__sigprop(sig) & SA_CORE) && (thread_single(SINGLE_NO_EXIT) == 0)) { 7066 p->p_sig = sig; 7067 /* 7068 * Log signals which would cause core dumps 7069diff --git a/sys/sys/signal.h b/sys/sys/signal.h 7070index 81e06a8..84e20b8 100644 7071--- a/sys/sys/signal.h 7072+++ b/sys/sys/signal.h 7073@@ -420,6 +420,21 @@ struct sigstack { 7074 #define sigmask(m) (1 << ((m)-1)) 7075 #endif 7076 7077+/* 7078+ * Signal properties and actions. 7079+ * The array below categorizes the signals and their default actions 7080+ * according to the following properties: 7081+ */ 7082+#define SA_KILL 0x01 /* terminates process by default */ 7083+#define SA_CORE 0x02 /* ditto and coredumps */ 7084+#define SA_STOP 0x04 /* suspend process */ 7085+#define SA_TTYSTOP 0x08 /* ditto, from tty */ 7086+#define SA_IGNORE 0x10 /* ignore by default */ 7087+#define SA_CONT 0x20 /* continue if suspended */ 7088+#define SA_CANTMASK 0x40 /* non-maskable, catchable */ 7089+ 7090+int sigprop(int); 7091+ 7092 #if __BSD_VISIBLE 7093 #define BADSIG SIG_ERR 7094 #endif 7095-- 70961.8.4.2 7097 7098