125fb5d38SWarner Losh /* 225fb5d38SWarner Losh * sys/user.h definitions 325fb5d38SWarner Losh * 425fb5d38SWarner Losh * Copyright (c) 2015 Stacey D. Son (sson at FreeBSD) 525fb5d38SWarner Losh * 625fb5d38SWarner Losh * This program is free software; you can redistribute it and/or modify 725fb5d38SWarner Losh * it under the terms of the GNU General Public License as published by 825fb5d38SWarner Losh * the Free Software Foundation; either version 2 of the License, or 925fb5d38SWarner Losh * (at your option) any later version. 1025fb5d38SWarner Losh * 1125fb5d38SWarner Losh * This program is distributed in the hope that it will be useful, 1225fb5d38SWarner Losh * but WITHOUT ANY WARRANTY; without even the implied warranty of 1325fb5d38SWarner Losh * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1425fb5d38SWarner Losh * GNU General Public License for more details. 1525fb5d38SWarner Losh * 1625fb5d38SWarner Losh * You should have received a copy of the GNU General Public License 1725fb5d38SWarner Losh * along with this program; if not, see <http://www.gnu.org/licenses/>. 1825fb5d38SWarner Losh */ 1925fb5d38SWarner Losh 209c092804SMarkus Armbruster #ifndef TARGET_OS_USER_H 219c092804SMarkus Armbruster #define TARGET_OS_USER_H 2225fb5d38SWarner Losh 2325fb5d38SWarner Losh /* 2425fb5d38SWarner Losh * from sys/priority.h 2525fb5d38SWarner Losh */ 2625fb5d38SWarner Losh struct target_priority { 2725fb5d38SWarner Losh uint8_t pri_class; /* Scheduling class. */ 2825fb5d38SWarner Losh uint8_t pri_level; /* Normal priority level. */ 29*944399ffSMichael Tokarev uint8_t pri_native; /* Priority before propagation. */ 3025fb5d38SWarner Losh uint8_t pri_user; /* User priority based on p_cpu and p_nice. */ 3125fb5d38SWarner Losh }; 3225fb5d38SWarner Losh 3325fb5d38SWarner Losh /* 3425fb5d38SWarner Losh * sys/caprights.h 3525fb5d38SWarner Losh */ 3625fb5d38SWarner Losh #define TARGET_CAP_RIGHTS_VERSION 0 3725fb5d38SWarner Losh 3825fb5d38SWarner Losh typedef struct target_cap_rights { 3925fb5d38SWarner Losh uint64_t cr_rights[TARGET_CAP_RIGHTS_VERSION + 2]; 4025fb5d38SWarner Losh } target_cap_rights_t; 4125fb5d38SWarner Losh 4225fb5d38SWarner Losh /* 4325fb5d38SWarner Losh * From sys/_socketaddr_storage.h 4425fb5d38SWarner Losh * 4525fb5d38SWarner Losh */ 4625fb5d38SWarner Losh #define TARGET_SS_MAXSIZE 128U 4725fb5d38SWarner Losh #define TARGET_SS_ALIGNSIZE (sizeof(__int64_t)) 4825fb5d38SWarner Losh #define TARGET_SS_PAD1SIZE (TARGET_SS_ALIGNSIZE - sizeof(unsigned char) - \ 4925fb5d38SWarner Losh sizeof(uint8_t)) 5025fb5d38SWarner Losh #define TARGET_SS_PAD2SIZE (TARGET_SS_MAXSIZE - sizeof(unsigned char) - \ 5125fb5d38SWarner Losh sizeof(uint8_t) - TARGET_SS_PAD1SIZE - TARGET_SS_ALIGNSIZE) 5225fb5d38SWarner Losh 5325fb5d38SWarner Losh struct target_sockaddr_storage { 5425fb5d38SWarner Losh unsigned char ss_len; /* address length */ 5525fb5d38SWarner Losh uint8_t ss_family; /* address family */ 5625fb5d38SWarner Losh char __ss_pad1[TARGET_SS_PAD1SIZE]; 5725fb5d38SWarner Losh __int64_t __ss_align; /* force desired struct alignment */ 5825fb5d38SWarner Losh char __ss_pad2[TARGET_SS_PAD2SIZE]; 5925fb5d38SWarner Losh }; 6025fb5d38SWarner Losh 6125fb5d38SWarner Losh /* 6225fb5d38SWarner Losh * from sys/user.h 6325fb5d38SWarner Losh */ 6425fb5d38SWarner Losh #define TARGET_KI_NSPARE_INT 2 6525fb5d38SWarner Losh #define TARGET_KI_NSPARE_LONG 12 6625fb5d38SWarner Losh #define TARGET_KI_NSPARE_PTR 6 6725fb5d38SWarner Losh 6825fb5d38SWarner Losh #define TARGET_WMESGLEN 8 6925fb5d38SWarner Losh #define TARGET_LOCKNAMELEN 8 7025fb5d38SWarner Losh #define TARGET_TDNAMLEN 16 7125fb5d38SWarner Losh #define TARGET_COMMLEN 19 7225fb5d38SWarner Losh #define TARGET_KI_EMULNAMELEN 16 7325fb5d38SWarner Losh #define TARGET_KI_NGROUPS 16 7425fb5d38SWarner Losh #define TARGET_LOGNAMELEN 17 7525fb5d38SWarner Losh #define TARGET_LOGINCLASSLEN 17 7625fb5d38SWarner Losh 7725fb5d38SWarner Losh #define TARGET_KF_TYPE_NONE 0 7825fb5d38SWarner Losh #define TARGET_KF_TYPE_VNODE 1 7925fb5d38SWarner Losh #define TARGET_KF_TYPE_SOCKET 2 8025fb5d38SWarner Losh #define TARGET_KF_TYPE_PIPE 3 8125fb5d38SWarner Losh #define TARGET_KF_TYPE_FIFO 4 8225fb5d38SWarner Losh #define TARGET_KF_TYPE_KQUEUE 5 8325fb5d38SWarner Losh #define TARGET_KF_TYPE_CRYPTO 6 8425fb5d38SWarner Losh #define TARGET_KF_TYPE_MQUEUE 7 8525fb5d38SWarner Losh #define TARGET_KF_TYPE_SHM 8 8625fb5d38SWarner Losh #define TARGET_KF_TYPE_SEM 9 8725fb5d38SWarner Losh #define TARGET_KF_TYPE_PTS 10 8825fb5d38SWarner Losh #define TARGET_KF_TYPE_PROCDESC 11 8925fb5d38SWarner Losh #define TARGET_KF_TYPE_DEV 12 9025fb5d38SWarner Losh #define TARGET_KF_TYPE_UNKNOWN 255 9125fb5d38SWarner Losh 9225fb5d38SWarner Losh struct target_kinfo_proc { 9325fb5d38SWarner Losh int32_t ki_structsize; /* size of this structure */ 9425fb5d38SWarner Losh int32_t ki_layout; /* reserved: layout identifier */ 9525fb5d38SWarner Losh abi_ulong ki_args; /* address of command arguments */ 9625fb5d38SWarner Losh abi_ulong ki_paddr; /* address of proc */ 9725fb5d38SWarner Losh abi_ulong ki_addr; /* kernel virtual addr of u-area */ 9825fb5d38SWarner Losh abi_ulong ki_tracep; /* pointer to trace file */ 9925fb5d38SWarner Losh abi_ulong ki_textvp; /* pointer to executable file */ 10025fb5d38SWarner Losh abi_ulong ki_fd; /* pointer to open file info */ 10125fb5d38SWarner Losh abi_ulong ki_vmspace; /* pointer to kernel vmspace struct */ 10225fb5d38SWarner Losh abi_ulong ki_wchan; /* sleep address */ 10325fb5d38SWarner Losh int32_t ki_pid; /* Process identifier */ 10425fb5d38SWarner Losh int32_t ki_ppid; /* parent process id */ 10525fb5d38SWarner Losh int32_t ki_pgid; /* process group id */ 10625fb5d38SWarner Losh int32_t ki_tpgid; /* tty process group id */ 10725fb5d38SWarner Losh int32_t ki_sid; /* Process session ID */ 10825fb5d38SWarner Losh int32_t ki_tsid; /* Terminal session ID */ 10925fb5d38SWarner Losh int16_t ki_jobc; /* job control counter */ 11025fb5d38SWarner Losh int16_t ki_spare_short1; /* unused (just here for alignment) */ 11125fb5d38SWarner Losh int32_t ki_tdev__freebsd11; /* controlling tty dev */ 11225fb5d38SWarner Losh target_sigset_t ki_siglist; /* Signals arrived but not delivered */ 11325fb5d38SWarner Losh target_sigset_t ki_sigmask; /* Current signal mask */ 11425fb5d38SWarner Losh target_sigset_t ki_sigignore; /* Signals being ignored */ 11525fb5d38SWarner Losh target_sigset_t ki_sigcatch; /* Signals being caught by user */ 11625fb5d38SWarner Losh 11725fb5d38SWarner Losh int32_t ki_uid; /* effective user id */ 11825fb5d38SWarner Losh int32_t ki_ruid; /* Real user id */ 11925fb5d38SWarner Losh int32_t ki_svuid; /* Saved effective user id */ 12025fb5d38SWarner Losh int32_t ki_rgid; /* Real group id */ 12125fb5d38SWarner Losh int32_t ki_svgid; /* Saved effective group id */ 12225fb5d38SWarner Losh int16_t ki_ngroups; /* number of groups */ 12325fb5d38SWarner Losh int16_t ki_spare_short2; /* unused (just here for alignment) */ 12425fb5d38SWarner Losh int32_t ki_groups[TARGET_KI_NGROUPS]; /* groups */ 12525fb5d38SWarner Losh 12625fb5d38SWarner Losh abi_long ki_size; /* virtual size */ 12725fb5d38SWarner Losh 12825fb5d38SWarner Losh abi_long ki_rssize; /* current resident set size in pages */ 12925fb5d38SWarner Losh abi_long ki_swrss; /* resident set size before last swap */ 13025fb5d38SWarner Losh abi_long ki_tsize; /* text size (pages) XXX */ 13125fb5d38SWarner Losh abi_long ki_dsize; /* data size (pages) XXX */ 13225fb5d38SWarner Losh abi_long ki_ssize; /* stack size (pages) */ 13325fb5d38SWarner Losh 13425fb5d38SWarner Losh uint16_t ki_xstat; /* Exit status for wait & stop signal */ 13525fb5d38SWarner Losh uint16_t ki_acflag; /* Accounting flags */ 13625fb5d38SWarner Losh 13725fb5d38SWarner Losh uint32_t ki_pctcpu; /* %cpu for process during ki_swtime */ 13825fb5d38SWarner Losh 13925fb5d38SWarner Losh uint32_t ki_estcpu; /* Time averaged value of ki_cpticks */ 14025fb5d38SWarner Losh uint32_t ki_slptime; /* Time since last blocked */ 14125fb5d38SWarner Losh uint32_t ki_swtime; /* Time swapped in or out */ 14225fb5d38SWarner Losh uint32_t ki_cow; /* number of copy-on-write faults */ 14325fb5d38SWarner Losh uint64_t ki_runtime; /* Real time in microsec */ 14425fb5d38SWarner Losh 14525fb5d38SWarner Losh struct target_freebsd_timeval ki_start; /* starting time */ 14625fb5d38SWarner Losh struct target_freebsd_timeval ki_childtime; /* time used by process children */ 14725fb5d38SWarner Losh 14825fb5d38SWarner Losh abi_long ki_flag; /* P_* flags */ 14925fb5d38SWarner Losh abi_long ki_kiflag; /* KI_* flags (below) */ 15025fb5d38SWarner Losh int32_t ki_traceflag; /* Kernel trace points */ 15125fb5d38SWarner Losh char ki_stat; /* S* process status */ 15225fb5d38SWarner Losh int8_t ki_nice; /* Process "nice" value */ 15325fb5d38SWarner Losh char ki_lock; /* Process lock (prevent swap) count */ 15425fb5d38SWarner Losh char ki_rqindex; /* Run queue index */ 15525fb5d38SWarner Losh u_char ki_oncpu_old; /* Which cpu we are on (legacy) */ 15625fb5d38SWarner Losh u_char ki_lastcpu_old; /* Last cpu we were on (legacy) */ 15725fb5d38SWarner Losh char ki_tdname[TARGET_TDNAMLEN + 1]; /* thread name */ 15825fb5d38SWarner Losh char ki_wmesg[TARGET_WMESGLEN + 1]; /* wchan message */ 15925fb5d38SWarner Losh char ki_login[TARGET_LOGNAMELEN + 1]; /* setlogin name */ 16025fb5d38SWarner Losh char ki_lockname[TARGET_LOCKNAMELEN + 1]; /* lock name */ 16125fb5d38SWarner Losh char ki_comm[TARGET_COMMLEN + 1]; /* command name */ 16225fb5d38SWarner Losh char ki_emul[TARGET_KI_EMULNAMELEN + 1]; /* emulation name */ 16325fb5d38SWarner Losh char ki_loginclass[TARGET_LOGINCLASSLEN + 1]; /* login class */ 16425fb5d38SWarner Losh 16525fb5d38SWarner Losh char ki_sparestrings[50]; /* spare string space */ 16625fb5d38SWarner Losh int32_t ki_spareints[TARGET_KI_NSPARE_INT]; /* spare room for growth */ 16725fb5d38SWarner Losh uint64_t ki_tdev; /* controlling tty dev */ 16825fb5d38SWarner Losh int32_t ki_oncpu; /* Which cpu we are on */ 16925fb5d38SWarner Losh int32_t ki_lastcpu; /* Last cpu we were on */ 17025fb5d38SWarner Losh int32_t ki_tracer; /* Pid of tracing process */ 17125fb5d38SWarner Losh int32_t ki_flag2; /* P2_* flags */ 17225fb5d38SWarner Losh int32_t ki_fibnum; /* Default FIB number */ 17325fb5d38SWarner Losh uint32_t ki_cr_flags; /* Credential flags */ 17425fb5d38SWarner Losh int32_t ki_jid; /* Process jail ID */ 17525fb5d38SWarner Losh int32_t ki_numthreads; /* XXXKSE number of threads in total */ 17625fb5d38SWarner Losh 17725fb5d38SWarner Losh int32_t ki_tid; /* XXXKSE thread id */ 17825fb5d38SWarner Losh 17925fb5d38SWarner Losh struct target_priority ki_pri; /* process priority */ 18025fb5d38SWarner Losh struct target_freebsd_rusage ki_rusage; /* process rusage statistics */ 18125fb5d38SWarner Losh /* XXX - most fields in ki_rusage_ch are not (yet) filled in */ 18225fb5d38SWarner Losh struct target_freebsd_rusage ki_rusage_ch; /* rusage of children processes */ 18325fb5d38SWarner Losh 18425fb5d38SWarner Losh 18525fb5d38SWarner Losh abi_ulong ki_pcb; /* kernel virtual addr of pcb */ 18625fb5d38SWarner Losh abi_ulong ki_kstack; /* kernel virtual addr of stack */ 18725fb5d38SWarner Losh abi_ulong ki_udata; /* User convenience pointer */ 18825fb5d38SWarner Losh abi_ulong ki_tdaddr; /* address of thread */ 18925fb5d38SWarner Losh 19025fb5d38SWarner Losh abi_ulong ki_spareptrs[TARGET_KI_NSPARE_PTR]; /* spare room for growth */ 19125fb5d38SWarner Losh abi_long ki_sparelongs[TARGET_KI_NSPARE_LONG];/* spare room for growth */ 19225fb5d38SWarner Losh abi_long ki_sflag; /* PS_* flags */ 19325fb5d38SWarner Losh abi_long ki_tdflags; /* XXXKSE kthread flag */ 19425fb5d38SWarner Losh }; 19525fb5d38SWarner Losh 19625fb5d38SWarner Losh struct target_kinfo_file { 19725fb5d38SWarner Losh int32_t kf_structsize; /* Variable size of record. */ 19825fb5d38SWarner Losh int32_t kf_type; /* Descriptor type. */ 19925fb5d38SWarner Losh int32_t kf_fd; /* Array index. */ 20025fb5d38SWarner Losh int32_t kf_ref_count; /* Reference count. */ 20125fb5d38SWarner Losh int32_t kf_flags; /* Flags. */ 20225fb5d38SWarner Losh int32_t kf_pad0; /* Round to 64 bit alignment. */ 20325fb5d38SWarner Losh int64_t kf_offset; /* Seek location. */ 20425fb5d38SWarner Losh union { 20525fb5d38SWarner Losh struct { 20625fb5d38SWarner Losh uint32_t kf_spareint; 20725fb5d38SWarner Losh /* Socket domain. */ 20825fb5d38SWarner Losh int kf_sock_domain0; 20925fb5d38SWarner Losh /* Socket type. */ 21025fb5d38SWarner Losh int kf_sock_type0; 21125fb5d38SWarner Losh /* Socket protocol. */ 21225fb5d38SWarner Losh int kf_sock_protocol0; 21325fb5d38SWarner Losh /* Socket address. */ 21425fb5d38SWarner Losh struct sockaddr_storage kf_sa_local; 21525fb5d38SWarner Losh /* Peer address. */ 21625fb5d38SWarner Losh struct sockaddr_storage kf_sa_peer; 21725fb5d38SWarner Losh /* Address of so_pcb. */ 21825fb5d38SWarner Losh uint64_t kf_sock_pcb; 21925fb5d38SWarner Losh /* Address of inp_ppcb. */ 22025fb5d38SWarner Losh uint64_t kf_sock_inpcb; 22125fb5d38SWarner Losh /* Address of unp_conn. */ 22225fb5d38SWarner Losh uint64_t kf_sock_unpconn; 22325fb5d38SWarner Losh /* Send buffer state. */ 22425fb5d38SWarner Losh uint16_t kf_sock_snd_sb_state; 22525fb5d38SWarner Losh /* Receive buffer state. */ 22625fb5d38SWarner Losh uint16_t kf_sock_rcv_sb_state; 22725fb5d38SWarner Losh /* Round to 64 bit alignment. */ 22825fb5d38SWarner Losh uint32_t kf_sock_pad0; 22925fb5d38SWarner Losh } kf_sock; 23025fb5d38SWarner Losh struct { 23125fb5d38SWarner Losh /* Vnode type. */ 23225fb5d38SWarner Losh int kf_file_type; 23325fb5d38SWarner Losh /* Space for future use */ 23425fb5d38SWarner Losh int kf_spareint[3]; 23525fb5d38SWarner Losh uint64_t kf_spareint64[30]; 23625fb5d38SWarner Losh /* Vnode filesystem id. */ 23725fb5d38SWarner Losh uint64_t kf_file_fsid; 23825fb5d38SWarner Losh /* File device. */ 23925fb5d38SWarner Losh uint64_t kf_file_rdev; 24025fb5d38SWarner Losh /* Global file id. */ 24125fb5d38SWarner Losh uint64_t kf_file_fileid; 24225fb5d38SWarner Losh /* File size. */ 24325fb5d38SWarner Losh uint64_t kf_file_size; 24425fb5d38SWarner Losh /* Vnode filesystem id, FreeBSD 11 compat. */ 24525fb5d38SWarner Losh uint32_t kf_file_fsid_freebsd11; 24625fb5d38SWarner Losh /* File device, FreeBSD 11 compat. */ 24725fb5d38SWarner Losh uint32_t kf_file_rdev_freebsd11; 24825fb5d38SWarner Losh /* File mode. */ 24925fb5d38SWarner Losh uint16_t kf_file_mode; 25025fb5d38SWarner Losh /* Round to 64 bit alignment. */ 25125fb5d38SWarner Losh uint16_t kf_file_pad0; 25225fb5d38SWarner Losh uint32_t kf_file_pad1; 25325fb5d38SWarner Losh } kf_file; 25425fb5d38SWarner Losh struct { 25525fb5d38SWarner Losh uint32_t kf_spareint[4]; 25625fb5d38SWarner Losh uint64_t kf_spareint64[32]; 25725fb5d38SWarner Losh uint32_t kf_sem_value; 25825fb5d38SWarner Losh uint16_t kf_sem_mode; 25925fb5d38SWarner Losh } kf_sem; 26025fb5d38SWarner Losh struct { 26125fb5d38SWarner Losh uint32_t kf_spareint[4]; 26225fb5d38SWarner Losh uint64_t kf_spareint64[32]; 26325fb5d38SWarner Losh uint64_t kf_pipe_addr; 26425fb5d38SWarner Losh uint64_t kf_pipe_peer; 26525fb5d38SWarner Losh uint32_t kf_pipe_buffer_cnt; 26625fb5d38SWarner Losh /* Round to 64 bit alignment. */ 26725fb5d38SWarner Losh uint32_t kf_pipe_pad0[3]; 26825fb5d38SWarner Losh } kf_pipe; 26925fb5d38SWarner Losh struct { 27025fb5d38SWarner Losh uint32_t kf_spareint[4]; 27125fb5d38SWarner Losh uint64_t kf_spareint64[32]; 27225fb5d38SWarner Losh uint32_t kf_pts_dev_freebsd11; 27325fb5d38SWarner Losh uint32_t kf_pts_pad0; 27425fb5d38SWarner Losh uint64_t kf_pts_dev; 27525fb5d38SWarner Losh /* Round to 64 bit alignment. */ 27625fb5d38SWarner Losh uint32_t kf_pts_pad1[4]; 27725fb5d38SWarner Losh } kf_pts; 27825fb5d38SWarner Losh struct { 27925fb5d38SWarner Losh uint32_t kf_spareint[4]; 28025fb5d38SWarner Losh uint64_t kf_spareint64[32]; 28125fb5d38SWarner Losh int32_t kf_pid; 28225fb5d38SWarner Losh } kf_proc; 28325fb5d38SWarner Losh } kf_un; 28425fb5d38SWarner Losh uint16_t kf_status; /* Status flags. */ 28525fb5d38SWarner Losh uint16_t kf_pad1; /* Round to 32 bit alignment. */ 28625fb5d38SWarner Losh int32_t _kf_ispare0; /* Space for more stuff. */ 28725fb5d38SWarner Losh target_cap_rights_t kf_cap_rights; /* Capability rights. */ 28825fb5d38SWarner Losh uint64_t _kf_cap_spare; /* Space for future cap_rights_t. */ 28925fb5d38SWarner Losh /* Truncated before copyout in sysctl */ 29025fb5d38SWarner Losh char kf_path[PATH_MAX]; /* Path to file, if any. */ 29125fb5d38SWarner Losh }; 29225fb5d38SWarner Losh 29325fb5d38SWarner Losh struct target_kinfo_vmentry { 29425fb5d38SWarner Losh int32_t kve_structsize; /* Variable size of record. */ 29525fb5d38SWarner Losh int32_t kve_type; /* Type of map entry. */ 29625fb5d38SWarner Losh uint64_t kve_start; /* Starting address. */ 29725fb5d38SWarner Losh uint64_t kve_end; /* Finishing address. */ 29825fb5d38SWarner Losh uint64_t kve_offset; /* Mapping offset in object */ 29925fb5d38SWarner Losh uint64_t kve_vn_fileid; /* inode number if vnode */ 30025fb5d38SWarner Losh uint32_t kve_vn_fsid_freebsd11; /* dev_t of vnode location */ 30125fb5d38SWarner Losh int32_t kve_flags; /* Flags on map entry. */ 30225fb5d38SWarner Losh int32_t kve_resident; /* Number of resident pages. */ 30325fb5d38SWarner Losh int32_t kve_private_resident; /* Number of private pages. */ 30425fb5d38SWarner Losh int32_t kve_protection; /* Protection bitmask. */ 30525fb5d38SWarner Losh int32_t kve_ref_count; /* VM obj ref count. */ 30625fb5d38SWarner Losh int32_t kve_shadow_count; /* VM obj shadow count. */ 30725fb5d38SWarner Losh int32_t kve_vn_type; /* Vnode type. */ 30825fb5d38SWarner Losh uint64_t kve_vn_size; /* File size. */ 30925fb5d38SWarner Losh uint32_t kve_vn_rdev_freebsd11; /* Device id if device. */ 31025fb5d38SWarner Losh uint16_t kve_vn_mode; /* File mode. */ 31125fb5d38SWarner Losh uint16_t kve_status; /* Status flags. */ 31225fb5d38SWarner Losh #if (__FreeBSD_version >= 1300501 && __FreeBSD_version < 1400000) || \ 31325fb5d38SWarner Losh __FreeBSD_version >= 1400009 31425fb5d38SWarner Losh union { 31525fb5d38SWarner Losh uint64_t _kve_vn_fsid; /* dev_t of vnode location */ 31625fb5d38SWarner Losh uint64_t _kve_obj; /* handle of anon obj */ 31725fb5d38SWarner Losh } kve_type_spec; 31825fb5d38SWarner Losh #define kve_vn_fsid kve_type_spec._kve_vn_fsid 31925fb5d38SWarner Losh #define kve_obj kve_type_spec._kve_obj 32025fb5d38SWarner Losh #else 32125fb5d38SWarner Losh uint64_t kve_vn_fsid; /* dev_t of vnode location */ 32225fb5d38SWarner Losh #endif 32325fb5d38SWarner Losh uint64_t kve_vn_rdev; /* Device id if device. */ 32425fb5d38SWarner Losh int _kve_ispare[8]; /* Space for more stuff. */ 32525fb5d38SWarner Losh /* Truncated before copyout in sysctl */ 32625fb5d38SWarner Losh char kve_path[PATH_MAX]; /* Path to VM obj, if any. */ 32725fb5d38SWarner Losh }; 32825fb5d38SWarner Losh 3299c092804SMarkus Armbruster #endif /* TARGET_OS_USER_H */ 330