diff options
| author | Valentin Popov <valentin@popov.link> | 2024-01-08 00:21:28 +0300 | 
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2024-01-08 00:21:28 +0300 | 
| commit | 1b6a04ca5504955c571d1c97504fb45ea0befee4 (patch) | |
| tree | 7579f518b23313e8a9748a88ab6173d5e030b227 /vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd15 | |
| parent | 5ecd8cf2cba827454317368b68571df0d13d7842 (diff) | |
| download | fparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.tar.xz fparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.zip  | |
Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
Diffstat (limited to 'vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd15')
3 files changed, 592 insertions, 0 deletions
diff --git a/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs b/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs new file mode 100644 index 0000000..80c6fa1 --- /dev/null +++ b/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs @@ -0,0 +1,34 @@ +#[repr(C)] +#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))] +pub struct stat { +    pub st_dev: ::dev_t, +    pub st_ino: ::ino_t, +    pub st_nlink: ::nlink_t, +    pub st_mode: ::mode_t, +    st_padding0: i16, +    pub st_uid: ::uid_t, +    pub st_gid: ::gid_t, +    st_padding1: i32, +    pub st_rdev: ::dev_t, +    pub st_atime: ::time_t, +    pub st_atime_nsec: ::c_long, +    pub st_mtime: ::time_t, +    pub st_mtime_nsec: ::c_long, +    pub st_ctime: ::time_t, +    pub st_ctime_nsec: ::c_long, +    pub st_birthtime: ::time_t, +    pub st_birthtime_nsec: ::c_long, +    pub st_size: ::off_t, +    pub st_blocks: ::blkcnt_t, +    pub st_blksize: ::blksize_t, +    pub st_flags: ::fflags_t, +    pub st_gen: u64, +    pub st_spare: [u64; 10], +} + +impl ::Copy for ::stat {} +impl ::Clone for ::stat { +    fn clone(&self) -> ::stat { +        *self +    } +} diff --git a/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs b/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs new file mode 100644 index 0000000..d73215a --- /dev/null +++ b/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs @@ -0,0 +1,546 @@ +// APIs in FreeBSD 15 that have changed since 11. + +pub type nlink_t = u64; +pub type dev_t = u64; +pub type ino_t = ::c_ulong; +pub type shmatt_t = ::c_uint; +pub type kpaddr_t = u64; +pub type kssize_t = i64; +pub type domainset_t = __c_anonymous_domainset; + +s! { +    pub struct shmid_ds { +        pub shm_perm: ::ipc_perm, +        pub shm_segsz: ::size_t, +        pub shm_lpid: ::pid_t, +        pub shm_cpid: ::pid_t, +        pub shm_nattch: ::shmatt_t, +        pub shm_atime: ::time_t, +        pub shm_dtime: ::time_t, +        pub shm_ctime: ::time_t, +    } + +    pub struct kevent { +        pub ident: ::uintptr_t, +        pub filter: ::c_short, +        pub flags: ::c_ushort, +        pub fflags: ::c_uint, +        pub data: i64, +        pub udata: *mut ::c_void, +        pub ext: [u64; 4], +    } + +    pub struct kvm_page { +        pub kp_version: ::u_int, +        pub kp_paddr: ::kpaddr_t, +        pub kp_kmap_vaddr: ::kvaddr_t, +        pub kp_dmap_vaddr: ::kvaddr_t, +        pub kp_prot: ::vm_prot_t, +        pub kp_offset: ::off_t, +        pub kp_len: ::size_t, +    } + +    pub struct __c_anonymous_domainset { +        _priv: [::uintptr_t; 4], +    } + +    pub struct kinfo_proc { +        /// Size of this structure. +        pub ki_structsize: ::c_int, +        /// Reserved: layout identifier. +        pub ki_layout: ::c_int, +        /// Address of command arguments. +        pub ki_args: *mut ::pargs, +        // This is normally "struct proc". +        /// Address of proc. +        pub ki_paddr: *mut ::c_void, +        // This is normally "struct user". +        /// Kernel virtual address of u-area. +        pub ki_addr: *mut ::c_void, +        // This is normally "struct vnode". +        /// Pointer to trace file. +        pub ki_tracep: *mut ::c_void, +        // This is normally "struct vnode". +        /// Pointer to executable file. +        pub ki_textvp: *mut ::c_void, +        // This is normally "struct filedesc". +        /// Pointer to open file info. +        pub ki_fd: *mut ::c_void, +        // This is normally "struct vmspace". +        /// Pointer to kernel vmspace struct. +        pub ki_vmspace: *mut ::c_void, +        /// Sleep address. +        pub ki_wchan: *const ::c_void, +        /// Process identifier. +        pub ki_pid: ::pid_t, +        /// Parent process ID. +        pub ki_ppid: ::pid_t, +        /// Process group ID. +        pub ki_pgid: ::pid_t, +        /// tty process group ID. +        pub ki_tpgid: ::pid_t, +        /// Process session ID. +        pub ki_sid: ::pid_t, +        /// Terminal session ID. +        pub ki_tsid: ::pid_t, +        /// Job control counter. +        pub ki_jobc: ::c_short, +        /// Unused (just here for alignment). +        pub ki_spare_short1: ::c_short, +        /// Controlling tty dev. +        pub ki_tdev_freebsd11: u32, +        /// Signals arrived but not delivered. +        pub ki_siglist: ::sigset_t, +        /// Current signal mask. +        pub ki_sigmask: ::sigset_t, +        /// Signals being ignored. +        pub ki_sigignore: ::sigset_t, +        /// Signals being caught by user. +        pub ki_sigcatch: ::sigset_t, +        /// Effective user ID. +        pub ki_uid: ::uid_t, +        /// Real user ID. +        pub ki_ruid: ::uid_t, +        /// Saved effective user ID. +        pub ki_svuid: ::uid_t, +        /// Real group ID. +        pub ki_rgid: ::gid_t, +        /// Saved effective group ID. +        pub ki_svgid: ::gid_t, +        /// Number of groups. +        pub ki_ngroups: ::c_short, +        /// Unused (just here for alignment). +        pub ki_spare_short2: ::c_short, +        /// Groups. +        pub ki_groups: [::gid_t; ::KI_NGROUPS], +        /// Virtual size. +        pub ki_size: ::vm_size_t, +        /// Current resident set size in pages. +        pub ki_rssize: ::segsz_t, +        /// Resident set size before last swap. +        pub ki_swrss: ::segsz_t, +        /// Text size (pages) XXX. +        pub ki_tsize: ::segsz_t, +        /// Data size (pages) XXX. +        pub ki_dsize: ::segsz_t, +        /// Stack size (pages). +        pub ki_ssize: ::segsz_t, +        /// Exit status for wait & stop signal. +        pub ki_xstat: ::u_short, +        /// Accounting flags. +        pub ki_acflag: ::u_short, +        /// %cpu for process during `ki_swtime`. +        pub ki_pctcpu: ::fixpt_t, +        /// Time averaged value of `ki_cpticks`. +        pub ki_estcpu: ::u_int, +        /// Time since last blocked. +        pub ki_slptime: ::u_int, +        /// Time swapped in or out. +        pub ki_swtime: ::u_int, +        /// Number of copy-on-write faults. +        pub ki_cow: ::u_int, +        /// Real time in microsec. +        pub ki_runtime: u64, +        /// Starting time. +        pub ki_start: ::timeval, +        /// Time used by process children. +        pub ki_childtime: ::timeval, +        /// P_* flags. +        pub ki_flag: ::c_long, +        /// KI_* flags (below). +        pub ki_kiflag: ::c_long, +        /// Kernel trace points. +        pub ki_traceflag: ::c_int, +        /// S* process status. +        pub ki_stat: ::c_char, +        /// Process "nice" value. +        pub ki_nice: i8, // signed char +        /// Process lock (prevent swap) count. +        pub ki_lock: ::c_char, +        /// Run queue index. +        pub ki_rqindex: ::c_char, +        /// Which cpu we are on. +        pub ki_oncpu_old: ::c_uchar, +        /// Last cpu we were on. +        pub ki_lastcpu_old: ::c_uchar, +        /// Thread name. +        pub ki_tdname: [::c_char; ::TDNAMLEN + 1], +        /// Wchan message. +        pub ki_wmesg: [::c_char; ::WMESGLEN + 1], +        /// Setlogin name. +        pub ki_login: [::c_char; ::LOGNAMELEN + 1], +        /// Lock name. +        pub ki_lockname: [::c_char; ::LOCKNAMELEN + 1], +        /// Command name. +        pub ki_comm: [::c_char; ::COMMLEN + 1], +        /// Emulation name. +        pub ki_emul: [::c_char; ::KI_EMULNAMELEN + 1], +        /// Login class. +        pub ki_loginclass: [::c_char; ::LOGINCLASSLEN + 1], +        /// More thread name. +        pub ki_moretdname: [::c_char; ::MAXCOMLEN - ::TDNAMLEN + 1], +        /// Spare string space. +        pub ki_sparestrings: [[::c_char; 23]; 2], // little hack to allow PartialEq +        /// Spare room for growth. +        pub ki_spareints: [::c_int; ::KI_NSPARE_INT], +        /// Controlling tty dev. +        pub ki_tdev: u64, +        /// Which cpu we are on. +        pub ki_oncpu: ::c_int, +        /// Last cpu we were on. +        pub ki_lastcpu: ::c_int, +        /// PID of tracing process. +        pub ki_tracer: ::c_int, +        /// P2_* flags. +        pub ki_flag2: ::c_int, +        /// Default FIB number. +        pub ki_fibnum: ::c_int, +        /// Credential flags. +        pub ki_cr_flags: ::u_int, +        /// Process jail ID. +        pub ki_jid: ::c_int, +        /// Number of threads in total. +        pub ki_numthreads: ::c_int, +        /// Thread ID. +        pub ki_tid: ::lwpid_t, +        /// Process priority. +        pub ki_pri: ::priority, +        /// Process rusage statistics. +        pub ki_rusage: ::rusage, +        /// rusage of children processes. +        pub ki_rusage_ch: ::rusage, +        // This is normally "struct pcb". +        /// Kernel virtual addr of pcb. +        pub ki_pcb: *mut ::c_void, +        /// Kernel virtual addr of stack. +        pub ki_kstack: *mut ::c_void, +        /// User convenience pointer. +        pub ki_udata: *mut ::c_void, +        // This is normally "struct thread". +        pub ki_tdaddr: *mut ::c_void, +        // This is normally "struct pwddesc". +        /// Pointer to process paths info. +        pub ki_pd: *mut ::c_void, +        pub ki_spareptrs: [*mut ::c_void; ::KI_NSPARE_PTR], +        pub ki_sparelongs: [::c_long; ::KI_NSPARE_LONG], +        /// PS_* flags. +        pub ki_sflag: ::c_long, +        /// kthread flag. +        pub ki_tdflags: ::c_long, +    } +} + +s_no_extra_traits! { +    pub struct dirent { +        pub d_fileno: ::ino_t, +        pub d_off: ::off_t, +        pub d_reclen: u16, +        pub d_type: u8, +        d_pad0: u8, +        pub d_namlen: u16, +        d_pad1: u16, +        pub d_name: [::c_char; 256], +    } + +    pub struct statfs { +        pub f_version: u32, +        pub f_type: u32, +        pub f_flags: u64, +        pub f_bsize: u64, +        pub f_iosize: u64, +        pub f_blocks: u64, +        pub f_bfree: u64, +        pub f_bavail: i64, +        pub f_files: u64, +        pub f_ffree: i64, +        pub f_syncwrites: u64, +        pub f_asyncwrites: u64, +        pub f_syncreads: u64, +        pub f_asyncreads: u64, +        f_spare: [u64; 10], +        pub f_namemax: u32, +        pub f_owner: ::uid_t, +        pub f_fsid: ::fsid_t, +        f_charspare: [::c_char; 80], +        pub f_fstypename: [::c_char; 16], +        pub f_mntfromname: [::c_char; 1024], +        pub f_mntonname: [::c_char; 1024], +    } + +    pub struct vnstat { +        pub vn_fileid: u64, +        pub vn_size: u64, +        pub vn_dev: u64, +        pub vn_fsid: u64, +        pub vn_mntdir: *mut ::c_char, +        pub vn_type: ::c_int, +        pub vn_mode: u16, +        pub vn_devname: [::c_char; ::SPECNAMELEN as usize + 1], +    } +} + +cfg_if! { +    if #[cfg(feature = "extra_traits")] { +        impl PartialEq for statfs { +            fn eq(&self, other: &statfs) -> bool { +                self.f_version == other.f_version +                    && self.f_type == other.f_type +                    && self.f_flags == other.f_flags +                    && self.f_bsize == other.f_bsize +                    && self.f_iosize == other.f_iosize +                    && self.f_blocks == other.f_blocks +                    && self.f_bfree == other.f_bfree +                    && self.f_bavail == other.f_bavail +                    && self.f_files == other.f_files +                    && self.f_ffree == other.f_ffree +                    && self.f_syncwrites == other.f_syncwrites +                    && self.f_asyncwrites == other.f_asyncwrites +                    && self.f_syncreads == other.f_syncreads +                    && self.f_asyncreads == other.f_asyncreads +                    && self.f_namemax == other.f_namemax +                    && self.f_owner == other.f_owner +                    && self.f_fsid == other.f_fsid +                    && self.f_fstypename == other.f_fstypename +                    && self +                    .f_mntfromname +                    .iter() +                    .zip(other.f_mntfromname.iter()) +                    .all(|(a,b)| a == b) +                    && self +                    .f_mntonname +                    .iter() +                    .zip(other.f_mntonname.iter()) +                    .all(|(a,b)| a == b) +            } +        } +        impl Eq for statfs {} +        impl ::fmt::Debug for statfs { +            fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { +                f.debug_struct("statfs") +                    .field("f_bsize", &self.f_bsize) +                    .field("f_iosize", &self.f_iosize) +                    .field("f_blocks", &self.f_blocks) +                    .field("f_bfree", &self.f_bfree) +                    .field("f_bavail", &self.f_bavail) +                    .field("f_files", &self.f_files) +                    .field("f_ffree", &self.f_ffree) +                    .field("f_syncwrites", &self.f_syncwrites) +                    .field("f_asyncwrites", &self.f_asyncwrites) +                    .field("f_syncreads", &self.f_syncreads) +                    .field("f_asyncreads", &self.f_asyncreads) +                    .field("f_namemax", &self.f_namemax) +                    .field("f_owner", &self.f_owner) +                    .field("f_fsid", &self.f_fsid) +                    .field("f_fstypename", &self.f_fstypename) +                    .field("f_mntfromname", &&self.f_mntfromname[..]) +                    .field("f_mntonname", &&self.f_mntonname[..]) +                    .finish() +            } +        } +        impl ::hash::Hash for statfs { +            fn hash<H: ::hash::Hasher>(&self, state: &mut H) { +                self.f_version.hash(state); +                self.f_type.hash(state); +                self.f_flags.hash(state); +                self.f_bsize.hash(state); +                self.f_iosize.hash(state); +                self.f_blocks.hash(state); +                self.f_bfree.hash(state); +                self.f_bavail.hash(state); +                self.f_files.hash(state); +                self.f_ffree.hash(state); +                self.f_syncwrites.hash(state); +                self.f_asyncwrites.hash(state); +                self.f_syncreads.hash(state); +                self.f_asyncreads.hash(state); +                self.f_namemax.hash(state); +                self.f_owner.hash(state); +                self.f_fsid.hash(state); +                self.f_charspare.hash(state); +                self.f_fstypename.hash(state); +                self.f_mntfromname.hash(state); +                self.f_mntonname.hash(state); +            } +        } + +        impl PartialEq for dirent { +            fn eq(&self, other: &dirent) -> bool { +                self.d_fileno == other.d_fileno +                    && self.d_off == other.d_off +                    && self.d_reclen == other.d_reclen +                    && self.d_type == other.d_type +                    && self.d_namlen == other.d_namlen +                    && self +                    .d_name[..self.d_namlen as _] +                    .iter() +                    .zip(other.d_name.iter()) +                    .all(|(a,b)| a == b) +            } +        } +        impl Eq for dirent {} +        impl ::fmt::Debug for dirent { +            fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { +                f.debug_struct("dirent") +                    .field("d_fileno", &self.d_fileno) +                    .field("d_off", &self.d_off) +                    .field("d_reclen", &self.d_reclen) +                    .field("d_type", &self.d_type) +                    .field("d_namlen", &self.d_namlen) +                    .field("d_name", &&self.d_name[..self.d_namlen as _]) +                    .finish() +            } +        } +        impl ::hash::Hash for dirent { +            fn hash<H: ::hash::Hasher>(&self, state: &mut H) { +                self.d_fileno.hash(state); +                self.d_off.hash(state); +                self.d_reclen.hash(state); +                self.d_type.hash(state); +                self.d_namlen.hash(state); +                self.d_name[..self.d_namlen as _].hash(state); +            } +        } + +        impl PartialEq for vnstat { +            fn eq(&self, other: &vnstat) -> bool { +                let self_vn_devname: &[::c_char] = &self.vn_devname; +                let other_vn_devname: &[::c_char] = &other.vn_devname; + +                self.vn_fileid == other.vn_fileid && +                self.vn_size == other.vn_size && +                self.vn_dev == other.vn_dev && +                self.vn_fsid == other.vn_fsid && +                self.vn_mntdir == other.vn_mntdir && +                self.vn_type == other.vn_type && +                self.vn_mode == other.vn_mode && +                self_vn_devname == other_vn_devname +            } +        } +        impl Eq for vnstat {} +        impl ::fmt::Debug for vnstat { +            fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { +                let self_vn_devname: &[::c_char] = &self.vn_devname; + +                f.debug_struct("vnstat") +                    .field("vn_fileid", &self.vn_fileid) +                    .field("vn_size", &self.vn_size) +                    .field("vn_dev", &self.vn_dev) +                    .field("vn_fsid", &self.vn_fsid) +                    .field("vn_mntdir", &self.vn_mntdir) +                    .field("vn_type", &self.vn_type) +                    .field("vn_mode", &self.vn_mode) +                    .field("vn_devname", &self_vn_devname) +                    .finish() +            } +        } +        impl ::hash::Hash for vnstat { +            fn hash<H: ::hash::Hasher>(&self, state: &mut H) { +                let self_vn_devname: &[::c_char] = &self.vn_devname; + +                self.vn_fileid.hash(state); +                self.vn_size.hash(state); +                self.vn_dev.hash(state); +                self.vn_fsid.hash(state); +                self.vn_mntdir.hash(state); +                self.vn_type.hash(state); +                self.vn_mode.hash(state); +                self_vn_devname.hash(state); +            } +        } +    } +} + +pub const RAND_MAX: ::c_int = 0x7fff_ffff; +pub const ELAST: ::c_int = 97; + +pub const KF_TYPE_EVENTFD: ::c_int = 13; + +/// max length of devicename +pub const SPECNAMELEN: ::c_int = 255; +pub const KI_NSPARE_PTR: usize = 5; + +/// domainset policies +pub const DOMAINSET_POLICY_INVALID: ::c_int = 0; +pub const DOMAINSET_POLICY_ROUNDROBIN: ::c_int = 1; +pub const DOMAINSET_POLICY_FIRSTTOUCH: ::c_int = 2; +pub const DOMAINSET_POLICY_PREFER: ::c_int = 3; +pub const DOMAINSET_POLICY_INTERLEAVE: ::c_int = 4; + +pub const MINCORE_SUPER: ::c_int = 0x60; + +safe_f! { +    pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t { +        let major = major as ::dev_t; +        let minor = minor as ::dev_t; +        let mut dev = 0; +        dev |= ((major & 0xffffff00) as dev_t) << 32; +        dev |= ((major & 0x000000ff) as dev_t) << 8; +        dev |= ((minor & 0x0000ff00) as dev_t) << 24; +        dev |= ((minor & 0xffff00ff) as dev_t) << 0; +        dev +    } +} + +f! { +    pub fn major(dev: ::dev_t) -> ::c_int { +        (((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as ::c_int +    } + +    pub fn minor(dev: ::dev_t) -> ::c_int { +        (((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as ::c_int +    } +} + +extern "C" { +    pub fn setgrent(); +    pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int; +    pub fn freelocale(loc: ::locale_t); +    pub fn msgrcv( +        msqid: ::c_int, +        msgp: *mut ::c_void, +        msgsz: ::size_t, +        msgtyp: ::c_long, +        msgflg: ::c_int, +    ) -> ::ssize_t; + +    pub fn cpuset_getdomain( +        level: ::cpulevel_t, +        which: ::cpuwhich_t, +        id: ::id_t, +        setsize: ::size_t, +        mask: *mut ::domainset_t, +        policy: *mut ::c_int, +    ) -> ::c_int; +    pub fn cpuset_setdomain( +        level: ::cpulevel_t, +        which: ::cpuwhich_t, +        id: ::id_t, +        setsize: ::size_t, +        mask: *const ::domainset_t, +        policy: ::c_int, +    ) -> ::c_int; + +    pub fn dirname(path: *mut ::c_char) -> *mut ::c_char; +    pub fn basename(path: *mut ::c_char) -> *mut ::c_char; +} + +#[link(name = "kvm")] +extern "C" { +    pub fn kvm_kerndisp(kd: *mut ::kvm_t) -> ::kssize_t; +} + +cfg_if! { +    if #[cfg(any(target_arch = "x86_64", +                 target_arch = "aarch64", +                 target_arch = "riscv64"))] { +        mod b64; +        pub use self::b64::*; +    } +} + +cfg_if! { +    if #[cfg(target_arch = "x86_64")] { +        mod x86_64; +        pub use self::x86_64::*; +    } +} diff --git a/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd15/x86_64.rs b/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd15/x86_64.rs new file mode 100644 index 0000000..01d0b43 --- /dev/null +++ b/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd15/x86_64.rs @@ -0,0 +1,12 @@ +pub const PROC_KPTI_CTL: ::c_int = ::PROC_PROCCTL_MD_MIN; +pub const PROC_KPTI_CTL_ENABLE_ON_EXEC: ::c_int = 1; +pub const PROC_KPTI_CTL_DISABLE_ON_EXEC: ::c_int = 2; +pub const PROC_KPTI_STATUS: ::c_int = ::PROC_PROCCTL_MD_MIN + 1; +pub const PROC_KPTI_STATUS_ACTIVE: ::c_int = 0x80000000; +pub const PROC_LA_CTL: ::c_int = ::PROC_PROCCTL_MD_MIN + 2; +pub const PROC_LA_STATUS: ::c_int = ::PROC_PROCCTL_MD_MIN + 3; +pub const PROC_LA_CTL_LA48_ON_EXEC: ::c_int = 1; +pub const PROC_LA_CTL_LA57_ON_EXEC: ::c_int = 2; +pub const PROC_LA_CTL_DEFAULT_ON_EXEC: ::c_int = 3; +pub const PROC_LA_STATUS_LA48: ::c_int = 0x01000000; +pub const PROC_LA_STATUS_LA57: ::c_int = 0x02000000;  | 
