12add0d91Sopenharmony_ci// liblibc port for HermitCore (https://hermitcore.org)
22add0d91Sopenharmony_ci// HermitCore is a unikernel based on lwIP, newlib, and
32add0d91Sopenharmony_ci// pthread-embedded.
42add0d91Sopenharmony_ci// Consider these definitions when porting liblibc to another
52add0d91Sopenharmony_ci// lwIP/newlib/pte-based target.
62add0d91Sopenharmony_ci//
72add0d91Sopenharmony_ci// Ported by Colin Finck <colin.finck@rwth-aachen.de>
82add0d91Sopenharmony_ci
92add0d91Sopenharmony_cipub type c_long = i64;
102add0d91Sopenharmony_cipub type c_ulong = u64;
112add0d91Sopenharmony_ci
122add0d91Sopenharmony_cipub type speed_t = ::c_uint;
132add0d91Sopenharmony_cipub type mode_t = u32;
142add0d91Sopenharmony_cipub type dev_t = i16;
152add0d91Sopenharmony_cipub type nfds_t = ::c_ulong;
162add0d91Sopenharmony_cipub type socklen_t = u32;
172add0d91Sopenharmony_cipub type sa_family_t = u8;
182add0d91Sopenharmony_cipub type clock_t = c_ulong;
192add0d91Sopenharmony_cipub type time_t = c_long;
202add0d91Sopenharmony_cipub type suseconds_t = c_long;
212add0d91Sopenharmony_cipub type off_t = i64;
222add0d91Sopenharmony_cipub type rlim_t = ::c_ulonglong;
232add0d91Sopenharmony_cipub type sigset_t = ::c_ulong;
242add0d91Sopenharmony_cipub type ino_t = u16;
252add0d91Sopenharmony_cipub type nlink_t = u16;
262add0d91Sopenharmony_cipub type blksize_t = c_long;
272add0d91Sopenharmony_cipub type blkcnt_t = c_long;
282add0d91Sopenharmony_cipub type stat64 = stat;
292add0d91Sopenharmony_cipub type clockid_t = c_ulong;
302add0d91Sopenharmony_cipub type pthread_t = pte_handle_t;
312add0d91Sopenharmony_cipub type pthread_attr_t = usize;
322add0d91Sopenharmony_cipub type pthread_cond_t = usize;
332add0d91Sopenharmony_cipub type pthread_condattr_t = usize;
342add0d91Sopenharmony_cipub type pthread_key_t = usize;
352add0d91Sopenharmony_cipub type pthread_mutex_t = usize;
362add0d91Sopenharmony_cipub type pthread_mutexattr_t = usize;
372add0d91Sopenharmony_cipub type pthread_rwlock_t = usize;
382add0d91Sopenharmony_cipub type pthread_rwlockattr_t = usize;
392add0d91Sopenharmony_ci
402add0d91Sopenharmony_cis_no_extra_traits! {
412add0d91Sopenharmony_ci    pub struct dirent {
422add0d91Sopenharmony_ci        pub d_ino: ::c_long,
432add0d91Sopenharmony_ci        pub d_off: off_t,
442add0d91Sopenharmony_ci        pub d_reclen: u16,
452add0d91Sopenharmony_ci        pub d_name: [::c_char; 256],
462add0d91Sopenharmony_ci    }
472add0d91Sopenharmony_ci
482add0d91Sopenharmony_ci    // Dummy
492add0d91Sopenharmony_ci    pub struct sockaddr_un {
502add0d91Sopenharmony_ci        pub sun_family: sa_family_t,
512add0d91Sopenharmony_ci        pub sun_path: [::c_char; 108],
522add0d91Sopenharmony_ci    }
532add0d91Sopenharmony_ci
542add0d91Sopenharmony_ci    pub struct sockaddr {
552add0d91Sopenharmony_ci        pub sa_len: u8,
562add0d91Sopenharmony_ci        pub sa_family: sa_family_t,
572add0d91Sopenharmony_ci        pub sa_data: [::c_char; 14],
582add0d91Sopenharmony_ci    }
592add0d91Sopenharmony_ci
602add0d91Sopenharmony_ci    pub struct sockaddr_in {
612add0d91Sopenharmony_ci        pub sin_len: u8,
622add0d91Sopenharmony_ci        pub sin_family: sa_family_t,
632add0d91Sopenharmony_ci        pub sin_port: ::in_port_t,
642add0d91Sopenharmony_ci        pub sin_addr: ::in_addr,
652add0d91Sopenharmony_ci        pub sin_zero: [::c_char; 8],
662add0d91Sopenharmony_ci    }
672add0d91Sopenharmony_ci
682add0d91Sopenharmony_ci    pub struct fd_set {
692add0d91Sopenharmony_ci        fds_bits: [::c_ulong; FD_SETSIZE / ULONG_SIZE],
702add0d91Sopenharmony_ci    }
712add0d91Sopenharmony_ci
722add0d91Sopenharmony_ci    pub struct sockaddr_storage {
732add0d91Sopenharmony_ci        pub s2_len: u8,
742add0d91Sopenharmony_ci        pub ss_family: sa_family_t,
752add0d91Sopenharmony_ci        pub s2_data1: [::c_char; 2],
762add0d91Sopenharmony_ci        pub s2_data2: [u32; 3],
772add0d91Sopenharmony_ci        pub s2_data3: [u32; 3],
782add0d91Sopenharmony_ci    }
792add0d91Sopenharmony_ci
802add0d91Sopenharmony_ci    pub struct stat {
812add0d91Sopenharmony_ci        pub st_dev: ::dev_t,
822add0d91Sopenharmony_ci        pub st_ino: ::ino_t,
832add0d91Sopenharmony_ci        pub st_mode: ::mode_t,
842add0d91Sopenharmony_ci        pub st_nlink: ::nlink_t,
852add0d91Sopenharmony_ci        pub st_uid: ::uid_t,
862add0d91Sopenharmony_ci        pub st_gid: ::gid_t,
872add0d91Sopenharmony_ci        pub st_rdev: dev_t,
882add0d91Sopenharmony_ci        pub st_size: off_t,
892add0d91Sopenharmony_ci        pub st_atime: time_t,
902add0d91Sopenharmony_ci        pub st_atime_nsec: ::c_long,
912add0d91Sopenharmony_ci        pub st_mtime: time_t,
922add0d91Sopenharmony_ci        pub st_mtime_nsec: ::c_long,
932add0d91Sopenharmony_ci        pub st_ctime: time_t,
942add0d91Sopenharmony_ci        pub st_ctime_nsec: ::c_long,
952add0d91Sopenharmony_ci        pub st_blksize: blksize_t,
962add0d91Sopenharmony_ci        pub st_blocks: blkcnt_t,
972add0d91Sopenharmony_ci        pub st_spare4: [::c_long; 2],
982add0d91Sopenharmony_ci    }
992add0d91Sopenharmony_ci}
1002add0d91Sopenharmony_ci
1012add0d91Sopenharmony_cicfg_if! {
1022add0d91Sopenharmony_ci    if #[cfg(feature = "extra_traits")] {
1032add0d91Sopenharmony_ci        impl PartialEq for dirent {
1042add0d91Sopenharmony_ci            fn eq(&self, other: &dirent) -> bool {
1052add0d91Sopenharmony_ci                self.d_ino == other.d_ino
1062add0d91Sopenharmony_ci                    && self.d_off == other.d_off
1072add0d91Sopenharmony_ci                    && self.d_reclen == other.d_reclen
1082add0d91Sopenharmony_ci                    && self
1092add0d91Sopenharmony_ci                    .d_name
1102add0d91Sopenharmony_ci                    .iter()
1112add0d91Sopenharmony_ci                    .zip(other.d_name.iter())
1122add0d91Sopenharmony_ci                    .all(|(a,b)| a == b)
1132add0d91Sopenharmony_ci            }
1142add0d91Sopenharmony_ci        }
1152add0d91Sopenharmony_ci        impl Eq for dirent {}
1162add0d91Sopenharmony_ci        impl ::fmt::Debug for dirent {
1172add0d91Sopenharmony_ci            fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
1182add0d91Sopenharmony_ci                f.debug_struct("dirent")
1192add0d91Sopenharmony_ci                    .field("d_ino", &self.d_ino)
1202add0d91Sopenharmony_ci                    .field("d_off", &self.d_off)
1212add0d91Sopenharmony_ci                    .field("d_reclen", &self.d_reclen)
1222add0d91Sopenharmony_ci                    // FIXME: .field("d_name", &self.d_name)
1232add0d91Sopenharmony_ci                    .finish()
1242add0d91Sopenharmony_ci            }
1252add0d91Sopenharmony_ci        }
1262add0d91Sopenharmony_ci        impl ::hash::Hash for dirent {
1272add0d91Sopenharmony_ci            fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
1282add0d91Sopenharmony_ci                self.d_ino.hash(state);
1292add0d91Sopenharmony_ci                self.d_off.hash(state);
1302add0d91Sopenharmony_ci                self.d_reclen.hash(state);
1312add0d91Sopenharmony_ci                self.d_name.hash(state);
1322add0d91Sopenharmony_ci            }
1332add0d91Sopenharmony_ci        }
1342add0d91Sopenharmony_ci
1352add0d91Sopenharmony_ci        impl PartialEq for sockaddr_un {
1362add0d91Sopenharmony_ci            fn eq(&self, other: &sockaddr_un) -> bool {
1372add0d91Sopenharmony_ci                self.sun_family == other.sun_family
1382add0d91Sopenharmony_ci                    && self
1392add0d91Sopenharmony_ci                    .sun_path
1402add0d91Sopenharmony_ci                    .iter()
1412add0d91Sopenharmony_ci                    .zip(other.sun_path.iter())
1422add0d91Sopenharmony_ci                    .all(|(a,b)| a == b)
1432add0d91Sopenharmony_ci            }
1442add0d91Sopenharmony_ci        }
1452add0d91Sopenharmony_ci        impl Eq for sockaddr_un {}
1462add0d91Sopenharmony_ci        impl ::fmt::Debug for sockaddr_un {
1472add0d91Sopenharmony_ci            fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
1482add0d91Sopenharmony_ci                f.debug_struct("sockaddr_un")
1492add0d91Sopenharmony_ci                    .field("sun_family", &self.sun_family)
1502add0d91Sopenharmony_ci                    // FIXME: .field("sun_path", &self.sun_path)
1512add0d91Sopenharmony_ci                    .finish()
1522add0d91Sopenharmony_ci            }
1532add0d91Sopenharmony_ci        }
1542add0d91Sopenharmony_ci        impl ::hash::Hash for sockaddr_un {
1552add0d91Sopenharmony_ci            fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
1562add0d91Sopenharmony_ci                self.sun_family.hash(state);
1572add0d91Sopenharmony_ci                self.sun_path.hash(state);
1582add0d91Sopenharmony_ci            }
1592add0d91Sopenharmony_ci        }
1602add0d91Sopenharmony_ci
1612add0d91Sopenharmony_ci        impl PartialEq for sockaddr {
1622add0d91Sopenharmony_ci            fn eq(&self, other: &sockaddr) -> bool {
1632add0d91Sopenharmony_ci                self.sa_len == other.sa_len
1642add0d91Sopenharmony_ci                    && self.sa_family == other.sa_family
1652add0d91Sopenharmony_ci                    && self
1662add0d91Sopenharmony_ci                    .sa_data
1672add0d91Sopenharmony_ci                    .iter()
1682add0d91Sopenharmony_ci                    .zip(other.sa_data.iter())
1692add0d91Sopenharmony_ci                    .all(|(a,b)| a == b)
1702add0d91Sopenharmony_ci            }
1712add0d91Sopenharmony_ci        }
1722add0d91Sopenharmony_ci        impl Eq for sockaddr {}
1732add0d91Sopenharmony_ci        impl ::fmt::Debug for sockaddr {
1742add0d91Sopenharmony_ci            fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
1752add0d91Sopenharmony_ci                f.debug_struct("sockaddr")
1762add0d91Sopenharmony_ci                    .field("sa_len", &self.sa_len)
1772add0d91Sopenharmony_ci                    .field("sa_family", &self.sa_family)
1782add0d91Sopenharmony_ci                    // FIXME: .field("sa_data", &self.sa_data)
1792add0d91Sopenharmony_ci                    .finish()
1802add0d91Sopenharmony_ci            }
1812add0d91Sopenharmony_ci        }
1822add0d91Sopenharmony_ci        impl ::hash::Hash for sockaddr {
1832add0d91Sopenharmony_ci            fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
1842add0d91Sopenharmony_ci                self.sa_len.hash(state);
1852add0d91Sopenharmony_ci                self.sa_family.hash(state);
1862add0d91Sopenharmony_ci                self.sa_data.hash(state);
1872add0d91Sopenharmony_ci            }
1882add0d91Sopenharmony_ci        }
1892add0d91Sopenharmony_ci
1902add0d91Sopenharmony_ci        impl PartialEq for sockaddr_in {
1912add0d91Sopenharmony_ci            fn eq(&self, other: &sockaddr_in) -> bool {
1922add0d91Sopenharmony_ci                self.sin_len == other.sin_len
1932add0d91Sopenharmony_ci                    && self.sin_family == other.sin_family
1942add0d91Sopenharmony_ci                    && self.sin_port == other.sin_port
1952add0d91Sopenharmony_ci                    && self.sin_addr == other.sin_addr
1962add0d91Sopenharmony_ci                    && self
1972add0d91Sopenharmony_ci                    .sin_zero
1982add0d91Sopenharmony_ci                    .iter()
1992add0d91Sopenharmony_ci                    .zip(other.sin_zero.iter())
2002add0d91Sopenharmony_ci                    .all(|(a,b)| a == b)
2012add0d91Sopenharmony_ci            }
2022add0d91Sopenharmony_ci        }
2032add0d91Sopenharmony_ci        impl Eq for sockaddr_in {}
2042add0d91Sopenharmony_ci        impl ::fmt::Debug for sockaddr_in {
2052add0d91Sopenharmony_ci            fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
2062add0d91Sopenharmony_ci                f.debug_struct("sockaddr_in")
2072add0d91Sopenharmony_ci                    .field("sin_len", &self.sin_len)
2082add0d91Sopenharmony_ci                    .field("sin_family", &self.sin_family)
2092add0d91Sopenharmony_ci                    .field("sin_port", &self.sin_port)
2102add0d91Sopenharmony_ci                    .field("sin_addr", &self.sin_addr)
2112add0d91Sopenharmony_ci                    // FIXME: .field("sin_zero", &self.sin_zero)
2122add0d91Sopenharmony_ci                    .finish()
2132add0d91Sopenharmony_ci            }
2142add0d91Sopenharmony_ci        }
2152add0d91Sopenharmony_ci        impl ::hash::Hash for sockaddr_in {
2162add0d91Sopenharmony_ci            fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
2172add0d91Sopenharmony_ci                self.sin_len.hash(state);
2182add0d91Sopenharmony_ci                self.sin_family.hash(state);
2192add0d91Sopenharmony_ci                self.sin_port.hash(state);
2202add0d91Sopenharmony_ci                self.sin_addr.hash(state);
2212add0d91Sopenharmony_ci                self.sin_zero.hash(state);
2222add0d91Sopenharmony_ci            }
2232add0d91Sopenharmony_ci        }
2242add0d91Sopenharmony_ci
2252add0d91Sopenharmony_ci        impl PartialEq for fd_set {
2262add0d91Sopenharmony_ci            fn eq(&self, other: &fd_set) -> bool {
2272add0d91Sopenharmony_ci                self.fds_bits
2282add0d91Sopenharmony_ci                    .iter()
2292add0d91Sopenharmony_ci                    .zip(other.fds_bits.iter())
2302add0d91Sopenharmony_ci                    .all(|(a,b)| a == b)
2312add0d91Sopenharmony_ci            }
2322add0d91Sopenharmony_ci        }
2332add0d91Sopenharmony_ci        impl Eq for fd_set {}
2342add0d91Sopenharmony_ci        impl ::fmt::Debug for fd_set {
2352add0d91Sopenharmony_ci            fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
2362add0d91Sopenharmony_ci                f.debug_struct("fd_set")
2372add0d91Sopenharmony_ci                    // FIXME: .field("fds_bits", &self.fds_bits)
2382add0d91Sopenharmony_ci                    .finish()
2392add0d91Sopenharmony_ci            }
2402add0d91Sopenharmony_ci        }
2412add0d91Sopenharmony_ci        impl ::hash::Hash for fd_set {
2422add0d91Sopenharmony_ci            fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
2432add0d91Sopenharmony_ci                self.fds_bits.hash(state);
2442add0d91Sopenharmony_ci            }
2452add0d91Sopenharmony_ci        }
2462add0d91Sopenharmony_ci
2472add0d91Sopenharmony_ci        impl PartialEq for sockaddr_storage {
2482add0d91Sopenharmony_ci            fn eq(&self, other: &sockaddr_storage) -> bool {
2492add0d91Sopenharmony_ci                self.s2_len == other.s2_len
2502add0d91Sopenharmony_ci                    && self.ss_family == other.ss_family
2512add0d91Sopenharmony_ci                    && self.s2_data1
2522add0d91Sopenharmony_ci                    .iter()
2532add0d91Sopenharmony_ci                    .zip(other.s2_data1.iter())
2542add0d91Sopenharmony_ci                    .all(|(a,b)| a == b)
2552add0d91Sopenharmony_ci                    && self.s2_data2
2562add0d91Sopenharmony_ci                    .iter()
2572add0d91Sopenharmony_ci                    .zip(other.s2_data2.iter())
2582add0d91Sopenharmony_ci                    .all(|(a,b)| a == b)
2592add0d91Sopenharmony_ci                    && self.s2_data3
2602add0d91Sopenharmony_ci                    .iter()
2612add0d91Sopenharmony_ci                    .zip(other.s2_data3.iter())
2622add0d91Sopenharmony_ci                    .all(|(a,b)| a == b)
2632add0d91Sopenharmony_ci            }
2642add0d91Sopenharmony_ci        }
2652add0d91Sopenharmony_ci        impl Eq for sockaddr_storage {}
2662add0d91Sopenharmony_ci        impl ::fmt::Debug for sockaddr_storage {
2672add0d91Sopenharmony_ci            fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
2682add0d91Sopenharmony_ci                f.debug_struct("sockaddr_storage")
2692add0d91Sopenharmony_ci                    .field("s2_len", &self.s2_len)
2702add0d91Sopenharmony_ci                    .field("ss_family", &self.ss_family)
2712add0d91Sopenharmony_ci                    // FIXME: .field("s2_data1", &self.s2_data1)
2722add0d91Sopenharmony_ci                    // FIXME: .field("s2_data2", &self.s2_data2)
2732add0d91Sopenharmony_ci                    // FIXME: .field("s2_data3", &self.s2_data3)
2742add0d91Sopenharmony_ci                    .finish()
2752add0d91Sopenharmony_ci            }
2762add0d91Sopenharmony_ci        }
2772add0d91Sopenharmony_ci        impl ::hash::Hash for sockaddr_storage {
2782add0d91Sopenharmony_ci            fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
2792add0d91Sopenharmony_ci                self.s2_len.hash(state);
2802add0d91Sopenharmony_ci                self.ss_family.hash(state);
2812add0d91Sopenharmony_ci                self.s2_data1.hash(state);
2822add0d91Sopenharmony_ci                self.s2_data2.hash(state);
2832add0d91Sopenharmony_ci                self.s2_data3.hash(state);
2842add0d91Sopenharmony_ci            }
2852add0d91Sopenharmony_ci        }
2862add0d91Sopenharmony_ci
2872add0d91Sopenharmony_ci        impl PartialEq for stat {
2882add0d91Sopenharmony_ci            fn eq(&self, other: &stat) -> bool {
2892add0d91Sopenharmony_ci                self.st_dev == other.st_dev
2902add0d91Sopenharmony_ci                    && self.st_ino == other.st_ino
2912add0d91Sopenharmony_ci                    && self.st_mode == other.st_mode
2922add0d91Sopenharmony_ci                    && self.st_nlink == other.st_nlink
2932add0d91Sopenharmony_ci                    && self.st_uid == other.st_uid
2942add0d91Sopenharmony_ci                    && self.st_gid == other.st_gid
2952add0d91Sopenharmony_ci                    && self.st_rdev == other.st_rdev
2962add0d91Sopenharmony_ci                    && self.st_size == other.st_size
2972add0d91Sopenharmony_ci                    && self.st_atime == other.st_atime
2982add0d91Sopenharmony_ci                    && self.st_atime_nsec == other.st_atime_nsec
2992add0d91Sopenharmony_ci                    && self.st_mtime == other.st_mtime
3002add0d91Sopenharmony_ci                    && self.st_mtime_nsec == other.st_mtime_nsec
3012add0d91Sopenharmony_ci                    && self.st_ctime == other.st_ctime
3022add0d91Sopenharmony_ci                    && self.st_ctime_nsec == other.st_ctime_nsec
3032add0d91Sopenharmony_ci                    && self.st_blksize == other.st_blksize
3042add0d91Sopenharmony_ci                    && self.st_blocks == other.st_blocks
3052add0d91Sopenharmony_ci                    && self
3062add0d91Sopenharmony_ci                    .st_spare4
3072add0d91Sopenharmony_ci                    .iter()
3082add0d91Sopenharmony_ci                    .zip(other.st_spare4.iter())
3092add0d91Sopenharmony_ci                    .all(|(a,b)| a == b)
3102add0d91Sopenharmony_ci            }
3112add0d91Sopenharmony_ci        }
3122add0d91Sopenharmony_ci        impl Eq for stat {}
3132add0d91Sopenharmony_ci        impl ::fmt::Debug for stat {
3142add0d91Sopenharmony_ci            fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
3152add0d91Sopenharmony_ci                f.debug_struct("stat")
3162add0d91Sopenharmony_ci                    .field("st_dev", &self.st_dev)
3172add0d91Sopenharmony_ci                    .field("st_ino", &self.st_ino)
3182add0d91Sopenharmony_ci                    .field("st_mode", &self.st_mode)
3192add0d91Sopenharmony_ci                    .field("st_nlink", &self.st_nlink)
3202add0d91Sopenharmony_ci                    .field("st_uid", &self.st_uid)
3212add0d91Sopenharmony_ci                    .field("st_gid", &self.st_gid)
3222add0d91Sopenharmony_ci                    .field("st_rdev", &self.st_rdev)
3232add0d91Sopenharmony_ci                    .field("st_size", &self.st_size)
3242add0d91Sopenharmony_ci                    .field("st_atime", &self.st_atime)
3252add0d91Sopenharmony_ci                    .field("st_atime_nsec", &self.st_atime_nsec)
3262add0d91Sopenharmony_ci                    .field("st_mtime", &self.st_mtime)
3272add0d91Sopenharmony_ci                    .field("st_mtime_nsec", &self.st_mtime_nsec)
3282add0d91Sopenharmony_ci                    .field("st_ctime", &self.st_ctime)
3292add0d91Sopenharmony_ci                    .field("st_ctime_nsec", &self.st_ctime_nsec)
3302add0d91Sopenharmony_ci                    .field("st_blksize", &self.st_blksize)
3312add0d91Sopenharmony_ci                    .field("st_blocks", &self.st_blocks)
3322add0d91Sopenharmony_ci                    // FIXME: .field("st_spare4", &self.st_spare4)
3332add0d91Sopenharmony_ci                    .finish()
3342add0d91Sopenharmony_ci            }
3352add0d91Sopenharmony_ci        }
3362add0d91Sopenharmony_ci        impl ::hash::Hash for stat {
3372add0d91Sopenharmony_ci            fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
3382add0d91Sopenharmony_ci                self.st_dev.hash(state);
3392add0d91Sopenharmony_ci                self.st_ino.hash(state);
3402add0d91Sopenharmony_ci                self.st_mode.hash(state);
3412add0d91Sopenharmony_ci                self.st_nlink.hash(state);
3422add0d91Sopenharmony_ci                self.st_uid.hash(state);
3432add0d91Sopenharmony_ci                self.st_gid.hash(state);
3442add0d91Sopenharmony_ci                self.st_rdev.hash(state);
3452add0d91Sopenharmony_ci                self.st_size.hash(state);
3462add0d91Sopenharmony_ci                self.st_atime.hash(state);
3472add0d91Sopenharmony_ci                self.st_atime_nsec.hash(state);
3482add0d91Sopenharmony_ci                self.st_mtime.hash(state);
3492add0d91Sopenharmony_ci                self.st_mtime_nsec.hash(state);
3502add0d91Sopenharmony_ci                self.st_ctime.hash(state);
3512add0d91Sopenharmony_ci                self.st_ctime_nsec.hash(state);
3522add0d91Sopenharmony_ci                self.st_blksize.hash(state);
3532add0d91Sopenharmony_ci                self.st_blocks.hash(state);
3542add0d91Sopenharmony_ci                self.st_spare4.hash(state);
3552add0d91Sopenharmony_ci            }
3562add0d91Sopenharmony_ci        }
3572add0d91Sopenharmony_ci    }
3582add0d91Sopenharmony_ci}
3592add0d91Sopenharmony_ci
3602add0d91Sopenharmony_cis! {
3612add0d91Sopenharmony_ci    pub struct in_addr {
3622add0d91Sopenharmony_ci        pub s_addr: ::in_addr_t,
3632add0d91Sopenharmony_ci    }
3642add0d91Sopenharmony_ci
3652add0d91Sopenharmony_ci    pub struct ip_mreq {
3662add0d91Sopenharmony_ci        pub imr_multiaddr: in_addr,
3672add0d91Sopenharmony_ci        pub imr_interface: in_addr,
3682add0d91Sopenharmony_ci    }
3692add0d91Sopenharmony_ci
3702add0d91Sopenharmony_ci    pub struct addrinfo {
3712add0d91Sopenharmony_ci        pub ai_flags: ::c_int,
3722add0d91Sopenharmony_ci        pub ai_family: ::c_int,
3732add0d91Sopenharmony_ci        pub ai_socktype: ::c_int,
3742add0d91Sopenharmony_ci        pub ai_protocol: ::c_int,
3752add0d91Sopenharmony_ci        pub ai_addrlen: socklen_t,
3762add0d91Sopenharmony_ci        pub ai_addr: *mut ::sockaddr,
3772add0d91Sopenharmony_ci        pub ai_canonname: *mut c_char,
3782add0d91Sopenharmony_ci        pub ai_next: *mut addrinfo,
3792add0d91Sopenharmony_ci    }
3802add0d91Sopenharmony_ci
3812add0d91Sopenharmony_ci    pub struct Dl_info {}
3822add0d91Sopenharmony_ci
3832add0d91Sopenharmony_ci    pub struct lconv {
3842add0d91Sopenharmony_ci        pub decimal_point: *mut ::c_char,
3852add0d91Sopenharmony_ci        pub thousands_sep: *mut ::c_char,
3862add0d91Sopenharmony_ci        pub grouping: *mut ::c_char,
3872add0d91Sopenharmony_ci        pub int_curr_symbol: *mut ::c_char,
3882add0d91Sopenharmony_ci        pub currency_symbol: *mut ::c_char,
3892add0d91Sopenharmony_ci        pub mon_decimal_point: *mut ::c_char,
3902add0d91Sopenharmony_ci        pub mon_thousands_sep: *mut ::c_char,
3912add0d91Sopenharmony_ci        pub mon_grouping: *mut ::c_char,
3922add0d91Sopenharmony_ci        pub positive_sign: *mut ::c_char,
3932add0d91Sopenharmony_ci        pub negative_sign: *mut ::c_char,
3942add0d91Sopenharmony_ci        pub int_frac_digits: ::c_char,
3952add0d91Sopenharmony_ci        pub frac_digits: ::c_char,
3962add0d91Sopenharmony_ci        pub p_cs_precedes: ::c_char,
3972add0d91Sopenharmony_ci        pub p_sep_by_space: ::c_char,
3982add0d91Sopenharmony_ci        pub n_cs_precedes: ::c_char,
3992add0d91Sopenharmony_ci        pub n_sep_by_space: ::c_char,
4002add0d91Sopenharmony_ci        pub p_sign_posn: ::c_char,
4012add0d91Sopenharmony_ci        pub n_sign_posn: ::c_char,
4022add0d91Sopenharmony_ci        pub int_p_cs_precedes: ::c_char,
4032add0d91Sopenharmony_ci        pub int_p_sep_by_space: ::c_char,
4042add0d91Sopenharmony_ci        pub int_n_cs_precedes: ::c_char,
4052add0d91Sopenharmony_ci        pub int_n_sep_by_space: ::c_char,
4062add0d91Sopenharmony_ci        pub int_p_sign_posn: ::c_char,
4072add0d91Sopenharmony_ci        pub int_n_sign_posn: ::c_char,
4082add0d91Sopenharmony_ci    }
4092add0d91Sopenharmony_ci
4102add0d91Sopenharmony_ci    pub struct passwd { // Unverified
4112add0d91Sopenharmony_ci        pub pw_name: *mut ::c_char,
4122add0d91Sopenharmony_ci        pub pw_passwd: *mut ::c_char,
4132add0d91Sopenharmony_ci        pub pw_uid: ::uid_t,
4142add0d91Sopenharmony_ci        pub pw_gid: ::gid_t,
4152add0d91Sopenharmony_ci        pub pw_gecos: *mut ::c_char,
4162add0d91Sopenharmony_ci        pub pw_dir: *mut ::c_char,
4172add0d91Sopenharmony_ci        pub pw_shell: *mut ::c_char,
4182add0d91Sopenharmony_ci    }
4192add0d91Sopenharmony_ci
4202add0d91Sopenharmony_ci    pub struct pte_handle_t {
4212add0d91Sopenharmony_ci        pub p: usize,
4222add0d91Sopenharmony_ci        pub x: ::c_uint,
4232add0d91Sopenharmony_ci    }
4242add0d91Sopenharmony_ci
4252add0d91Sopenharmony_ci    pub struct sched_param {
4262add0d91Sopenharmony_ci        pub sched_priority: ::c_int,
4272add0d91Sopenharmony_ci    }
4282add0d91Sopenharmony_ci
4292add0d91Sopenharmony_ci    pub struct sem_t {
4302add0d91Sopenharmony_ci        pub value: i32,
4312add0d91Sopenharmony_ci        pub lock: usize,
4322add0d91Sopenharmony_ci        pub sem: usize,
4332add0d91Sopenharmony_ci    }
4342add0d91Sopenharmony_ci
4352add0d91Sopenharmony_ci    pub struct sigaction {
4362add0d91Sopenharmony_ci        pub sa_flags: ::c_int,
4372add0d91Sopenharmony_ci        pub sa_mask: sigset_t,
4382add0d91Sopenharmony_ci        pub sa_handler: usize,
4392add0d91Sopenharmony_ci    }
4402add0d91Sopenharmony_ci
4412add0d91Sopenharmony_ci    pub struct sockaddr_in6 {
4422add0d91Sopenharmony_ci        pub sin6_len: u8,
4432add0d91Sopenharmony_ci        pub sin6_family: sa_family_t,
4442add0d91Sopenharmony_ci        pub sin6_port: ::in_port_t,
4452add0d91Sopenharmony_ci        pub sin6_flowinfo: u32,
4462add0d91Sopenharmony_ci        pub sin6_addr: ::in6_addr,
4472add0d91Sopenharmony_ci        pub sin6_scope_id: u32,
4482add0d91Sopenharmony_ci    }
4492add0d91Sopenharmony_ci
4502add0d91Sopenharmony_ci    pub struct statvfs {}
4512add0d91Sopenharmony_ci
4522add0d91Sopenharmony_ci    pub struct tm {
4532add0d91Sopenharmony_ci        pub tm_sec: ::c_int,
4542add0d91Sopenharmony_ci        pub tm_min: ::c_int,
4552add0d91Sopenharmony_ci        pub tm_hour: ::c_int,
4562add0d91Sopenharmony_ci        pub tm_mday: ::c_int,
4572add0d91Sopenharmony_ci        pub tm_mon: ::c_int,
4582add0d91Sopenharmony_ci        pub tm_year: ::c_int,
4592add0d91Sopenharmony_ci        pub tm_wday: ::c_int,
4602add0d91Sopenharmony_ci        pub tm_yday: ::c_int,
4612add0d91Sopenharmony_ci        pub tm_isdst: ::c_int,
4622add0d91Sopenharmony_ci    }
4632add0d91Sopenharmony_ci
4642add0d91Sopenharmony_ci    pub struct tms {
4652add0d91Sopenharmony_ci        pub tms_utime: ::clock_t,
4662add0d91Sopenharmony_ci        pub tms_stime: ::clock_t,
4672add0d91Sopenharmony_ci        pub tms_cutime: ::clock_t,
4682add0d91Sopenharmony_ci        pub tms_cstime: ::clock_t,
4692add0d91Sopenharmony_ci    }
4702add0d91Sopenharmony_ci
4712add0d91Sopenharmony_ci    pub struct termios {}
4722add0d91Sopenharmony_ci
4732add0d91Sopenharmony_ci    pub struct utsname {}
4742add0d91Sopenharmony_ci}
4752add0d91Sopenharmony_ci
4762add0d91Sopenharmony_cipub const AF_UNSPEC: ::c_int = 0;
4772add0d91Sopenharmony_cipub const AF_INET: ::c_int = 2;
4782add0d91Sopenharmony_cipub const AF_INET6: ::c_int = 10;
4792add0d91Sopenharmony_ci
4802add0d91Sopenharmony_ci// Dummy
4812add0d91Sopenharmony_cipub const AF_UNIX: ::c_int = 1;
4822add0d91Sopenharmony_ci
4832add0d91Sopenharmony_cipub const CLOCK_REALTIME: ::clockid_t = 1;
4842add0d91Sopenharmony_cipub const CLOCK_MONOTONIC: ::clockid_t = 4;
4852add0d91Sopenharmony_ci
4862add0d91Sopenharmony_ci// Dummy
4872add0d91Sopenharmony_cipub const EAI_SYSTEM: ::c_int = -11;
4882add0d91Sopenharmony_ci
4892add0d91Sopenharmony_cipub const EPERM: ::c_int = 1;
4902add0d91Sopenharmony_cipub const ENOENT: ::c_int = 2;
4912add0d91Sopenharmony_cipub const ESRCH: ::c_int = 3;
4922add0d91Sopenharmony_cipub const EINTR: ::c_int = 4;
4932add0d91Sopenharmony_cipub const EIO: ::c_int = 5;
4942add0d91Sopenharmony_cipub const ENXIO: ::c_int = 6;
4952add0d91Sopenharmony_cipub const E2BIG: ::c_int = 7;
4962add0d91Sopenharmony_cipub const ENOEXEC: ::c_int = 8;
4972add0d91Sopenharmony_cipub const EBADF: ::c_int = 9;
4982add0d91Sopenharmony_cipub const ECHILD: ::c_int = 10;
4992add0d91Sopenharmony_cipub const EAGAIN: ::c_int = 11;
5002add0d91Sopenharmony_cipub const ENOMEM: ::c_int = 12;
5012add0d91Sopenharmony_cipub const EACCES: ::c_int = 13;
5022add0d91Sopenharmony_cipub const EFAULT: ::c_int = 14;
5032add0d91Sopenharmony_cipub const EBUSY: ::c_int = 16;
5042add0d91Sopenharmony_cipub const EEXIST: ::c_int = 17;
5052add0d91Sopenharmony_cipub const EXDEV: ::c_int = 18;
5062add0d91Sopenharmony_cipub const ENODEV: ::c_int = 19;
5072add0d91Sopenharmony_cipub const ENOTDIR: ::c_int = 20;
5082add0d91Sopenharmony_cipub const EISDIR: ::c_int = 21;
5092add0d91Sopenharmony_cipub const EINVAL: ::c_int = 22;
5102add0d91Sopenharmony_cipub const ENFILE: ::c_int = 23;
5112add0d91Sopenharmony_cipub const EMFILE: ::c_int = 24;
5122add0d91Sopenharmony_cipub const ENOTTY: ::c_int = 25;
5132add0d91Sopenharmony_cipub const ETXTBSY: ::c_int = 26;
5142add0d91Sopenharmony_cipub const EFBIG: ::c_int = 27;
5152add0d91Sopenharmony_cipub const ENOSPC: ::c_int = 28;
5162add0d91Sopenharmony_cipub const ESPIPE: ::c_int = 29;
5172add0d91Sopenharmony_cipub const EROFS: ::c_int = 30;
5182add0d91Sopenharmony_cipub const EMLINK: ::c_int = 31;
5192add0d91Sopenharmony_cipub const EPIPE: ::c_int = 32;
5202add0d91Sopenharmony_cipub const EDOM: ::c_int = 33;
5212add0d91Sopenharmony_cipub const ERANGE: ::c_int = 34;
5222add0d91Sopenharmony_cipub const EDEADLK: ::c_int = 35;
5232add0d91Sopenharmony_cipub const ENAMETOOLONG: ::c_int = 36;
5242add0d91Sopenharmony_cipub const ENOLCK: ::c_int = 37;
5252add0d91Sopenharmony_cipub const ENOSYS: ::c_int = 38;
5262add0d91Sopenharmony_cipub const ENOTEMPTY: ::c_int = 39;
5272add0d91Sopenharmony_cipub const ELOOP: ::c_int = 40;
5282add0d91Sopenharmony_cipub const EWOULDBLOCK: ::c_int = EAGAIN;
5292add0d91Sopenharmony_cipub const ENOMSG: ::c_int = 42;
5302add0d91Sopenharmony_cipub const EIDRM: ::c_int = 43;
5312add0d91Sopenharmony_cipub const ECHRNG: ::c_int = 44;
5322add0d91Sopenharmony_cipub const EL2NSYNC: ::c_int = 45;
5332add0d91Sopenharmony_cipub const EL3HLT: ::c_int = 46;
5342add0d91Sopenharmony_cipub const EL3RST: ::c_int = 47;
5352add0d91Sopenharmony_cipub const ELNRNG: ::c_int = 48;
5362add0d91Sopenharmony_cipub const EUNATCH: ::c_int = 49;
5372add0d91Sopenharmony_cipub const ENOCSI: ::c_int = 50;
5382add0d91Sopenharmony_cipub const EL2HLT: ::c_int = 51;
5392add0d91Sopenharmony_cipub const EBADE: ::c_int = 52;
5402add0d91Sopenharmony_cipub const EBADR: ::c_int = 53;
5412add0d91Sopenharmony_cipub const EXFULL: ::c_int = 54;
5422add0d91Sopenharmony_cipub const ENOANO: ::c_int = 55;
5432add0d91Sopenharmony_cipub const EBADRQC: ::c_int = 56;
5442add0d91Sopenharmony_cipub const EBADSLT: ::c_int = 57;
5452add0d91Sopenharmony_cipub const EDEADLOCK: ::c_int = EDEADLK;
5462add0d91Sopenharmony_cipub const EBFONT: ::c_int = 59;
5472add0d91Sopenharmony_cipub const ENOSTR: ::c_int = 60;
5482add0d91Sopenharmony_cipub const ENODATA: ::c_int = 61;
5492add0d91Sopenharmony_cipub const ETIME: ::c_int = 62;
5502add0d91Sopenharmony_cipub const ENOSR: ::c_int = 63;
5512add0d91Sopenharmony_cipub const ENONET: ::c_int = 64;
5522add0d91Sopenharmony_cipub const ENOPKG: ::c_int = 65;
5532add0d91Sopenharmony_cipub const EREMOTE: ::c_int = 66;
5542add0d91Sopenharmony_cipub const ENOLINK: ::c_int = 67;
5552add0d91Sopenharmony_cipub const EADV: ::c_int = 68;
5562add0d91Sopenharmony_cipub const ESRMNT: ::c_int = 69;
5572add0d91Sopenharmony_cipub const ECOMM: ::c_int = 70;
5582add0d91Sopenharmony_cipub const EPROTO: ::c_int = 71;
5592add0d91Sopenharmony_cipub const EMULTIHOP: ::c_int = 72;
5602add0d91Sopenharmony_cipub const EDOTDOT: ::c_int = 73;
5612add0d91Sopenharmony_cipub const EBADMSG: ::c_int = 74;
5622add0d91Sopenharmony_cipub const EOVERFLOW: ::c_int = 75;
5632add0d91Sopenharmony_cipub const ENOTUNIQ: ::c_int = 76;
5642add0d91Sopenharmony_cipub const EBADFD: ::c_int = 77;
5652add0d91Sopenharmony_cipub const EREMCHG: ::c_int = 78;
5662add0d91Sopenharmony_cipub const ELIBACC: ::c_int = 79;
5672add0d91Sopenharmony_cipub const ELIBBAD: ::c_int = 80;
5682add0d91Sopenharmony_cipub const ELIBSCN: ::c_int = 81;
5692add0d91Sopenharmony_cipub const ELIBMAX: ::c_int = 82;
5702add0d91Sopenharmony_cipub const ELIBEXEC: ::c_int = 83;
5712add0d91Sopenharmony_cipub const EILSEQ: ::c_int = 84;
5722add0d91Sopenharmony_cipub const ERESTART: ::c_int = 85;
5732add0d91Sopenharmony_cipub const ESTRPIPE: ::c_int = 86;
5742add0d91Sopenharmony_cipub const EUSERS: ::c_int = 87;
5752add0d91Sopenharmony_cipub const ENOTSOCK: ::c_int = 88;
5762add0d91Sopenharmony_cipub const EDESTADDRREQ: ::c_int = 89;
5772add0d91Sopenharmony_cipub const EMSGSIZE: ::c_int = 90;
5782add0d91Sopenharmony_cipub const EPROTOTYPE: ::c_int = 91;
5792add0d91Sopenharmony_cipub const ENOPROTOOPT: ::c_int = 92;
5802add0d91Sopenharmony_cipub const EPROTONOSUPPORT: ::c_int = 93;
5812add0d91Sopenharmony_cipub const ESOCKTNOSUPPORT: ::c_int = 94;
5822add0d91Sopenharmony_cipub const EOPNOTSUPP: ::c_int = 95;
5832add0d91Sopenharmony_cipub const EPFNOSUPPORT: ::c_int = 96;
5842add0d91Sopenharmony_cipub const EAFNOSUPPORT: ::c_int = 97;
5852add0d91Sopenharmony_cipub const EADDRINUSE: ::c_int = 98;
5862add0d91Sopenharmony_cipub const EADDRNOTAVAIL: ::c_int = 99;
5872add0d91Sopenharmony_cipub const ENETDOWN: ::c_int = 100;
5882add0d91Sopenharmony_cipub const ENETUNREACH: ::c_int = 101;
5892add0d91Sopenharmony_cipub const ENETRESET: ::c_int = 102;
5902add0d91Sopenharmony_cipub const ECONNABORTED: ::c_int = 103;
5912add0d91Sopenharmony_cipub const ECONNRESET: ::c_int = 104;
5922add0d91Sopenharmony_cipub const ENOBUFS: ::c_int = 105;
5932add0d91Sopenharmony_cipub const EISCONN: ::c_int = 106;
5942add0d91Sopenharmony_cipub const ENOTCONN: ::c_int = 107;
5952add0d91Sopenharmony_cipub const ESHUTDOWN: ::c_int = 108;
5962add0d91Sopenharmony_cipub const ETOOMANYREFS: ::c_int = 109;
5972add0d91Sopenharmony_cipub const ETIMEDOUT: ::c_int = 110;
5982add0d91Sopenharmony_cipub const ECONNREFUSED: ::c_int = 111;
5992add0d91Sopenharmony_cipub const EHOSTDOWN: ::c_int = 112;
6002add0d91Sopenharmony_cipub const EHOSTUNREACH: ::c_int = 113;
6012add0d91Sopenharmony_cipub const EALREADY: ::c_int = 114;
6022add0d91Sopenharmony_cipub const EINPROGRESS: ::c_int = 115;
6032add0d91Sopenharmony_cipub const ESTALE: ::c_int = 116;
6042add0d91Sopenharmony_cipub const EUCLEAN: ::c_int = 117;
6052add0d91Sopenharmony_cipub const ENOTNAM: ::c_int = 118;
6062add0d91Sopenharmony_cipub const ENAVAIL: ::c_int = 119;
6072add0d91Sopenharmony_cipub const EISNAM: ::c_int = 120;
6082add0d91Sopenharmony_cipub const EREMOTEIO: ::c_int = 121;
6092add0d91Sopenharmony_cipub const EDQUOT: ::c_int = 122;
6102add0d91Sopenharmony_cipub const ENOMEDIUM: ::c_int = 123;
6112add0d91Sopenharmony_cipub const EMEDIUMTYPE: ::c_int = 124;
6122add0d91Sopenharmony_cipub const ECANCELED: ::c_int = 125;
6132add0d91Sopenharmony_cipub const ENOKEY: ::c_int = 126;
6142add0d91Sopenharmony_cipub const EKEYEXPIRED: ::c_int = 127;
6152add0d91Sopenharmony_cipub const EKEYREVOKED: ::c_int = 128;
6162add0d91Sopenharmony_cipub const EKEYREJECTED: ::c_int = 129;
6172add0d91Sopenharmony_cipub const EOWNERDEAD: ::c_int = 130;
6182add0d91Sopenharmony_cipub const ENOTRECOVERABLE: ::c_int = 131;
6192add0d91Sopenharmony_cipub const ERFKILL: ::c_int = 132;
6202add0d91Sopenharmony_cipub const EHWPOISON: ::c_int = 133;
6212add0d91Sopenharmony_ci
6222add0d91Sopenharmony_cipub const EXIT_FAILURE: ::c_int = 1;
6232add0d91Sopenharmony_cipub const EXIT_SUCCESS: ::c_int = 0;
6242add0d91Sopenharmony_ci
6252add0d91Sopenharmony_cipub const F_DUPFD: ::c_int = 0;
6262add0d91Sopenharmony_cipub const F_GETFD: ::c_int = 1;
6272add0d91Sopenharmony_cipub const F_SETFD: ::c_int = 2;
6282add0d91Sopenharmony_cipub const F_GETFL: ::c_int = 3;
6292add0d91Sopenharmony_cipub const F_SETFL: ::c_int = 4;
6302add0d91Sopenharmony_cipub const F_GETOWN: ::c_int = 5;
6312add0d91Sopenharmony_cipub const F_SETOWN: ::c_int = 6;
6322add0d91Sopenharmony_cipub const F_GETLK: ::c_int = 7;
6332add0d91Sopenharmony_cipub const F_SETLK: ::c_int = 8;
6342add0d91Sopenharmony_cipub const F_SETLKW: ::c_int = 9;
6352add0d91Sopenharmony_cipub const F_RGETLK: ::c_int = 10;
6362add0d91Sopenharmony_cipub const F_RSETLK: ::c_int = 11;
6372add0d91Sopenharmony_cipub const F_CNVT: ::c_int = 12;
6382add0d91Sopenharmony_cipub const F_RSETLKW: ::c_int = 13;
6392add0d91Sopenharmony_cipub const F_DUPFD_CLOEXEC: ::c_int = 14;
6402add0d91Sopenharmony_ci
6412add0d91Sopenharmony_cipub const FD_SETSIZE: usize = 1024;
6422add0d91Sopenharmony_ci
6432add0d91Sopenharmony_ci// Dummy
6442add0d91Sopenharmony_cipub const FIOCLEX: ::c_int = 0x5451;
6452add0d91Sopenharmony_ci
6462add0d91Sopenharmony_cipub const FIONBIO: ::c_int = 0x8004667e;
6472add0d91Sopenharmony_cipub const FIONREAD: ::c_int = 0x4004667f;
6482add0d91Sopenharmony_ci
6492add0d91Sopenharmony_cipub const IP_ADD_MEMBERSHIP: ::c_int = 3;
6502add0d91Sopenharmony_cipub const IP_DROP_MEMBERSHIP: ::c_int = 4;
6512add0d91Sopenharmony_ci
6522add0d91Sopenharmony_cipub const IP_TOS: ::c_int = 1;
6532add0d91Sopenharmony_cipub const IP_TTL: ::c_int = 2;
6542add0d91Sopenharmony_ci
6552add0d91Sopenharmony_cipub const IP_MULTICAST_TTL: ::c_int = 5;
6562add0d91Sopenharmony_cipub const IP_MULTICAST_IF: ::c_int = 6;
6572add0d91Sopenharmony_cipub const IP_MULTICAST_LOOP: ::c_int = 7;
6582add0d91Sopenharmony_ci
6592add0d91Sopenharmony_cipub const IPV6_JOIN_GROUP: ::c_int = 12;
6602add0d91Sopenharmony_cipub const IPV6_ADD_MEMBERSHIP: ::c_int = 12;
6612add0d91Sopenharmony_cipub const IPV6_LEAVE_GROUP: ::c_int = 13;
6622add0d91Sopenharmony_cipub const IPV6_DROP_MEMBERSHIP: ::c_int = 13;
6632add0d91Sopenharmony_cipub const IPV6_V6ONLY: ::c_int = 27;
6642add0d91Sopenharmony_ci
6652add0d91Sopenharmony_ci// Dummy
6662add0d91Sopenharmony_cipub const IPV6_MULTICAST_LOOP: ::c_int = 7;
6672add0d91Sopenharmony_ci
6682add0d91Sopenharmony_cipub const MSG_PEEK: ::c_int = 0x01;
6692add0d91Sopenharmony_cipub const MSG_WAITALL: ::c_int = 0x02;
6702add0d91Sopenharmony_cipub const MSG_OOB: ::c_int = 0x04;
6712add0d91Sopenharmony_cipub const MSG_DONTWAIT: ::c_int = 0x08;
6722add0d91Sopenharmony_cipub const MSG_MORE: ::c_int = 0x10;
6732add0d91Sopenharmony_ci
6742add0d91Sopenharmony_cipub const O_ACCMODE: ::c_int = 3;
6752add0d91Sopenharmony_cipub const O_RDONLY: ::c_int = 0;
6762add0d91Sopenharmony_cipub const O_WRONLY: ::c_int = 1;
6772add0d91Sopenharmony_cipub const O_RDWR: ::c_int = 2;
6782add0d91Sopenharmony_cipub const O_APPEND: ::c_int = 1024;
6792add0d91Sopenharmony_cipub const O_CREAT: ::c_int = 64;
6802add0d91Sopenharmony_cipub const O_EXCL: ::c_int = 128;
6812add0d91Sopenharmony_cipub const O_NOCTTY: ::c_int = 256;
6822add0d91Sopenharmony_cipub const O_NONBLOCK: ::c_int = 2048;
6832add0d91Sopenharmony_cipub const O_TRUNC: ::c_int = 512;
6842add0d91Sopenharmony_cipub const O_CLOEXEC: ::c_int = 524288;
6852add0d91Sopenharmony_ci
6862add0d91Sopenharmony_cipub const POLLIN: ::c_short = 0x1;
6872add0d91Sopenharmony_cipub const POLLPRI: ::c_short = 0x2;
6882add0d91Sopenharmony_cipub const POLLOUT: ::c_short = 0x4;
6892add0d91Sopenharmony_cipub const POLLERR: ::c_short = 0x8;
6902add0d91Sopenharmony_cipub const POLLHUP: ::c_short = 0x10;
6912add0d91Sopenharmony_cipub const POLLNVAL: ::c_short = 0x20;
6922add0d91Sopenharmony_ci
6932add0d91Sopenharmony_cipub const PTHREAD_COND_INITIALIZER: pthread_cond_t = usize::max_value();
6942add0d91Sopenharmony_cipub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = usize::max_value();
6952add0d91Sopenharmony_cipub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = usize::max_value();
6962add0d91Sopenharmony_ci
6972add0d91Sopenharmony_cipub const PTHREAD_MUTEX_NORMAL: ::c_int = 0;
6982add0d91Sopenharmony_cipub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 1;
6992add0d91Sopenharmony_cipub const PTHREAD_STACK_MIN: ::size_t = 0;
7002add0d91Sopenharmony_ci
7012add0d91Sopenharmony_ci// Dummy
7022add0d91Sopenharmony_cipub const RTLD_DEFAULT: *mut ::c_void = 0i64 as *mut ::c_void;
7032add0d91Sopenharmony_ci
7042add0d91Sopenharmony_cipub const _SC_ARG_MAX: ::c_int = 0;
7052add0d91Sopenharmony_cipub const _SC_CHILD_MAX: ::c_int = 1;
7062add0d91Sopenharmony_cipub const _SC_CLK_TCK: ::c_int = 2;
7072add0d91Sopenharmony_cipub const _SC_NGROUPS_MAX: ::c_int = 3;
7082add0d91Sopenharmony_cipub const _SC_OPEN_MAX: ::c_int = 4;
7092add0d91Sopenharmony_cipub const _SC_JOB_CONTROL: ::c_int = 5;
7102add0d91Sopenharmony_cipub const _SC_SAVED_IDS: ::c_int = 6;
7112add0d91Sopenharmony_cipub const _SC_VERSION: ::c_int = 7;
7122add0d91Sopenharmony_cipub const _SC_PAGESIZE: ::c_int = 8;
7132add0d91Sopenharmony_cipub const _SC_PAGE_SIZE: ::c_int = _SC_PAGESIZE;
7142add0d91Sopenharmony_cipub const _SC_NPROCESSORS_CONF: ::c_int = 9;
7152add0d91Sopenharmony_cipub const _SC_NPROCESSORS_ONLN: ::c_int = 10;
7162add0d91Sopenharmony_cipub const _SC_PHYS_PAGES: ::c_int = 11;
7172add0d91Sopenharmony_cipub const _SC_AVPHYS_PAGES: ::c_int = 12;
7182add0d91Sopenharmony_cipub const _SC_MQ_OPEN_MAX: ::c_int = 13;
7192add0d91Sopenharmony_cipub const _SC_MQ_PRIO_MAX: ::c_int = 14;
7202add0d91Sopenharmony_cipub const _SC_RTSIG_MAX: ::c_int = 15;
7212add0d91Sopenharmony_cipub const _SC_SEM_NSEMS_MAX: ::c_int = 16;
7222add0d91Sopenharmony_cipub const _SC_SEM_VALUE_MAX: ::c_int = 17;
7232add0d91Sopenharmony_cipub const _SC_SIGQUEUE_MAX: ::c_int = 18;
7242add0d91Sopenharmony_cipub const _SC_TIMER_MAX: ::c_int = 19;
7252add0d91Sopenharmony_cipub const _SC_TZNAME_MAX: ::c_int = 20;
7262add0d91Sopenharmony_cipub const _SC_ASYNCHRONOUS_IO: ::c_int = 21;
7272add0d91Sopenharmony_cipub const _SC_FSYNC: ::c_int = 22;
7282add0d91Sopenharmony_cipub const _SC_MAPPED_FILES: ::c_int = 23;
7292add0d91Sopenharmony_cipub const _SC_MEMLOCK: ::c_int = 24;
7302add0d91Sopenharmony_cipub const _SC_MEMLOCK_RANGE: ::c_int = 25;
7312add0d91Sopenharmony_cipub const _SC_MEMORY_PROTECTION: ::c_int = 26;
7322add0d91Sopenharmony_cipub const _SC_MESSAGE_PASSING: ::c_int = 27;
7332add0d91Sopenharmony_cipub const _SC_PRIORITIZED_IO: ::c_int = 28;
7342add0d91Sopenharmony_cipub const _SC_REALTIME_SIGNALS: ::c_int = 29;
7352add0d91Sopenharmony_cipub const _SC_SEMAPHORES: ::c_int = 30;
7362add0d91Sopenharmony_cipub const _SC_SHARED_MEMORY_OBJECTS: ::c_int = 31;
7372add0d91Sopenharmony_cipub const _SC_SYNCHRONIZED_IO: ::c_int = 32;
7382add0d91Sopenharmony_cipub const _SC_TIMERS: ::c_int = 33;
7392add0d91Sopenharmony_cipub const _SC_AIO_LISTIO_MAX: ::c_int = 34;
7402add0d91Sopenharmony_cipub const _SC_AIO_MAX: ::c_int = 35;
7412add0d91Sopenharmony_cipub const _SC_AIO_PRIO_DELTA_MAX: ::c_int = 36;
7422add0d91Sopenharmony_cipub const _SC_DELAYTIMER_MAX: ::c_int = 37;
7432add0d91Sopenharmony_cipub const _SC_THREAD_KEYS_MAX: ::c_int = 38;
7442add0d91Sopenharmony_cipub const _SC_THREAD_STACK_MIN: ::c_int = 39;
7452add0d91Sopenharmony_cipub const _SC_THREAD_THREADS_MAX: ::c_int = 40;
7462add0d91Sopenharmony_cipub const _SC_TTY_NAME_MAX: ::c_int = 41;
7472add0d91Sopenharmony_cipub const _SC_THREADS: ::c_int = 42;
7482add0d91Sopenharmony_cipub const _SC_THREAD_ATTR_STACKADDR: ::c_int = 43;
7492add0d91Sopenharmony_cipub const _SC_THREAD_ATTR_STACKSIZE: ::c_int = 44;
7502add0d91Sopenharmony_cipub const _SC_THREAD_PRIORITY_SCHEDULING: ::c_int = 45;
7512add0d91Sopenharmony_cipub const _SC_THREAD_PRIO_INHERIT: ::c_int = 46;
7522add0d91Sopenharmony_cipub const _SC_THREAD_PRIO_PROTECT: ::c_int = 47;
7532add0d91Sopenharmony_cipub const _SC_THREAD_PRIO_CEILING: ::c_int = _SC_THREAD_PRIO_PROTECT;
7542add0d91Sopenharmony_cipub const _SC_THREAD_PROCESS_SHARED: ::c_int = 48;
7552add0d91Sopenharmony_cipub const _SC_THREAD_SAFE_FUNCTIONS: ::c_int = 49;
7562add0d91Sopenharmony_cipub const _SC_GETGR_R_SIZE_MAX: ::c_int = 50;
7572add0d91Sopenharmony_cipub const _SC_GETPW_R_SIZE_MAX: ::c_int = 51;
7582add0d91Sopenharmony_cipub const _SC_LOGIN_NAME_MAX: ::c_int = 52;
7592add0d91Sopenharmony_cipub const _SC_THREAD_DESTRUCTOR_ITERATIONS: ::c_int = 53;
7602add0d91Sopenharmony_cipub const _SC_ADVISORY_INFO: ::c_int = 54;
7612add0d91Sopenharmony_cipub const _SC_ATEXIT_MAX: ::c_int = 55;
7622add0d91Sopenharmony_cipub const _SC_BARRIERS: ::c_int = 56;
7632add0d91Sopenharmony_cipub const _SC_BC_BASE_MAX: ::c_int = 57;
7642add0d91Sopenharmony_cipub const _SC_BC_DIM_MAX: ::c_int = 58;
7652add0d91Sopenharmony_cipub const _SC_BC_SCALE_MAX: ::c_int = 59;
7662add0d91Sopenharmony_cipub const _SC_BC_STRING_MAX: ::c_int = 60;
7672add0d91Sopenharmony_cipub const _SC_CLOCK_SELECTION: ::c_int = 61;
7682add0d91Sopenharmony_cipub const _SC_COLL_WEIGHTS_MAX: ::c_int = 62;
7692add0d91Sopenharmony_cipub const _SC_CPUTIME: ::c_int = 63;
7702add0d91Sopenharmony_cipub const _SC_EXPR_NEST_MAX: ::c_int = 64;
7712add0d91Sopenharmony_cipub const _SC_HOST_NAME_MAX: ::c_int = 65;
7722add0d91Sopenharmony_cipub const _SC_IOV_MAX: ::c_int = 66;
7732add0d91Sopenharmony_cipub const _SC_IPV6: ::c_int = 67;
7742add0d91Sopenharmony_cipub const _SC_LINE_MAX: ::c_int = 68;
7752add0d91Sopenharmony_cipub const _SC_MONOTONIC_CLOCK: ::c_int = 69;
7762add0d91Sopenharmony_cipub const _SC_RAW_SOCKETS: ::c_int = 70;
7772add0d91Sopenharmony_cipub const _SC_READER_WRITER_LOCKS: ::c_int = 71;
7782add0d91Sopenharmony_cipub const _SC_REGEXP: ::c_int = 72;
7792add0d91Sopenharmony_cipub const _SC_RE_DUP_MAX: ::c_int = 73;
7802add0d91Sopenharmony_cipub const _SC_SHELL: ::c_int = 74;
7812add0d91Sopenharmony_cipub const _SC_SPAWN: ::c_int = 75;
7822add0d91Sopenharmony_cipub const _SC_SPIN_LOCKS: ::c_int = 76;
7832add0d91Sopenharmony_cipub const _SC_SPORADIC_SERVER: ::c_int = 77;
7842add0d91Sopenharmony_cipub const _SC_SS_REPL_MAX: ::c_int = 78;
7852add0d91Sopenharmony_cipub const _SC_SYMLOOP_MAX: ::c_int = 79;
7862add0d91Sopenharmony_cipub const _SC_THREAD_CPUTIME: ::c_int = 80;
7872add0d91Sopenharmony_cipub const _SC_THREAD_SPORADIC_SERVER: ::c_int = 81;
7882add0d91Sopenharmony_cipub const _SC_TIMEOUTS: ::c_int = 82;
7892add0d91Sopenharmony_cipub const _SC_TRACE: ::c_int = 83;
7902add0d91Sopenharmony_cipub const _SC_TRACE_EVENT_FILTER: ::c_int = 84;
7912add0d91Sopenharmony_cipub const _SC_TRACE_EVENT_NAME_MAX: ::c_int = 85;
7922add0d91Sopenharmony_cipub const _SC_TRACE_INHERIT: ::c_int = 86;
7932add0d91Sopenharmony_cipub const _SC_TRACE_LOG: ::c_int = 87;
7942add0d91Sopenharmony_cipub const _SC_TRACE_NAME_MAX: ::c_int = 88;
7952add0d91Sopenharmony_cipub const _SC_TRACE_SYS_MAX: ::c_int = 89;
7962add0d91Sopenharmony_cipub const _SC_TRACE_USER_EVENT_MAX: ::c_int = 90;
7972add0d91Sopenharmony_cipub const _SC_TYPED_MEMORY_OBJECTS: ::c_int = 91;
7982add0d91Sopenharmony_cipub const _SC_V7_ILP32_OFF32: ::c_int = 92;
7992add0d91Sopenharmony_cipub const _SC_V6_ILP32_OFF32: ::c_int = _SC_V7_ILP32_OFF32;
8002add0d91Sopenharmony_cipub const _SC_XBS5_ILP32_OFF32: ::c_int = _SC_V7_ILP32_OFF32;
8012add0d91Sopenharmony_cipub const _SC_V7_ILP32_OFFBIG: ::c_int = 93;
8022add0d91Sopenharmony_cipub const _SC_V6_ILP32_OFFBIG: ::c_int = _SC_V7_ILP32_OFFBIG;
8032add0d91Sopenharmony_cipub const _SC_XBS5_ILP32_OFFBIG: ::c_int = _SC_V7_ILP32_OFFBIG;
8042add0d91Sopenharmony_cipub const _SC_V7_LP64_OFF64: ::c_int = 94;
8052add0d91Sopenharmony_cipub const _SC_V6_LP64_OFF64: ::c_int = _SC_V7_LP64_OFF64;
8062add0d91Sopenharmony_cipub const _SC_XBS5_LP64_OFF64: ::c_int = _SC_V7_LP64_OFF64;
8072add0d91Sopenharmony_cipub const _SC_V7_LPBIG_OFFBIG: ::c_int = 95;
8082add0d91Sopenharmony_cipub const _SC_V6_LPBIG_OFFBIG: ::c_int = _SC_V7_LPBIG_OFFBIG;
8092add0d91Sopenharmony_cipub const _SC_XBS5_LPBIG_OFFBIG: ::c_int = _SC_V7_LPBIG_OFFBIG;
8102add0d91Sopenharmony_cipub const _SC_XOPEN_CRYPT: ::c_int = 96;
8112add0d91Sopenharmony_cipub const _SC_XOPEN_ENH_I18N: ::c_int = 97;
8122add0d91Sopenharmony_cipub const _SC_XOPEN_LEGACY: ::c_int = 98;
8132add0d91Sopenharmony_cipub const _SC_XOPEN_REALTIME: ::c_int = 99;
8142add0d91Sopenharmony_cipub const _SC_STREAM_MAX: ::c_int = 100;
8152add0d91Sopenharmony_cipub const _SC_PRIORITY_SCHEDULING: ::c_int = 101;
8162add0d91Sopenharmony_cipub const _SC_XOPEN_REALTIME_THREADS: ::c_int = 102;
8172add0d91Sopenharmony_cipub const _SC_XOPEN_SHM: ::c_int = 103;
8182add0d91Sopenharmony_cipub const _SC_XOPEN_STREAMS: ::c_int = 104;
8192add0d91Sopenharmony_cipub const _SC_XOPEN_UNIX: ::c_int = 105;
8202add0d91Sopenharmony_cipub const _SC_XOPEN_VERSION: ::c_int = 106;
8212add0d91Sopenharmony_cipub const _SC_2_CHAR_TERM: ::c_int = 107;
8222add0d91Sopenharmony_cipub const _SC_2_C_BIND: ::c_int = 108;
8232add0d91Sopenharmony_cipub const _SC_2_C_DEV: ::c_int = 109;
8242add0d91Sopenharmony_cipub const _SC_2_FORT_DEV: ::c_int = 110;
8252add0d91Sopenharmony_cipub const _SC_2_FORT_RUN: ::c_int = 111;
8262add0d91Sopenharmony_cipub const _SC_2_LOCALEDEF: ::c_int = 112;
8272add0d91Sopenharmony_cipub const _SC_2_PBS: ::c_int = 113;
8282add0d91Sopenharmony_cipub const _SC_2_PBS_ACCOUNTING: ::c_int = 114;
8292add0d91Sopenharmony_cipub const _SC_2_PBS_CHECKPOINT: ::c_int = 115;
8302add0d91Sopenharmony_cipub const _SC_2_PBS_LOCATE: ::c_int = 116;
8312add0d91Sopenharmony_cipub const _SC_2_PBS_MESSAGE: ::c_int = 117;
8322add0d91Sopenharmony_cipub const _SC_2_PBS_TRACK: ::c_int = 118;
8332add0d91Sopenharmony_cipub const _SC_2_SW_DEV: ::c_int = 119;
8342add0d91Sopenharmony_cipub const _SC_2_UPE: ::c_int = 120;
8352add0d91Sopenharmony_cipub const _SC_2_VERSION: ::c_int = 121;
8362add0d91Sopenharmony_cipub const _SC_THREAD_ROBUST_PRIO_INHERIT: ::c_int = 122;
8372add0d91Sopenharmony_cipub const _SC_THREAD_ROBUST_PRIO_PROTECT: ::c_int = 123;
8382add0d91Sopenharmony_cipub const _SC_XOPEN_UUCP: ::c_int = 124;
8392add0d91Sopenharmony_cipub const _SC_LEVEL1_ICACHE_SIZE: ::c_int = 125;
8402add0d91Sopenharmony_cipub const _SC_LEVEL1_ICACHE_ASSOC: ::c_int = 126;
8412add0d91Sopenharmony_cipub const _SC_LEVEL1_ICACHE_LINESIZE: ::c_int = 127;
8422add0d91Sopenharmony_cipub const _SC_LEVEL1_DCACHE_SIZE: ::c_int = 128;
8432add0d91Sopenharmony_cipub const _SC_LEVEL1_DCACHE_ASSOC: ::c_int = 129;
8442add0d91Sopenharmony_cipub const _SC_LEVEL1_DCACHE_LINESIZE: ::c_int = 130;
8452add0d91Sopenharmony_cipub const _SC_LEVEL2_CACHE_SIZE: ::c_int = 131;
8462add0d91Sopenharmony_cipub const _SC_LEVEL2_CACHE_ASSOC: ::c_int = 132;
8472add0d91Sopenharmony_cipub const _SC_LEVEL2_CACHE_LINESIZE: ::c_int = 133;
8482add0d91Sopenharmony_cipub const _SC_LEVEL3_CACHE_SIZE: ::c_int = 134;
8492add0d91Sopenharmony_cipub const _SC_LEVEL3_CACHE_ASSOC: ::c_int = 135;
8502add0d91Sopenharmony_cipub const _SC_LEVEL3_CACHE_LINESIZE: ::c_int = 136;
8512add0d91Sopenharmony_cipub const _SC_LEVEL4_CACHE_SIZE: ::c_int = 137;
8522add0d91Sopenharmony_cipub const _SC_LEVEL4_CACHE_ASSOC: ::c_int = 138;
8532add0d91Sopenharmony_cipub const _SC_LEVEL4_CACHE_LINESIZE: ::c_int = 139;
8542add0d91Sopenharmony_ci
8552add0d91Sopenharmony_cipub const S_BLKSIZE: ::mode_t = 1024;
8562add0d91Sopenharmony_cipub const S_IREAD: ::mode_t = 256;
8572add0d91Sopenharmony_cipub const S_IWRITE: ::mode_t = 128;
8582add0d91Sopenharmony_cipub const S_IEXEC: ::mode_t = 64;
8592add0d91Sopenharmony_cipub const S_ENFMT: ::mode_t = 1024;
8602add0d91Sopenharmony_cipub const S_IFMT: ::mode_t = 61440;
8612add0d91Sopenharmony_cipub const S_IFDIR: ::mode_t = 16384;
8622add0d91Sopenharmony_cipub const S_IFCHR: ::mode_t = 8192;
8632add0d91Sopenharmony_cipub const S_IFBLK: ::mode_t = 24576;
8642add0d91Sopenharmony_cipub const S_IFREG: ::mode_t = 32768;
8652add0d91Sopenharmony_cipub const S_IFLNK: ::mode_t = 40960;
8662add0d91Sopenharmony_cipub const S_IFSOCK: ::mode_t = 49152;
8672add0d91Sopenharmony_cipub const S_IFIFO: ::mode_t = 4096;
8682add0d91Sopenharmony_cipub const S_IRUSR: ::mode_t = 256;
8692add0d91Sopenharmony_cipub const S_IWUSR: ::mode_t = 128;
8702add0d91Sopenharmony_cipub const S_IXUSR: ::mode_t = 64;
8712add0d91Sopenharmony_cipub const S_IRGRP: ::mode_t = 32;
8722add0d91Sopenharmony_cipub const S_IWGRP: ::mode_t = 16;
8732add0d91Sopenharmony_cipub const S_IXGRP: ::mode_t = 8;
8742add0d91Sopenharmony_cipub const S_IROTH: ::mode_t = 4;
8752add0d91Sopenharmony_cipub const S_IWOTH: ::mode_t = 2;
8762add0d91Sopenharmony_cipub const S_IXOTH: ::mode_t = 1;
8772add0d91Sopenharmony_ci
8782add0d91Sopenharmony_cipub const SEEK_SET: ::c_int = 0;
8792add0d91Sopenharmony_cipub const SEEK_CUR: ::c_int = 1;
8802add0d91Sopenharmony_cipub const SEEK_END: ::c_int = 2;
8812add0d91Sopenharmony_ci
8822add0d91Sopenharmony_cipub const SHUT_RD: ::c_int = 0;
8832add0d91Sopenharmony_cipub const SHUT_WR: ::c_int = 1;
8842add0d91Sopenharmony_cipub const SHUT_RDWR: ::c_int = 2;
8852add0d91Sopenharmony_ci
8862add0d91Sopenharmony_cipub const SIG_SETMASK: ::c_int = 0;
8872add0d91Sopenharmony_ci
8882add0d91Sopenharmony_cipub const SIGHUP: ::c_int = 1;
8892add0d91Sopenharmony_cipub const SIGINT: ::c_int = 2;
8902add0d91Sopenharmony_cipub const SIGQUIT: ::c_int = 3;
8912add0d91Sopenharmony_cipub const SIGILL: ::c_int = 4;
8922add0d91Sopenharmony_cipub const SIGABRT: ::c_int = 6;
8932add0d91Sopenharmony_cipub const SIGEMT: ::c_int = 7;
8942add0d91Sopenharmony_cipub const SIGFPE: ::c_int = 8;
8952add0d91Sopenharmony_cipub const SIGKILL: ::c_int = 9;
8962add0d91Sopenharmony_cipub const SIGSEGV: ::c_int = 11;
8972add0d91Sopenharmony_cipub const SIGPIPE: ::c_int = 13;
8982add0d91Sopenharmony_cipub const SIGALRM: ::c_int = 14;
8992add0d91Sopenharmony_cipub const SIGTERM: ::c_int = 15;
9002add0d91Sopenharmony_ci
9012add0d91Sopenharmony_cipub const SO_DEBUG: ::c_int = 0x0001;
9022add0d91Sopenharmony_cipub const SO_ACCEPTCONN: ::c_int = 0x0002;
9032add0d91Sopenharmony_cipub const SO_REUSEADDR: ::c_int = 0x0004;
9042add0d91Sopenharmony_cipub const SO_KEEPALIVE: ::c_int = 0x0008;
9052add0d91Sopenharmony_cipub const SO_DONTROUTE: ::c_int = 0x0010;
9062add0d91Sopenharmony_cipub const SO_BROADCAST: ::c_int = 0x0020;
9072add0d91Sopenharmony_cipub const SO_USELOOPBACK: ::c_int = 0x0040;
9082add0d91Sopenharmony_cipub const SO_LINGER: ::c_int = 0x0080;
9092add0d91Sopenharmony_cipub const SO_OOBINLINE: ::c_int = 0x0100;
9102add0d91Sopenharmony_cipub const SO_REUSEPORT: ::c_int = 0x0200;
9112add0d91Sopenharmony_cipub const SO_SNDBUF: ::c_int = 0x1001;
9122add0d91Sopenharmony_cipub const SO_RCVBUF: ::c_int = 0x1002;
9132add0d91Sopenharmony_cipub const SO_SNDLOWAT: ::c_int = 0x1003;
9142add0d91Sopenharmony_cipub const SO_RCVLOWAT: ::c_int = 0x1004;
9152add0d91Sopenharmony_cipub const SO_SNDTIMEO: ::c_int = 0x1005;
9162add0d91Sopenharmony_cipub const SO_RCVTIMEO: ::c_int = 0x1006;
9172add0d91Sopenharmony_cipub const SO_ERROR: ::c_int = 0x1007;
9182add0d91Sopenharmony_cipub const SO_TYPE: ::c_int = 0x1008;
9192add0d91Sopenharmony_cipub const SO_CONTIMEO: ::c_int = 0x1009;
9202add0d91Sopenharmony_cipub const SO_NO_CHECK: ::c_int = 0x100a;
9212add0d91Sopenharmony_ci
9222add0d91Sopenharmony_cipub const SOCK_STREAM: ::c_int = 1;
9232add0d91Sopenharmony_cipub const SOCK_DGRAM: ::c_int = 2;
9242add0d91Sopenharmony_cipub const SOCK_RAW: ::c_int = 3;
9252add0d91Sopenharmony_ci
9262add0d91Sopenharmony_cipub const SOL_SOCKET: ::c_int = 0xfff;
9272add0d91Sopenharmony_ci
9282add0d91Sopenharmony_cipub const STDIN_FILENO: ::c_int = 0;
9292add0d91Sopenharmony_cipub const STDOUT_FILENO: ::c_int = 1;
9302add0d91Sopenharmony_cipub const STDERR_FILENO: ::c_int = 2;
9312add0d91Sopenharmony_ci
9322add0d91Sopenharmony_cipub const TCP_NODELAY: ::c_int = 0x01;
9332add0d91Sopenharmony_cipub const TCP_KEEPALIVE: ::c_int = 0x02;
9342add0d91Sopenharmony_cipub const TCP_KEEPIDLE: ::c_int = 0x03;
9352add0d91Sopenharmony_cipub const TCP_KEEPINTVL: ::c_int = 0x04;
9362add0d91Sopenharmony_cipub const TCP_KEEPCNT: ::c_int = 0x05;
9372add0d91Sopenharmony_ci
9382add0d91Sopenharmony_ciconst ULONG_SIZE: usize = 64;
9392add0d91Sopenharmony_ci
9402add0d91Sopenharmony_cipub const WNOHANG: ::c_int = 0x00000001;
9412add0d91Sopenharmony_ci
9422add0d91Sopenharmony_cipub const PRIO_PROCESS: ::c_int = 0;
9432add0d91Sopenharmony_cipub const PRIO_PGRP: ::c_int = 1;
9442add0d91Sopenharmony_cipub const PRIO_USER: ::c_int = 2;
9452add0d91Sopenharmony_ci
9462add0d91Sopenharmony_cisafe_f! {
9472add0d91Sopenharmony_ci    pub {const} fn WEXITSTATUS(status: ::c_int) -> ::c_int {
9482add0d91Sopenharmony_ci        (status >> 8) & 0xff
9492add0d91Sopenharmony_ci    }
9502add0d91Sopenharmony_ci
9512add0d91Sopenharmony_ci    pub {const} fn WIFEXITED(status: ::c_int) -> bool {
9522add0d91Sopenharmony_ci        (status & 0xff) == 0
9532add0d91Sopenharmony_ci    }
9542add0d91Sopenharmony_ci
9552add0d91Sopenharmony_ci    pub {const} fn WTERMSIG(status: ::c_int) -> ::c_int {
9562add0d91Sopenharmony_ci        status & 0x7f
9572add0d91Sopenharmony_ci    }
9582add0d91Sopenharmony_ci}
9592add0d91Sopenharmony_ci
9602add0d91Sopenharmony_ciextern "C" {
9612add0d91Sopenharmony_ci    pub fn getrlimit(resource: ::c_int, rlim: *mut ::rlimit) -> ::c_int;
9622add0d91Sopenharmony_ci    pub fn setrlimit(resource: ::c_int, rlim: *const ::rlimit) -> ::c_int;
9632add0d91Sopenharmony_ci    pub fn strerror_r(errnum: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int;
9642add0d91Sopenharmony_ci
9652add0d91Sopenharmony_ci    pub fn sem_destroy(sem: *mut sem_t) -> ::c_int;
9662add0d91Sopenharmony_ci    pub fn sem_init(sem: *mut sem_t, pshared: ::c_int, value: ::c_uint) -> ::c_int;
9672add0d91Sopenharmony_ci
9682add0d91Sopenharmony_ci    pub fn abs(i: ::c_int) -> ::c_int;
9692add0d91Sopenharmony_ci    pub fn labs(i: ::c_long) -> ::c_long;
9702add0d91Sopenharmony_ci    pub fn rand() -> ::c_int;
9712add0d91Sopenharmony_ci    pub fn srand(seed: ::c_uint);
9722add0d91Sopenharmony_ci
9732add0d91Sopenharmony_ci    pub fn bind(s: ::c_int, name: *const ::sockaddr, namelen: ::socklen_t) -> ::c_int;
9742add0d91Sopenharmony_ci
9752add0d91Sopenharmony_ci    pub fn clock_gettime(clock_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;
9762add0d91Sopenharmony_ci
9772add0d91Sopenharmony_ci    pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::c_void) -> ::c_int;
9782add0d91Sopenharmony_ci    pub fn getpwuid_r(
9792add0d91Sopenharmony_ci        uid: ::uid_t,
9802add0d91Sopenharmony_ci        pwd: *mut passwd,
9812add0d91Sopenharmony_ci        buf: *mut ::c_char,
9822add0d91Sopenharmony_ci        buflen: ::size_t,
9832add0d91Sopenharmony_ci        result: *mut *mut passwd,
9842add0d91Sopenharmony_ci    ) -> ::c_int;
9852add0d91Sopenharmony_ci
9862add0d91Sopenharmony_ci    // Dummy
9872add0d91Sopenharmony_ci    pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
9882add0d91Sopenharmony_ci
9892add0d91Sopenharmony_ci    pub fn memalign(align: ::size_t, nbytes: ::size_t) -> *mut ::c_void;
9902add0d91Sopenharmony_ci
9912add0d91Sopenharmony_ci    pub fn pthread_create(
9922add0d91Sopenharmony_ci        tid: *mut ::pthread_t,
9932add0d91Sopenharmony_ci        attr: *const ::pthread_attr_t,
9942add0d91Sopenharmony_ci        start: extern "C" fn(*mut ::c_void) -> *mut ::c_void,
9952add0d91Sopenharmony_ci        arg: *mut ::c_void,
9962add0d91Sopenharmony_ci    ) -> ::c_int;
9972add0d91Sopenharmony_ci
9982add0d91Sopenharmony_ci    pub fn pthread_sigmask(how: ::c_int, set: *const ::sigset_t, oset: *mut ::sigset_t) -> ::c_int;
9992add0d91Sopenharmony_ci
10002add0d91Sopenharmony_ci    pub fn recvfrom(
10012add0d91Sopenharmony_ci        s: ::c_int,
10022add0d91Sopenharmony_ci        mem: *mut ::c_void,
10032add0d91Sopenharmony_ci        len: ::size_t,
10042add0d91Sopenharmony_ci        flags: ::c_int,
10052add0d91Sopenharmony_ci        from: *mut ::sockaddr,
10062add0d91Sopenharmony_ci        fromlen: *mut ::socklen_t,
10072add0d91Sopenharmony_ci    ) -> ::c_int;
10082add0d91Sopenharmony_ci
10092add0d91Sopenharmony_ci    pub fn setgroups(ngroups: ::c_int, grouplist: *const ::gid_t) -> ::c_int;
10102add0d91Sopenharmony_ci    pub fn uname(buf: *mut ::utsname) -> ::c_int;
10112add0d91Sopenharmony_ci}
10122add0d91Sopenharmony_ci
10132add0d91Sopenharmony_cicfg_if! {
10142add0d91Sopenharmony_ci    if #[cfg(target_arch = "aarch64")] {
10152add0d91Sopenharmony_ci        mod aarch64;
10162add0d91Sopenharmony_ci        pub use self::aarch64::*;
10172add0d91Sopenharmony_ci    } else if #[cfg(target_arch = "x86_64")] {
10182add0d91Sopenharmony_ci        mod x86_64;
10192add0d91Sopenharmony_ci        pub use self::x86_64::*;
10202add0d91Sopenharmony_ci    } else {
10212add0d91Sopenharmony_ci        // Unknown target_arch
10222add0d91Sopenharmony_ci    }
10232add0d91Sopenharmony_ci}
1024