|
| 1 | +use crate::prelude::*; |
| 2 | + |
| 3 | +pub type wchar_t = u32; |
| 4 | + |
| 5 | +pub type cpu_set_t = c_uint; |
| 6 | + |
| 7 | +s! { |
| 8 | + pub struct stat { |
| 9 | + pub st_dev: crate::dev_t, |
| 10 | + pub st_ino: crate::ino_t, |
| 11 | + pub st_mode: crate::mode_t, |
| 12 | + pub st_nlink: crate::nlink_t, |
| 13 | + pub st_uid: crate::uid_t, |
| 14 | + pub st_gid: crate::gid_t, |
| 15 | + pub st_rdev: crate::dev_t, |
| 16 | + pub st_size: crate::off_t, |
| 17 | + pub st_blksize: crate::blksize_t, |
| 18 | + pub st_blocks: crate::blkcnt_t, |
| 19 | + pub st_atime: crate::time_t, |
| 20 | + pub st_atime_nsec: c_long, |
| 21 | + pub st_mtime: crate::time_t, |
| 22 | + pub st_mtime_nsec: c_long, |
| 23 | + pub st_ctime: crate::time_t, |
| 24 | + pub st_ctime_nsec: c_long, |
| 25 | + } |
| 26 | + |
| 27 | + pub struct dirent { |
| 28 | + pub d_ino: crate::ino_t, |
| 29 | + pub d_type: c_uchar, |
| 30 | + pub d_name: [c_char; 256], |
| 31 | + } |
| 32 | +} |
| 33 | + |
| 34 | +// File type constants for stat.st_mode |
| 35 | +pub const S_IFMT: crate::mode_t = 0o170000; |
| 36 | +pub const S_IFSOCK: crate::mode_t = 0o140000; |
| 37 | +pub const S_IFLNK: crate::mode_t = 0o120000; |
| 38 | +pub const S_IFREG: crate::mode_t = 0o100000; |
| 39 | +pub const S_IFBLK: crate::mode_t = 0o060000; |
| 40 | +pub const S_IFDIR: crate::mode_t = 0o040000; |
| 41 | +pub const S_IFCHR: crate::mode_t = 0o020000; |
| 42 | +pub const S_IFIFO: crate::mode_t = 0o010000; |
| 43 | + |
| 44 | +// File permission constants |
| 45 | +pub const S_ISUID: crate::mode_t = 0o4000; |
| 46 | +pub const S_ISGID: crate::mode_t = 0o2000; |
| 47 | +pub const S_ISVTX: crate::mode_t = 0o1000; |
| 48 | +pub const S_IRWXU: crate::mode_t = 0o0700; |
| 49 | +pub const S_IRUSR: crate::mode_t = 0o0400; |
| 50 | +pub const S_IWUSR: crate::mode_t = 0o0200; |
| 51 | +pub const S_IXUSR: crate::mode_t = 0o0100; |
| 52 | +pub const S_IRWXG: crate::mode_t = 0o0070; |
| 53 | +pub const S_IRGRP: crate::mode_t = 0o0040; |
| 54 | +pub const S_IWGRP: crate::mode_t = 0o0020; |
| 55 | +pub const S_IXGRP: crate::mode_t = 0o0010; |
| 56 | +pub const S_IRWXO: crate::mode_t = 0o0007; |
| 57 | +pub const S_IROTH: crate::mode_t = 0o0004; |
| 58 | +pub const S_IWOTH: crate::mode_t = 0o0002; |
| 59 | +pub const S_IXOTH: crate::mode_t = 0o0001; |
| 60 | + |
| 61 | +// Directory entry types |
| 62 | +pub const DT_UNKNOWN: c_uchar = 0; |
| 63 | +pub const DT_FIFO: c_uchar = 1; |
| 64 | +pub const DT_CHR: c_uchar = 2; |
| 65 | +pub const DT_DIR: c_uchar = 4; |
| 66 | +pub const DT_BLK: c_uchar = 6; |
| 67 | +pub const DT_REG: c_uchar = 8; |
| 68 | +pub const DT_LNK: c_uchar = 10; |
| 69 | +pub const DT_SOCK: c_uchar = 12; |
| 70 | + |
| 71 | +// Size types |
| 72 | +pub const PAGESIZE: size_t = 4096; |
| 73 | +pub const PAGE_SIZE: size_t = 4096; |
| 74 | + |
| 75 | +// pathconf constants (from bits/confname.h) |
| 76 | +pub const _PC_LINK_MAX: c_int = 0; |
| 77 | +pub const _PC_MAX_CANON: c_int = 1; |
| 78 | +pub const _PC_MAX_INPUT: c_int = 2; |
| 79 | +pub const _PC_NAME_MAX: c_int = 3; |
| 80 | +pub const _PC_PATH_MAX: c_int = 4; |
| 81 | +pub const _PC_PIPE_BUF: c_int = 5; |
| 82 | +pub const _PC_CHOWN_RESTRICTED: c_int = 6; |
| 83 | +pub const _PC_NO_TRUNC: c_int = 7; |
| 84 | +pub const _PC_VDISABLE: c_int = 8; |
| 85 | +pub const _PC_SYNC_IO: c_int = 9; |
| 86 | +pub const _PC_ASYNC_IO: c_int = 10; |
| 87 | +pub const _PC_PRIO_IO: c_int = 11; |
| 88 | +pub const _PC_SOCK_MAXBUF: c_int = 12; |
| 89 | +pub const _PC_FILESIZEBITS: c_int = 13; |
| 90 | +pub const _PC_REC_INCR_XFER_SIZE: c_int = 14; |
| 91 | +pub const _PC_REC_MAX_XFER_SIZE: c_int = 15; |
| 92 | +pub const _PC_REC_MIN_XFER_SIZE: c_int = 16; |
| 93 | +pub const _PC_REC_XFER_ALIGN: c_int = 17; |
| 94 | +pub const _PC_ALLOC_SIZE_MIN: c_int = 18; |
| 95 | +pub const _PC_SYMLINK_MAX: c_int = 19; |
| 96 | +pub const _PC_2_SYMLINKS: c_int = 20; |
| 97 | + |
| 98 | +// sysconf constants (from bits/confname.h) |
| 99 | +pub const _SC_ARG_MAX: c_int = 0; |
| 100 | +pub const _SC_CHILD_MAX: c_int = 1; |
| 101 | +pub const _SC_CLK_TCK: c_int = 2; |
| 102 | +pub const _SC_NGROUPS_MAX: c_int = 3; |
| 103 | +pub const _SC_OPEN_MAX: c_int = 4; |
| 104 | +pub const _SC_STREAM_MAX: c_int = 5; |
| 105 | +pub const _SC_TZNAME_MAX: c_int = 6; |
| 106 | +pub const _SC_JOB_CONTROL: c_int = 7; |
| 107 | +pub const _SC_SAVED_IDS: c_int = 8; |
| 108 | +pub const _SC_REALTIME_SIGNALS: c_int = 9; |
| 109 | +pub const _SC_PRIORITY_SCHEDULING: c_int = 10; |
| 110 | +pub const _SC_TIMERS: c_int = 11; |
| 111 | +pub const _SC_ASYNCHRONOUS_IO: c_int = 12; |
| 112 | +pub const _SC_PRIORITIZED_IO: c_int = 13; |
| 113 | +pub const _SC_SYNCHRONIZED_IO: c_int = 14; |
| 114 | +pub const _SC_FSYNC: c_int = 15; |
| 115 | +pub const _SC_MAPPED_FILES: c_int = 16; |
| 116 | +pub const _SC_MEMLOCK: c_int = 17; |
| 117 | +pub const _SC_MEMLOCK_RANGE: c_int = 18; |
| 118 | +pub const _SC_MEMORY_PROTECTION: c_int = 19; |
| 119 | +pub const _SC_MESSAGE_PASSING: c_int = 20; |
| 120 | +pub const _SC_SEMAPHORES: c_int = 21; |
| 121 | +pub const _SC_SHARED_MEMORY_OBJECTS: c_int = 22; |
| 122 | +pub const _SC_AIO_LISTIO_MAX: c_int = 23; |
| 123 | +pub const _SC_AIO_MAX: c_int = 24; |
| 124 | +pub const _SC_AIO_PRIO_DELTA_MAX: c_int = 25; |
| 125 | +pub const _SC_DELAYTIMER_MAX: c_int = 26; |
| 126 | +pub const _SC_MQ_OPEN_MAX: c_int = 27; |
| 127 | +pub const _SC_MQ_PRIO_MAX: c_int = 28; |
| 128 | +pub const _SC_VERSION: c_int = 29; |
| 129 | +pub const _SC_PAGESIZE: c_int = 30; |
| 130 | +pub const _SC_PAGE_SIZE: c_int = _SC_PAGESIZE; |
| 131 | +pub const _SC_RTSIG_MAX: c_int = 31; |
| 132 | +pub const _SC_SEM_NSEMS_MAX: c_int = 32; |
| 133 | +pub const _SC_SEM_VALUE_MAX: c_int = 33; |
| 134 | +pub const _SC_SIGQUEUE_MAX: c_int = 34; |
| 135 | +pub const _SC_TIMER_MAX: c_int = 35; |
| 136 | + |
| 137 | +// POSIX2 sysconf options |
| 138 | +pub const _SC_BC_BASE_MAX: c_int = 36; |
| 139 | +pub const _SC_BC_DIM_MAX: c_int = 37; |
| 140 | +pub const _SC_BC_SCALE_MAX: c_int = 38; |
| 141 | +pub const _SC_BC_STRING_MAX: c_int = 39; |
| 142 | +pub const _SC_COLL_WEIGHTS_MAX: c_int = 40; |
| 143 | +pub const _SC_EQUIV_CLASS_MAX: c_int = 41; |
| 144 | +pub const _SC_EXPR_NEST_MAX: c_int = 42; |
| 145 | +pub const _SC_LINE_MAX: c_int = 43; |
| 146 | +pub const _SC_RE_DUP_MAX: c_int = 44; |
| 147 | +pub const _SC_CHARCLASS_NAME_MAX: c_int = 45; |
| 148 | + |
| 149 | +pub const _SC_2_VERSION: c_int = 46; |
| 150 | +pub const _SC_2_C_BIND: c_int = 47; |
| 151 | +pub const _SC_2_C_DEV: c_int = 48; |
| 152 | +pub const _SC_2_FORT_DEV: c_int = 49; |
| 153 | +pub const _SC_2_FORT_RUN: c_int = 50; |
| 154 | +pub const _SC_2_SW_DEV: c_int = 51; |
| 155 | +pub const _SC_2_LOCALEDEF: c_int = 52; |
| 156 | + |
| 157 | +pub const _SC_PII: c_int = 53; |
| 158 | +pub const _SC_PII_XTI: c_int = 54; |
| 159 | +pub const _SC_PII_SOCKET: c_int = 55; |
| 160 | +pub const _SC_PII_INTERNET: c_int = 56; |
| 161 | +pub const _SC_PII_OSI: c_int = 57; |
| 162 | +pub const _SC_POLL: c_int = 58; |
| 163 | +pub const _SC_SELECT: c_int = 59; |
| 164 | +pub const _SC_UIO_MAXIOV: c_int = 60; |
| 165 | +pub const _SC_IOV_MAX: c_int = _SC_UIO_MAXIOV; |
| 166 | +pub const _SC_PII_INTERNET_STREAM: c_int = 61; |
| 167 | +pub const _SC_PII_INTERNET_DGRAM: c_int = 62; |
| 168 | +pub const _SC_PII_OSI_COTS: c_int = 63; |
| 169 | +pub const _SC_PII_OSI_CLTS: c_int = 64; |
| 170 | +pub const _SC_PII_OSI_M: c_int = 65; |
| 171 | +pub const _SC_T_IOV_MAX: c_int = 66; |
| 172 | + |
| 173 | +// POSIX threads sysconf options |
| 174 | +pub const _SC_THREADS: c_int = 67; |
| 175 | +pub const _SC_THREAD_SAFE_FUNCTIONS: c_int = 68; |
| 176 | +pub const _SC_GETGR_R_SIZE_MAX: c_int = 69; |
| 177 | +pub const _SC_GETPW_R_SIZE_MAX: c_int = 70; |
| 178 | +pub const _SC_LOGIN_NAME_MAX: c_int = 71; |
| 179 | +pub const _SC_TTY_NAME_MAX: c_int = 72; |
| 180 | +pub const _SC_THREAD_DESTRUCTOR_ITERATIONS: c_int = 73; |
| 181 | +pub const _SC_THREAD_KEYS_MAX: c_int = 74; |
| 182 | +pub const _SC_THREAD_STACK_MIN: c_int = 75; |
| 183 | +pub const _SC_THREAD_THREADS_MAX: c_int = 76; |
| 184 | +pub const _SC_THREAD_ATTR_STACKADDR: c_int = 77; |
| 185 | +pub const _SC_THREAD_ATTR_STACKSIZE: c_int = 78; |
| 186 | +pub const _SC_THREAD_PRIORITY_SCHEDULING: c_int = 79; |
| 187 | +pub const _SC_THREAD_PRIO_INHERIT: c_int = 80; |
| 188 | +pub const _SC_THREAD_PRIO_PROTECT: c_int = 81; |
| 189 | +pub const _SC_THREAD_PROCESS_SHARED: c_int = 82; |
| 190 | + |
| 191 | +pub const _SC_NPROCESSORS_CONF: c_int = 83; |
| 192 | +pub const _SC_NPROCESSORS_ONLN: c_int = 84; |
| 193 | +pub const _SC_PHYS_PAGES: c_int = 85; |
| 194 | +pub const _SC_AVPHYS_PAGES: c_int = 86; |
| 195 | +pub const _SC_ATEXIT_MAX: c_int = 87; |
| 196 | +pub const _SC_PASS_MAX: c_int = 88; |
| 197 | + |
| 198 | +pub const _SC_XOPEN_VERSION: c_int = 89; |
| 199 | +pub const _SC_XOPEN_XCU_VERSION: c_int = 90; |
| 200 | +pub const _SC_XOPEN_UNIX: c_int = 91; |
| 201 | +pub const _SC_XOPEN_CRYPT: c_int = 92; |
| 202 | +pub const _SC_XOPEN_ENH_I18N: c_int = 93; |
| 203 | +pub const _SC_XOPEN_SHM: c_int = 94; |
| 204 | + |
| 205 | +pub const _SC_2_CHAR_TERM: c_int = 95; |
| 206 | +pub const _SC_2_C_VERSION: c_int = 96; |
| 207 | +pub const _SC_2_UPE: c_int = 97; |
| 208 | + |
| 209 | +pub const _SC_XOPEN_XPG2: c_int = 98; |
| 210 | +pub const _SC_XOPEN_XPG3: c_int = 99; |
| 211 | +pub const _SC_XOPEN_XPG4: c_int = 100; |
| 212 | + |
| 213 | +pub const _SC_CHAR_BIT: c_int = 101; |
| 214 | +pub const _SC_CHAR_MAX: c_int = 102; |
| 215 | +pub const _SC_CHAR_MIN: c_int = 103; |
| 216 | +pub const _SC_INT_MAX: c_int = 104; |
| 217 | +pub const _SC_INT_MIN: c_int = 105; |
| 218 | +pub const _SC_LONG_BIT: c_int = 106; |
| 219 | +pub const _SC_WORD_BIT: c_int = 107; |
| 220 | +pub const _SC_MB_LEN_MAX: c_int = 108; |
| 221 | +pub const _SC_NZERO: c_int = 109; |
| 222 | +pub const _SC_SSIZE_MAX: c_int = 110; |
| 223 | +pub const _SC_SCHAR_MAX: c_int = 111; |
| 224 | +pub const _SC_SCHAR_MIN: c_int = 112; |
| 225 | +pub const _SC_SHRT_MAX: c_int = 113; |
| 226 | +pub const _SC_SHRT_MIN: c_int = 114; |
| 227 | +pub const _SC_UCHAR_MAX: c_int = 115; |
| 228 | +pub const _SC_UINT_MAX: c_int = 116; |
| 229 | +pub const _SC_ULONG_MAX: c_int = 117; |
| 230 | +pub const _SC_USHRT_MAX: c_int = 118; |
| 231 | + |
| 232 | +pub const _SC_NL_ARGMAX: c_int = 119; |
| 233 | +pub const _SC_NL_LANGMAX: c_int = 120; |
| 234 | +pub const _SC_NL_MSGMAX: c_int = 121; |
| 235 | +pub const _SC_NL_NMAX: c_int = 122; |
| 236 | +pub const _SC_NL_SETMAX: c_int = 123; |
| 237 | +pub const _SC_NL_TEXTMAX: c_int = 124; |
| 238 | + |
| 239 | +pub const _SC_XBS5_ILP32_OFF32: c_int = 125; |
| 240 | +pub const _SC_XBS5_ILP32_OFFBIG: c_int = 126; |
| 241 | +pub const _SC_XBS5_LP64_OFF64: c_int = 127; |
| 242 | +pub const _SC_XBS5_LPBIG_OFFBIG: c_int = 128; |
| 243 | + |
| 244 | +pub const _SC_XOPEN_LEGACY: c_int = 129; |
| 245 | +pub const _SC_XOPEN_REALTIME: c_int = 130; |
| 246 | +pub const _SC_XOPEN_REALTIME_THREADS: c_int = 131; |
| 247 | + |
| 248 | +pub const _SC_ADVISORY_INFO: c_int = 132; |
| 249 | +pub const _SC_BARRIERS: c_int = 133; |
| 250 | +pub const _SC_BASE: c_int = 134; |
| 251 | +pub const _SC_C_LANG_SUPPORT: c_int = 135; |
| 252 | +pub const _SC_C_LANG_SUPPORT_R: c_int = 136; |
| 253 | +pub const _SC_CLOCK_SELECTION: c_int = 137; |
| 254 | +pub const _SC_CPUTIME: c_int = 138; |
| 255 | +pub const _SC_THREAD_CPUTIME: c_int = 139; |
| 256 | +pub const _SC_DEVICE_IO: c_int = 140; |
| 257 | +pub const _SC_DEVICE_SPECIFIC: c_int = 141; |
| 258 | +pub const _SC_DEVICE_SPECIFIC_R: c_int = 142; |
| 259 | +pub const _SC_FD_MGMT: c_int = 143; |
| 260 | +pub const _SC_FIFO: c_int = 144; |
| 261 | +pub const _SC_PIPE: c_int = 145; |
| 262 | +pub const _SC_FILE_ATTRIBUTES: c_int = 146; |
| 263 | +pub const _SC_FILE_LOCKING: c_int = 147; |
| 264 | +pub const _SC_FILE_SYSTEM: c_int = 148; |
| 265 | +pub const _SC_MONOTONIC_CLOCK: c_int = 149; |
| 266 | +pub const _SC_MULTI_PROCESS: c_int = 150; |
| 267 | +pub const _SC_SINGLE_PROCESS: c_int = 151; |
| 268 | +pub const _SC_NETWORKING: c_int = 152; |
| 269 | +pub const _SC_READER_WRITER_LOCKS: c_int = 153; |
| 270 | +pub const _SC_SPIN_LOCKS: c_int = 154; |
| 271 | +pub const _SC_REGEXP: c_int = 155; |
| 272 | +pub const _SC_REGEX_VERSION: c_int = 156; |
| 273 | +pub const _SC_SHELL: c_int = 157; |
| 274 | +pub const _SC_SIGNALS: c_int = 158; |
| 275 | +pub const _SC_SPAWN: c_int = 159; |
| 276 | +pub const _SC_SPORADIC_SERVER: c_int = 160; |
| 277 | +pub const _SC_THREAD_SPORADIC_SERVER: c_int = 161; |
| 278 | +pub const _SC_SYSTEM_DATABASE: c_int = 162; |
| 279 | +pub const _SC_SYSTEM_DATABASE_R: c_int = 163; |
| 280 | +pub const _SC_TIMEOUTS: c_int = 164; |
| 281 | +pub const _SC_TYPED_MEMORY_OBJECTS: c_int = 165; |
| 282 | +pub const _SC_USER_GROUPS: c_int = 166; |
| 283 | +pub const _SC_USER_GROUPS_R: c_int = 167; |
| 284 | +pub const _SC_2_PBS: c_int = 168; |
| 285 | +pub const _SC_2_PBS_ACCOUNTING: c_int = 169; |
| 286 | +pub const _SC_2_PBS_LOCATE: c_int = 170; |
| 287 | +pub const _SC_2_PBS_MESSAGE: c_int = 171; |
| 288 | +pub const _SC_2_PBS_TRACK: c_int = 172; |
| 289 | +pub const _SC_SYMLOOP_MAX: c_int = 173; |
| 290 | +pub const _SC_STREAMS: c_int = 174; |
| 291 | +pub const _SC_2_PBS_CHECKPOINT: c_int = 175; |
| 292 | + |
| 293 | +pub const _SC_V6_ILP32_OFF32: c_int = 176; |
| 294 | +pub const _SC_V6_ILP32_OFFBIG: c_int = 177; |
| 295 | +pub const _SC_V6_LP64_OFF64: c_int = 178; |
| 296 | +pub const _SC_V6_LPBIG_OFFBIG: c_int = 179; |
| 297 | + |
| 298 | +pub const _SC_HOST_NAME_MAX: c_int = 180; |
| 299 | +pub const _SC_TRACE: c_int = 181; |
| 300 | +pub const _SC_TRACE_EVENT_FILTER: c_int = 182; |
| 301 | +pub const _SC_TRACE_INHERIT: c_int = 183; |
| 302 | +pub const _SC_TRACE_LOG: c_int = 184; |
| 303 | + |
| 304 | +pub const _SC_LEVEL1_ICACHE_SIZE: c_int = 185; |
| 305 | +pub const _SC_LEVEL1_ICACHE_ASSOC: c_int = 186; |
| 306 | +pub const _SC_LEVEL1_ICACHE_LINESIZE: c_int = 187; |
| 307 | +pub const _SC_LEVEL1_DCACHE_SIZE: c_int = 188; |
| 308 | +pub const _SC_LEVEL1_DCACHE_ASSOC: c_int = 189; |
| 309 | +pub const _SC_LEVEL1_DCACHE_LINESIZE: c_int = 190; |
| 310 | +pub const _SC_LEVEL2_CACHE_SIZE: c_int = 191; |
| 311 | +pub const _SC_LEVEL2_CACHE_ASSOC: c_int = 192; |
| 312 | +pub const _SC_LEVEL2_CACHE_LINESIZE: c_int = 193; |
| 313 | +pub const _SC_LEVEL3_CACHE_SIZE: c_int = 194; |
| 314 | +pub const _SC_LEVEL3_CACHE_ASSOC: c_int = 195; |
| 315 | +pub const _SC_LEVEL3_CACHE_LINESIZE: c_int = 196; |
| 316 | +pub const _SC_LEVEL4_CACHE_SIZE: c_int = 197; |
| 317 | +pub const _SC_LEVEL4_CACHE_ASSOC: c_int = 198; |
| 318 | +pub const _SC_LEVEL4_CACHE_LINESIZE: c_int = 199; |
| 319 | + |
| 320 | +pub const _SC_IPV6: c_int = 235; |
| 321 | +pub const _SC_RAW_SOCKETS: c_int = 236; |
| 322 | + |
| 323 | +pub const _SC_V7_ILP32_OFF32: c_int = 237; |
| 324 | +pub const _SC_V7_ILP32_OFFBIG: c_int = 238; |
| 325 | +pub const _SC_V7_LP64_OFF64: c_int = 239; |
| 326 | +pub const _SC_V7_LPBIG_OFFBIG: c_int = 240; |
| 327 | + |
| 328 | +pub const _SC_SS_REPL_MAX: c_int = 241; |
| 329 | + |
| 330 | +pub const _SC_TRACE_EVENT_NAME_MAX: c_int = 242; |
| 331 | +pub const _SC_TRACE_NAME_MAX: c_int = 243; |
| 332 | +pub const _SC_TRACE_SYS_MAX: c_int = 244; |
| 333 | +pub const _SC_TRACE_USER_EVENT_MAX: c_int = 245; |
| 334 | + |
| 335 | +pub const _SC_XOPEN_STREAMS: c_int = 246; |
| 336 | + |
| 337 | +pub const _SC_THREAD_ROBUST_PRIO_INHERIT: c_int = 247; |
| 338 | +pub const _SC_THREAD_ROBUST_PRIO_PROTECT: c_int = 248; |
| 339 | + |
| 340 | +// Note: QuRT doesn't use traditional syscalls but has its own API |
0 commit comments