4 * $DragonFly: src/sys/sys/sysmsg.h,v 1.8 2006/05/20 02:42:13 dillon Exp $
12 #ifndef _SYS_MSGPORT_H_
13 #include <sys/msgport.h>
15 #ifndef _SYS_CALLOUT_H_
16 #include <sys/callout.h> /* for struct callout */
19 #include <sys/time.h> /* for struct timespec */
23 * The sysmsg holds the kernelland version of a system call.
24 * It typically preceeds the usrmsg and syscall arguments in sysunion
25 * (see sys/sysunion.h). Note that msgq field is used by the governing
26 * process to record a system call that returns EASYNC in order to be able
27 * to properly abort and/or wait on it in exit1(). This is different from
28 * any localized queueing of the LWKT message that the syscall itself might
35 void (*copyout)(union sysunion *sysun);
36 TAILQ_ENTRY(sysmsg) msgq;
50 struct sysmsg *sysmsg_wait(struct lwp *lp, struct sysmsg *sysmsg, int nonblock);
51 void sysmsg_rundown(struct lwp *lp, int doabort);
56 * The usrmsg holds the userland version of the system call message which
57 * typically preceeds the original user arguments. This message structure
58 * is typically loaded by the copyin() and adjusted prior to copyout(), but
59 * not used in the nominal running of the system call.
66 typedef struct sysmsg *sysmsg_t;
67 #define sysmsg_copyout sysmsg.copyout
68 #define sysmsg_lmsg sysmsg.lmsg
69 #define sysmsg_result sysmsg.lmsg.u.ms_result
70 #define sysmsg_lresult sysmsg.lmsg.u.ms_lresult
71 #define sysmsg_resultp sysmsg.lmsg.u.ms_resultp
72 #define sysmsg_fds sysmsg.lmsg.u.ms_fds
73 #define sysmsg_offset sysmsg.lmsg.u.ms_offset
74 #define sysmsg_result32 sysmsg.lmsg.u.ms_result32
75 #define sysmsg_result64 sysmsg.lmsg.u.ms_result64
78 typedef union usrmsg *usrmsg_t;
79 #define usrmsg_result usrmsg.umsg.u.ms_result
80 #define usrmsg_lresult usrmsg.umsg.u.ms_lresult
81 #define usrmsg_resultp usrmsg.umsg.u.ms_resultp
82 #define usrmsg_fds usrmsg.umsg.u.ms_fds
83 #define usrmsg_offset usrmsg.umsg.u.ms_offset
84 #define usrmsg_result32 usrmsg.umsg.u.ms_result32
85 #define usrmsg_result64 usrmsg.umsg.u.ms_result64