xref: /dragonfly/sys/sys/sysmsg.h (revision 851dc90d)
1 /*
2  * SYS/SYSMSG.H
3  *
4  * $DragonFly: src/sys/sys/sysmsg.h,v 1.3 2003/08/12 04:58:23 dillon Exp $
5  */
6 
7 #ifndef _SYS_SYSMSG_H_
8 #define _SYS_SYSMSG_H_
9 
10 #ifdef _KERNEL
11 
12 #ifndef _SYS_CALLOUT_H_
13 #include <sys/callout.h>	/* for struct callout */
14 #endif
15 #ifndef _SYS_TIME_H_
16 #include <sys/time.h>		/* for struct timespec */
17 #endif
18 
19 /*
20  * The sysmsg holds the kernelland version of a system call.
21  * It typically preceeds the usrmsg and syscall arguments in sysunion
22  * (see sys/sysunion.h)
23  */
24 union sysmsg {
25 	struct lwkt_msg	lmsg;
26 	struct sysmsg_sleep {
27 	    struct lwkt_msg lmsg;
28 	    struct timespec rmt;
29 	    struct timespec rqt;
30 	    struct callout  timer;
31 	} sm_sleep;
32 };
33 
34 #endif
35 
36 /*
37  * The usrmsg holds the userland version of the system call message which
38  * typically preceeds the original user arguments.  This message structure
39  * is typically loaded by the copyin() and adjusted prior to copyout(), but
40  * not used in the nominal running of the system call.
41  */
42 union usrmsg {
43 	struct lwkt_msg umsg;
44 };
45 
46 #ifdef _KERNEL
47 typedef union sysmsg *sysmsg_t;
48 #define sysmsg_result	sysmsg.lmsg.u.ms_result
49 #define sysmsg_lresult	sysmsg.lmsg.u.ms_lresult
50 #define sysmsg_resultp	sysmsg.lmsg.u.ms_resultp
51 #define sysmsg_fds	sysmsg.lmsg.u.ms_fds
52 #define sysmsg_offset	sysmsg.lmsg.u.ms_offset
53 #define sysmsg_result32	sysmsg.lmsg.u.ms_result32
54 #define sysmsg_result64	sysmsg.lmsg.u.ms_result64
55 #endif
56 
57 typedef union usrmsg *usrmsg_t;
58 #define usrmsg_result	usrmsg.umsg.u.ms_result
59 #define usrmsg_lresult	usrmsg.umsg.u.ms_lresult
60 #define usrmsg_resultp	usrmsg.umsg.u.ms_resultp
61 #define usrmsg_fds	usrmsg.umsg.u.ms_fds
62 #define usrmsg_offset	usrmsg.umsg.u.ms_offset
63 #define usrmsg_result32	usrmsg.umsg.u.ms_result32
64 #define usrmsg_result64	usrmsg.umsg.u.ms_result64
65 
66 #endif
67 
68