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 70