xref: /dragonfly/sys/sys/sysmsg.h (revision 8a7bdfea)
1 /*
2  * SYS/SYSMSG.H
3  *
4  * $DragonFly: src/sys/sys/sysmsg.h,v 1.11 2006/10/20 17:02:13 dillon Exp $
5  */
6 
7 #ifndef _SYS_SYSMSG_H_
8 #define _SYS_SYSMSG_H_
9 
10 #ifdef _KERNEL
11 
12 #ifndef _SYS_TYPES_H_
13 #include <sys/types.h>
14 #endif
15 
16 /*
17  * The sysmsg holds the kernelland version of a system call's arguments
18  * and return value.  It typically preceeds the syscall arguments in sysunion
19  * (see sys/sysunion.h).
20  */
21 union sysunion;
22 
23 struct sysmsg {
24 	union {
25 	    void    *resultp;            /* misc pointer data or result */
26 	    int     result;              /* standard 'int'eger result */
27 	    long    lresult;             /* long result */
28 	    int     fds[2];              /* two int bit results */
29 	    __int32_t result32;          /* 32 bit result */
30 	    __int64_t result64;          /* 64 bit result */
31 	    __off_t offset;              /* off_t result */
32 	} sm_result;
33 	struct trapframe *sm_frame;	 /* trapframe - saved user context */
34 	void *sm_unused;
35 };
36 
37 struct lwp;
38 union sysunion;
39 
40 #endif
41 
42 #ifdef _KERNEL
43 #define sysmsg_result	sysmsg.sm_result.result
44 #define sysmsg_lresult	sysmsg.sm_result.lresult
45 #define sysmsg_resultp	sysmsg.sm_result.resultp
46 #define sysmsg_fds	sysmsg.sm_result.fds
47 #define sysmsg_offset	sysmsg.sm_result.offset
48 #define sysmsg_result32	sysmsg.sm_result.result32
49 #define sysmsg_result64	sysmsg.sm_result.result64
50 #define sysmsg_frame	sysmsg.sm_frame
51 #endif
52 
53 #endif
54 
55