12add0d91Sopenharmony_cipub type c_char = i8;
22add0d91Sopenharmony_cipub type wchar_t = i32;
32add0d91Sopenharmony_cipub type nlink_t = u64;
42add0d91Sopenharmony_cipub type blksize_t = ::c_long;
52add0d91Sopenharmony_cipub type __u64 = ::c_ulonglong;
62add0d91Sopenharmony_ci
72add0d91Sopenharmony_cis! {
82add0d91Sopenharmony_ci    pub struct stat {
92add0d91Sopenharmony_ci        pub st_dev: ::dev_t,
102add0d91Sopenharmony_ci        pub st_ino: ::ino_t,
112add0d91Sopenharmony_ci        pub st_nlink: ::nlink_t,
122add0d91Sopenharmony_ci        pub st_mode: ::mode_t,
132add0d91Sopenharmony_ci        pub st_uid: ::uid_t,
142add0d91Sopenharmony_ci        pub st_gid: ::gid_t,
152add0d91Sopenharmony_ci        __pad0: ::c_int,
162add0d91Sopenharmony_ci        pub st_rdev: ::dev_t,
172add0d91Sopenharmony_ci        pub st_size: ::off_t,
182add0d91Sopenharmony_ci        pub st_blksize: ::blksize_t,
192add0d91Sopenharmony_ci        pub st_blocks: ::blkcnt_t,
202add0d91Sopenharmony_ci        pub st_atime: ::time_t,
212add0d91Sopenharmony_ci        pub st_atime_nsec: ::c_long,
222add0d91Sopenharmony_ci        pub st_mtime: ::time_t,
232add0d91Sopenharmony_ci        pub st_mtime_nsec: ::c_long,
242add0d91Sopenharmony_ci        pub st_ctime: ::time_t,
252add0d91Sopenharmony_ci        pub st_ctime_nsec: ::c_long,
262add0d91Sopenharmony_ci        __unused: [::c_long; 3],
272add0d91Sopenharmony_ci    }
282add0d91Sopenharmony_ci
292add0d91Sopenharmony_ci    pub struct stat64 {
302add0d91Sopenharmony_ci        pub st_dev: ::dev_t,
312add0d91Sopenharmony_ci        pub st_ino: ::ino64_t,
322add0d91Sopenharmony_ci        pub st_nlink: ::nlink_t,
332add0d91Sopenharmony_ci        pub st_mode: ::mode_t,
342add0d91Sopenharmony_ci        pub st_uid: ::uid_t,
352add0d91Sopenharmony_ci        pub st_gid: ::gid_t,
362add0d91Sopenharmony_ci        __pad0: ::c_int,
372add0d91Sopenharmony_ci        pub st_rdev: ::dev_t,
382add0d91Sopenharmony_ci        pub st_size: ::off_t,
392add0d91Sopenharmony_ci        pub st_blksize: ::blksize_t,
402add0d91Sopenharmony_ci        pub st_blocks: ::blkcnt64_t,
412add0d91Sopenharmony_ci        pub st_atime: ::time_t,
422add0d91Sopenharmony_ci        pub st_atime_nsec: ::c_long,
432add0d91Sopenharmony_ci        pub st_mtime: ::time_t,
442add0d91Sopenharmony_ci        pub st_mtime_nsec: ::c_long,
452add0d91Sopenharmony_ci        pub st_ctime: ::time_t,
462add0d91Sopenharmony_ci        pub st_ctime_nsec: ::c_long,
472add0d91Sopenharmony_ci        __reserved: [::c_long; 3],
482add0d91Sopenharmony_ci    }
492add0d91Sopenharmony_ci
502add0d91Sopenharmony_ci    pub struct mcontext_t {
512add0d91Sopenharmony_ci        __private: [u64; 32],
522add0d91Sopenharmony_ci    }
532add0d91Sopenharmony_ci
542add0d91Sopenharmony_ci    pub struct ipc_perm {
552add0d91Sopenharmony_ci        pub __ipc_perm_key: ::key_t,
562add0d91Sopenharmony_ci        pub uid: ::uid_t,
572add0d91Sopenharmony_ci        pub gid: ::gid_t,
582add0d91Sopenharmony_ci        pub cuid: ::uid_t,
592add0d91Sopenharmony_ci        pub cgid: ::gid_t,
602add0d91Sopenharmony_ci        pub mode: ::mode_t,
612add0d91Sopenharmony_ci        pub __seq: ::c_int,
622add0d91Sopenharmony_ci        __unused1: ::c_long,
632add0d91Sopenharmony_ci        __unused2: ::c_long
642add0d91Sopenharmony_ci    }
652add0d91Sopenharmony_ci}
662add0d91Sopenharmony_ci
672add0d91Sopenharmony_cis_no_extra_traits! {
682add0d91Sopenharmony_ci    pub struct ucontext_t {
692add0d91Sopenharmony_ci        pub uc_flags: ::c_ulong,
702add0d91Sopenharmony_ci        pub uc_link: *mut ucontext_t,
712add0d91Sopenharmony_ci        pub uc_stack: ::stack_t,
722add0d91Sopenharmony_ci        pub uc_mcontext: mcontext_t,
732add0d91Sopenharmony_ci        pub uc_sigmask: ::sigset_t,
742add0d91Sopenharmony_ci        __private: [u8; 512],
752add0d91Sopenharmony_ci    }
762add0d91Sopenharmony_ci}
772add0d91Sopenharmony_ci
782add0d91Sopenharmony_cicfg_if! {
792add0d91Sopenharmony_ci    if #[cfg(feature = "extra_traits")] {
802add0d91Sopenharmony_ci        impl PartialEq for ucontext_t {
812add0d91Sopenharmony_ci            fn eq(&self, other: &ucontext_t) -> bool {
822add0d91Sopenharmony_ci                self.uc_flags == other.uc_flags
832add0d91Sopenharmony_ci                    && self.uc_link == other.uc_link
842add0d91Sopenharmony_ci                    && self.uc_stack == other.uc_stack
852add0d91Sopenharmony_ci                    && self.uc_mcontext == other.uc_mcontext
862add0d91Sopenharmony_ci                    && self.uc_sigmask == other.uc_sigmask
872add0d91Sopenharmony_ci                    && self
882add0d91Sopenharmony_ci                    .__private
892add0d91Sopenharmony_ci                    .iter()
902add0d91Sopenharmony_ci                    .zip(other.__private.iter())
912add0d91Sopenharmony_ci                    .all(|(a,b)| a == b)
922add0d91Sopenharmony_ci            }
932add0d91Sopenharmony_ci        }
942add0d91Sopenharmony_ci        impl Eq for ucontext_t {}
952add0d91Sopenharmony_ci        impl ::fmt::Debug for ucontext_t {
962add0d91Sopenharmony_ci            fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
972add0d91Sopenharmony_ci                f.debug_struct("ucontext_t")
982add0d91Sopenharmony_ci                    .field("uc_flags", &self.uc_flags)
992add0d91Sopenharmony_ci                    .field("uc_link", &self.uc_link)
1002add0d91Sopenharmony_ci                    .field("uc_stack", &self.uc_stack)
1012add0d91Sopenharmony_ci                    .field("uc_mcontext", &self.uc_mcontext)
1022add0d91Sopenharmony_ci                    .field("uc_sigmask", &self.uc_sigmask)
1032add0d91Sopenharmony_ci                    // FIXME: .field("__private", &self.__private)
1042add0d91Sopenharmony_ci                    .finish()
1052add0d91Sopenharmony_ci            }
1062add0d91Sopenharmony_ci        }
1072add0d91Sopenharmony_ci        impl ::hash::Hash for ucontext_t {
1082add0d91Sopenharmony_ci            fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
1092add0d91Sopenharmony_ci                self.uc_flags.hash(state);
1102add0d91Sopenharmony_ci                self.uc_link.hash(state);
1112add0d91Sopenharmony_ci                self.uc_stack.hash(state);
1122add0d91Sopenharmony_ci                self.uc_mcontext.hash(state);
1132add0d91Sopenharmony_ci                self.uc_sigmask.hash(state);
1142add0d91Sopenharmony_ci                self.__private.hash(state);
1152add0d91Sopenharmony_ci            }
1162add0d91Sopenharmony_ci        }
1172add0d91Sopenharmony_ci    }
1182add0d91Sopenharmony_ci}
1192add0d91Sopenharmony_ci
1202add0d91Sopenharmony_ci// offsets in user_regs_structs, from sys/reg.h
1212add0d91Sopenharmony_cipub const R15: ::c_int = 0;
1222add0d91Sopenharmony_cipub const R14: ::c_int = 1;
1232add0d91Sopenharmony_cipub const R13: ::c_int = 2;
1242add0d91Sopenharmony_cipub const R12: ::c_int = 3;
1252add0d91Sopenharmony_cipub const RBP: ::c_int = 4;
1262add0d91Sopenharmony_cipub const RBX: ::c_int = 5;
1272add0d91Sopenharmony_cipub const R11: ::c_int = 6;
1282add0d91Sopenharmony_cipub const R10: ::c_int = 7;
1292add0d91Sopenharmony_cipub const R9: ::c_int = 8;
1302add0d91Sopenharmony_cipub const R8: ::c_int = 9;
1312add0d91Sopenharmony_cipub const RAX: ::c_int = 10;
1322add0d91Sopenharmony_cipub const RCX: ::c_int = 11;
1332add0d91Sopenharmony_cipub const RDX: ::c_int = 12;
1342add0d91Sopenharmony_cipub const RSI: ::c_int = 13;
1352add0d91Sopenharmony_cipub const RDI: ::c_int = 14;
1362add0d91Sopenharmony_cipub const ORIG_RAX: ::c_int = 15;
1372add0d91Sopenharmony_cipub const RIP: ::c_int = 16;
1382add0d91Sopenharmony_cipub const CS: ::c_int = 17;
1392add0d91Sopenharmony_cipub const EFLAGS: ::c_int = 18;
1402add0d91Sopenharmony_cipub const RSP: ::c_int = 19;
1412add0d91Sopenharmony_cipub const SS: ::c_int = 20;
1422add0d91Sopenharmony_cipub const FS_BASE: ::c_int = 21;
1432add0d91Sopenharmony_cipub const GS_BASE: ::c_int = 22;
1442add0d91Sopenharmony_cipub const DS: ::c_int = 23;
1452add0d91Sopenharmony_cipub const ES: ::c_int = 24;
1462add0d91Sopenharmony_cipub const FS: ::c_int = 25;
1472add0d91Sopenharmony_cipub const GS: ::c_int = 26;
1482add0d91Sopenharmony_ci
1492add0d91Sopenharmony_cipub const MAP_32BIT: ::c_int = 0x0040;
1502add0d91Sopenharmony_ci
1512add0d91Sopenharmony_cipub const SIGSTKSZ: ::size_t = 8192;
1522add0d91Sopenharmony_cipub const MINSIGSTKSZ: ::size_t = 2048;
153