boot/efi: Fix boot1's compilation with -fno-common.
[dragonfly.git] / sys / sys / sysmsg.h
1 /*
2  * SYS/SYSMSG.H
3  *
4  * $DragonFly: src/sys/sys/sysmsg.h,v 1.12 2008/08/25 23:35:47 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 #ifndef _SYS_SYSPROTO_H_
16 #include <sys/sysproto.h>
17 #endif
18 #ifndef _SYS_SYSUNION_H_
19 #include <sys/sysunion.h>
20 #endif
21
22 /*
23  * The sysmsg holds the kernelland version of a system call's arguments
24  * and return value.  It typically preceeds the syscall arguments in sysunion
25  * (see sys/sysunion.h).
26  *
27  * WARNING: fds must be long so it translates to two 64 bit registers
28  * on 64 bit architectures.
29  */
30 union sysunion;
31
32 struct sysmsg {
33         union {
34             void    *resultp;           /* misc pointer data or result */
35             int     result;             /* DEPRECATED - AUDIT -> iresult */
36             int     iresult;            /* standard 'int'eger result */
37             long    lresult;            /* long result */
38             size_t  szresult;           /* size_t result */
39             long    fds[2];             /* double result */
40             __int32_t result32;         /* 32 bit result */
41             __int64_t result64;         /* 64 bit result */
42             __off_t offset;             /* off_t result */
43             register_t reg;
44         } sm_result;
45         struct trapframe *sm_frame;     /* trapframe - saved user context */
46         union sysunion extargs;         /* if more than 6 args */
47 } __packed;
48
49 struct lwp;
50 union sysunion;
51
52 #endif
53
54 #ifdef _KERNEL
55 #define sysmsg_result   sm_result.result
56 #define sysmsg_iresult  sm_result.iresult
57 #define sysmsg_lresult  sm_result.lresult
58 #define sysmsg_szresult sm_result.szresult
59 #define sysmsg_resultp  sm_result.resultp
60 #define sysmsg_fds      sm_result.fds
61 #define sysmsg_offset   sm_result.offset
62 #define sysmsg_result32 sm_result.result32
63 #define sysmsg_result64 sm_result.result64
64 #define sysmsg_reg      sm_result.reg
65 #define sysmsg_frame    sm_frame
66 #endif
67
68 #endif
69