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 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 * WARNING: fds must be long so it translates to two 64 bit registers 22 * on 64 bit architectures. 23 */ 24 union sysunion; 25 26 struct sysmsg { 27 union { 28 void *resultp; /* misc pointer data or result */ 29 int result; /* DEPRECATED - AUDIT -> iresult */ 30 int iresult; /* standard 'int'eger result */ 31 long lresult; /* long result */ 32 size_t szresult; /* size_t result */ 33 long fds[2]; /* double result */ 34 __int32_t result32; /* 32 bit result */ 35 __int64_t result64; /* 64 bit result */ 36 __off_t offset; /* off_t result */ 37 register_t reg; 38 } sm_result; 39 struct trapframe *sm_frame; /* trapframe - saved user context */ 40 void *sm_unused; 41 }; 42 43 struct lwp; 44 union sysunion; 45 46 #endif 47 48 #ifdef _KERNEL 49 #define sysmsg_result sysmsg.sm_result.result 50 #define sysmsg_iresult sysmsg.sm_result.iresult 51 #define sysmsg_lresult sysmsg.sm_result.lresult 52 #define sysmsg_szresult sysmsg.sm_result.szresult 53 #define sysmsg_resultp sysmsg.sm_result.resultp 54 #define sysmsg_fds sysmsg.sm_result.fds 55 #define sysmsg_offset sysmsg.sm_result.offset 56 #define sysmsg_result32 sysmsg.sm_result.result32 57 #define sysmsg_result64 sysmsg.sm_result.result64 58 #define sysmsg_reg sysmsg.sm_result.reg 59 #define sysmsg_frame sysmsg.sm_frame 60 #endif 61 62 #endif 63 64