| ... | ... | @@ -174,6 +174,7 @@ pub const blksize_t = switch (native_os) { |
| 174 | 174 | .emscripten => emscripten.blksize_t, |
| 175 | 175 | // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L42 |
| 176 | 176 | .serenity => u64, |
| 177 | .dragonfly => i64, |
| 177 | 178 | else => i32, |
| 178 | 179 | }; |
| 179 | 180 | |
| ... | ... | @@ -217,7 +218,7 @@ pub const passwd = switch (native_os) { |
| 217 | 218 | }; |
| 218 | 219 | |
| 219 | 220 | pub const group = switch (native_os) { |
| 220 | | .linux, .freebsd, .openbsd, .dragonfly, .netbsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { |
| 221 | .linux, .freebsd, .openbsd, .dragonfly, .netbsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .serenity => extern struct { |
| 221 | 222 | name: ?[*:0]const u8, |
| 222 | 223 | passwd: ?[*:0]const u8, |
| 223 | 224 | gid: gid_t, |
| ... | ... | @@ -318,7 +319,7 @@ pub const clockid_t = switch (native_os) { |
| 318 | 319 | THREAD_CPUTIME_ID = 0x20000000, |
| 319 | 320 | PROCESS_CPUTIME_ID = 0x40000000, |
| 320 | 321 | }, |
| 321 | | .dragonfly => enum(u32) { |
| 322 | .dragonfly => enum(c_ulong) { |
| 322 | 323 | REALTIME = 0, |
| 323 | 324 | VIRTUAL = 1, |
| 324 | 325 | PROF = 2, |
| ... | ... | @@ -1978,13 +1979,20 @@ pub const RLIM = switch (native_os) { |
| 1978 | 1979 | .linux => linux.RLIM, |
| 1979 | 1980 | .emscripten => emscripten.RLIM, |
| 1980 | 1981 | // https://github.com/SerenityOS/serenity/blob/aae106e37b48f2158e68902293df1e4bf7b80c0f/Userland/Libraries/LibC/sys/resource.h#L52 |
| 1981 | | .openbsd, .haiku, .dragonfly, .netbsd, .freebsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .serenity => struct { |
| 1982 | .openbsd, .dragonfly, .netbsd, .freebsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .serenity => struct { |
| 1982 | 1983 | /// No limit |
| 1983 | 1984 | pub const INFINITY: rlim_t = (1 << 63) - 1; |
| 1984 | 1985 | |
| 1985 | 1986 | pub const SAVED_MAX = INFINITY; |
| 1986 | 1987 | pub const SAVED_CUR = INFINITY; |
| 1987 | 1988 | }, |
| 1989 | .haiku => struct { |
| 1990 | /// No limit |
| 1991 | pub const INFINITY: rlim_t = 0xffffffff; |
| 1992 | |
| 1993 | pub const SAVED_MAX = INFINITY; |
| 1994 | pub const SAVED_CUR = INFINITY; |
| 1995 | }, |
| 1988 | 1996 | .illumos => struct { |
| 1989 | 1997 | /// No limit |
| 1990 | 1998 | pub const INFINITY: rlim_t = (1 << 63) - 3; |
| ... | ... | @@ -4085,6 +4093,10 @@ pub const clock_t = switch (native_os) { |
| 4085 | 4093 | pub const cpu_set_t = switch (native_os) { |
| 4086 | 4094 | .linux => linux.cpu_set_t, |
| 4087 | 4095 | .emscripten => emscripten.cpu_set_t, |
| 4096 | .dragonfly => extern struct { |
| 4097 | ary: [4]u64, |
| 4098 | }, |
| 4099 | .freebsd => [1024 / @bitSizeOf(c_ulong)]c_ulong, |
| 4088 | 4100 | else => void, |
| 4089 | 4101 | }; |
| 4090 | 4102 | pub const dl_phdr_info = switch (native_os) { |
| ... | ... | @@ -4320,6 +4332,10 @@ const posix_msghdr_const = extern struct { |
| 4320 | 4332 | }; |
| 4321 | 4333 | |
| 4322 | 4334 | pub const mmsghdr = switch (native_os) { |
| 4335 | .freebsd => extern struct { |
| 4336 | hdr: msghdr, |
| 4337 | len: isize, |
| 4338 | }, |
| 4323 | 4339 | .linux => linux.mmsghdr, |
| 4324 | 4340 | else => extern struct { |
| 4325 | 4341 | hdr: msghdr, |
| ... | ... | @@ -4470,7 +4486,8 @@ pub const rlim_t = switch (native_os) { |
| 4470 | 4486 | .linux => linux.rlim_t, |
| 4471 | 4487 | .emscripten => emscripten.rlim_t, |
| 4472 | 4488 | .openbsd, .netbsd, .illumos, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => u64, |
| 4473 | | .haiku, .dragonfly, .freebsd => i64, |
| 4489 | .dragonfly, .freebsd => i64, |
| 4490 | .haiku => c_ulong, |
| 4474 | 4491 | // https://github.com/SerenityOS/serenity/blob/aae106e37b48f2158e68902293df1e4bf7b80c0f/Userland/Libraries/LibC/sys/resource.h#L54 |
| 4475 | 4492 | .serenity => usize, |
| 4476 | 4493 | else => void, |
| ... | ... | @@ -4840,12 +4857,15 @@ pub const siginfo_t = switch (native_os) { |
| 4840 | 4857 | }, |
| 4841 | 4858 | .haiku => extern struct { |
| 4842 | 4859 | signo: SIG, |
| 4843 | | code: i32, |
| 4844 | | errno: i32, |
| 4860 | code: c_int, |
| 4861 | errno: c_int, |
| 4845 | 4862 | |
| 4846 | 4863 | pid: pid_t, |
| 4847 | 4864 | uid: uid_t, |
| 4848 | 4865 | addr: *allowzero anyopaque, |
| 4866 | status: c_int, |
| 4867 | band: c_long, |
| 4868 | value: sigval, |
| 4849 | 4869 | }, |
| 4850 | 4870 | .openbsd => extern struct { |
| 4851 | 4871 | signo: SIG, |
| ... | ... | @@ -4854,9 +4874,9 @@ pub const siginfo_t = switch (native_os) { |
| 4854 | 4874 | data: extern union { |
| 4855 | 4875 | proc: extern struct { |
| 4856 | 4876 | pid: pid_t, |
| 4877 | uid: uid_t, |
| 4857 | 4878 | pdata: extern union { |
| 4858 | 4879 | kill: extern struct { |
| 4859 | | uid: uid_t, |
| 4860 | 4880 | value: sigval, |
| 4861 | 4881 | }, |
| 4862 | 4882 | cld: extern struct { |
| ... | ... | @@ -4904,7 +4924,7 @@ pub const sigset_t = switch (native_os) { |
| 4904 | 4924 | pub const sigval = switch (native_os) { |
| 4905 | 4925 | .linux => linux.sigval, |
| 4906 | 4926 | // https://github.com/SerenityOS/serenity/blob/ec492a1a0819e6239ea44156825c4ee7234ca3db/Kernel/API/POSIX/signal.h#L22-L25 |
| 4907 | | .openbsd, .dragonfly, .freebsd, .serenity => extern union { |
| 4927 | .openbsd, .dragonfly, .freebsd, .haiku, .serenity => extern union { |
| 4908 | 4928 | int: c_int, |
| 4909 | 4929 | ptr: ?*anyopaque, |
| 4910 | 4930 | }, |
| ... | ... | @@ -5205,7 +5225,7 @@ pub const sockaddr = switch (native_os) { |
| 5205 | 5225 | /// address family |
| 5206 | 5226 | family: sa_family_t, |
| 5207 | 5227 | /// actually longer; address value |
| 5208 | | data: [14]u8, |
| 5228 | data: [30]u8, |
| 5209 | 5229 | |
| 5210 | 5230 | pub const SS_MAXSIZE = 128; |
| 5211 | 5231 | pub const storage = extern struct { |
| ... | ... | @@ -5224,7 +5244,7 @@ pub const sockaddr = switch (native_os) { |
| 5224 | 5244 | family: sa_family_t = AF.INET, |
| 5225 | 5245 | port: in_port_t, |
| 5226 | 5246 | addr: u32, |
| 5227 | | zero: [8]u8 = [8]u8{ 0, 0, 0, 0, 0, 0, 0, 0 }, |
| 5247 | zero: [24]u8 = @splat(0), |
| 5228 | 5248 | }; |
| 5229 | 5249 | |
| 5230 | 5250 | pub const in6 = extern struct { |
| ... | ... | @@ -5239,7 +5259,7 @@ pub const sockaddr = switch (native_os) { |
| 5239 | 5259 | pub const un = extern struct { |
| 5240 | 5260 | len: u8 = @sizeOf(un), |
| 5241 | 5261 | family: sa_family_t = AF.UNIX, |
| 5242 | | path: [104]u8, |
| 5262 | path: [126]u8, |
| 5243 | 5263 | }; |
| 5244 | 5264 | }, |
| 5245 | 5265 | .openbsd => extern struct { |
| ... | ... | @@ -5738,7 +5758,7 @@ pub const PF = if (builtin.abi.isAndroid()) struct { |
| 5738 | 5758 | pub const PIP = AF.pseudo_PIP; |
| 5739 | 5759 | pub const ISDN = AF.ISDN; |
| 5740 | 5760 | pub const KEY = AF.pseudo_KEY; |
| 5741 | | pub const INET6 = AF.pseudo_INET6; |
| 5761 | pub const INET6 = AF.INET6; |
| 5742 | 5762 | pub const NATM = AF.NATM; |
| 5743 | 5763 | pub const ATM = AF.ATM; |
| 5744 | 5764 | pub const NETGRAPH = AF.NETGRAPH; |
| ... | ... | @@ -7222,7 +7242,7 @@ pub const utsname = switch (native_os) { |
| 7222 | 7242 | machine: [256:0]u8, |
| 7223 | 7243 | domainname: [256:0]u8, |
| 7224 | 7244 | }, |
| 7225 | | .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { |
| 7245 | .openbsd, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct { |
| 7226 | 7246 | sysname: [255:0]u8, |
| 7227 | 7247 | nodename: [255:0]u8, |
| 7228 | 7248 | release: [255:0]u8, |
| ... | ... | @@ -7337,13 +7357,12 @@ pub const RTLD = switch (native_os) { |
| 7337 | 7357 | }, |
| 7338 | 7358 | // https://github.com/SerenityOS/serenity/blob/36a26d7fa80bc9c72b19442912d8967f448368ff/Userland/Libraries/LibC/dlfcn.h#L13-L17 |
| 7339 | 7359 | .serenity => packed struct(c_int) { |
| 7340 | | DEFAULT: bool = false, |
| 7341 | | _1: u1, |
| 7360 | _0: u1, |
| 7342 | 7361 | LAZY: bool = false, |
| 7343 | 7362 | NOW: bool = false, |
| 7344 | 7363 | GLOBAL: bool = false, |
| 7345 | 7364 | LOCAL: bool = false, |
| 7346 | | _: @Int(.unsigned, @bitSizeOf(c_int) - 6) = 0, |
| 7365 | _: @Int(.unsigned, @bitSizeOf(c_int) - 5) = 0, |
| 7347 | 7366 | }, |
| 7348 | 7367 | else => void, |
| 7349 | 7368 | }; |
| ... | ... | @@ -7884,11 +7903,11 @@ pub const Stat = switch (native_os) { |
| 7884 | 7903 | ctim: timespec, |
| 7885 | 7904 | size: c_ulong, |
| 7886 | 7905 | blocks: i64, |
| 7887 | | blksize: u32, |
| 7906 | _old_blksize: u32, |
| 7888 | 7907 | flags: u32, |
| 7889 | 7908 | gen: u32, |
| 7890 | 7909 | lspare: i32, |
| 7891 | | qspare1: i64, |
| 7910 | blksize: blksize_t, |
| 7892 | 7911 | qspare2: i64, |
| 7893 | 7912 | pub fn atime(self: @This()) timespec { |
| 7894 | 7913 | return self.atim; |
| ... | ... | @@ -7999,7 +8018,7 @@ pub const Stat = switch (native_os) { |
| 7999 | 8018 | |
| 8000 | 8019 | pub const pthread_spinlock_t = switch (native_os) { |
| 8001 | 8020 | .openbsd => openbsd.pthread_spinlock_t, |
| 8002 | | .freebsd => extern struct { |
| 8021 | .freebsd, .dragonfly => extern struct { |
| 8003 | 8022 | inner: ?*anyopaque = null, |
| 8004 | 8023 | }, |
| 8005 | 8024 | .netbsd => extern struct { |
| ... | ... | @@ -8182,7 +8201,7 @@ pub const pthread_rwlock_t = switch (native_os) { |
| 8182 | 8201 | }; |
| 8183 | 8202 | |
| 8184 | 8203 | pub const pthread_attr_t = switch (native_os) { |
| 8185 | | .linux, .emscripten, .dragonfly => extern struct { |
| 8204 | .linux, .emscripten => extern struct { |
| 8186 | 8205 | __size: [56]u8, |
| 8187 | 8206 | __align: c_long, |
| 8188 | 8207 | }, |
| ... | ... | @@ -8191,7 +8210,7 @@ pub const pthread_attr_t = switch (native_os) { |
| 8191 | 8210 | __opaque: [56]u8, |
| 8192 | 8211 | }, |
| 8193 | 8212 | // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L75 |
| 8194 | | .freebsd, .openbsd, .serenity => extern struct { |
| 8213 | .dragonfly, .freebsd, .haiku, .openbsd, .serenity => extern struct { |
| 8195 | 8214 | inner: ?*anyopaque = null, |
| 8196 | 8215 | }, |
| 8197 | 8216 | .illumos => extern struct { |
| ... | ... | @@ -8202,13 +8221,6 @@ pub const pthread_attr_t = switch (native_os) { |
| 8202 | 8221 | flags: i32, |
| 8203 | 8222 | private: ?*anyopaque, |
| 8204 | 8223 | }, |
| 8205 | | .haiku => extern struct { |
| 8206 | | detach_state: i32, |
| 8207 | | sched_priority: i32, |
| 8208 | | stack_size: i32, |
| 8209 | | guard_size: i32, |
| 8210 | | stack_address: ?*anyopaque, |
| 8211 | | }, |
| 8212 | 8224 | else => void, |
| 8213 | 8225 | }; |
| 8214 | 8226 | |
| ... | ... | @@ -8216,7 +8228,7 @@ pub const pthread_key_t = switch (native_os) { |
| 8216 | 8228 | .linux, .emscripten => c_uint, |
| 8217 | 8229 | .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => c_ulong, |
| 8218 | 8230 | // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L65 |
| 8219 | | .openbsd, .illumos, .serenity => c_int, |
| 8231 | .dragonfly, .freebsd, .openbsd, .haiku, .illumos, .serenity => c_int, |
| 8220 | 8232 | else => void, |
| 8221 | 8233 | }; |
| 8222 | 8234 | |
| ... | ... | @@ -9033,12 +9045,16 @@ pub const termios = switch (native_os) { |
| 9033 | 9045 | }, |
| 9034 | 9046 | .haiku => extern struct { |
| 9035 | 9047 | iflag: tc_iflag_t, |
| 9048 | ispeed: u16, |
| 9036 | 9049 | oflag: tc_oflag_t, |
| 9050 | ospeed: u16, |
| 9037 | 9051 | cflag: tc_cflag_t, |
| 9052 | ispeed_high: u16, |
| 9038 | 9053 | lflag: tc_lflag_t, |
| 9054 | ospeed_high: u16, |
| 9039 | 9055 | line: cc_t, |
| 9040 | | ispeed: speed_t, |
| 9041 | | ospeed: speed_t, |
| 9056 | _pad1: u8 = 0, |
| 9057 | _pad2: u8 = 0, |
| 9042 | 9058 | cc: [NCCS]cc_t, |
| 9043 | 9059 | }, |
| 9044 | 9060 | .illumos => extern struct { |
| ... | ... | @@ -9115,7 +9131,7 @@ pub const tc_iflag_t = switch (native_os) { |
| 9115 | 9131 | IMAXBEL: bool = false, |
| 9116 | 9132 | _: u18 = 0, |
| 9117 | 9133 | }, |
| 9118 | | .haiku => packed struct(u32) { |
| 9134 | .haiku => packed struct(u16) { |
| 9119 | 9135 | IGNBRK: bool = false, |
| 9120 | 9136 | BRKINT: bool = false, |
| 9121 | 9137 | IGNPAR: bool = false, |
| ... | ... | @@ -9129,7 +9145,7 @@ pub const tc_iflag_t = switch (native_os) { |
| 9129 | 9145 | IXON: bool = false, |
| 9130 | 9146 | IXANY: bool = false, |
| 9131 | 9147 | IXOFF: bool = false, |
| 9132 | | _: u19 = 0, |
| 9148 | _: u3 = 0, |
| 9133 | 9149 | }, |
| 9134 | 9150 | .illumos => packed struct(u32) { |
| 9135 | 9151 | IGNBRK: bool = false, |
| ... | ... | @@ -9243,8 +9259,24 @@ pub const tc_oflag_t = switch (native_os) { |
| 9243 | 9259 | WRAP: bool = false, |
| 9244 | 9260 | _: u14 = 0, |
| 9245 | 9261 | }, |
| 9262 | .haiku => packed struct(u16) { |
| 9263 | OPOST: bool = false, |
| 9264 | OLCUC: bool = false, |
| 9265 | ONLCR: bool = false, |
| 9266 | OCRNL: bool = false, |
| 9267 | ONOCR: bool = false, |
| 9268 | ONLRET: bool = false, |
| 9269 | OFILL: bool = false, |
| 9270 | OFDEL: bool = false, |
| 9271 | NLDLY: u1 = 0, |
| 9272 | CRDLY: u2 = 0, |
| 9273 | TABDLY: u2 = 0, |
| 9274 | BSDLY: u1 = 0, |
| 9275 | VTDLY: u1 = 0, |
| 9276 | FFDLY: u1 = 0, |
| 9277 | }, |
| 9246 | 9278 | // https://github.com/SerenityOS/serenity/blob/d277cdfd4c7ed21d5248a83217ae03b9f890c3c8/Kernel/API/POSIX/termios.h#L69-L97 |
| 9247 | | .haiku, .emscripten, .serenity => packed struct(u32) { |
| 9279 | .emscripten, .serenity => packed struct(u32) { |
| 9248 | 9280 | OPOST: bool = false, |
| 9249 | 9281 | OLCUC: bool = false, |
| 9250 | 9282 | ONLCR: bool = false, |
| ... | ... | @@ -9357,7 +9389,7 @@ pub const tc_cflag_t = switch (native_os) { |
| 9357 | 9389 | MDMBUF: bool = false, |
| 9358 | 9390 | _: u11 = 0, |
| 9359 | 9391 | }, |
| 9360 | | .haiku => packed struct(u32) { |
| 9392 | .haiku => packed struct(u16) { |
| 9361 | 9393 | _0: u5 = 0, |
| 9362 | 9394 | CSIZE: CSIZE = .CS7, |
| 9363 | 9395 | CSTOPB: bool = false, |
| ... | ... | @@ -9369,7 +9401,7 @@ pub const tc_cflag_t = switch (native_os) { |
| 9369 | 9401 | XLOBLK: bool = false, |
| 9370 | 9402 | CTSFLOW: bool = false, |
| 9371 | 9403 | RTSFLOW: bool = false, |
| 9372 | | _: u17 = 0, |
| 9404 | _: u1 = 0, |
| 9373 | 9405 | }, |
| 9374 | 9406 | .illumos => packed struct(u32) { |
| 9375 | 9407 | _0: u4 = 0, |
| ... | ... | @@ -9491,7 +9523,7 @@ pub const tc_lflag_t = switch (native_os) { |
| 9491 | 9523 | _30: u1 = 0, |
| 9492 | 9524 | NOFLSH: bool = false, |
| 9493 | 9525 | }, |
| 9494 | | .haiku => packed struct(u32) { |
| 9526 | .haiku => packed struct(u16) { |
| 9495 | 9527 | ISIG: bool = false, |
| 9496 | 9528 | ICANON: bool = false, |
| 9497 | 9529 | XCASE: bool = false, |
| ... | ... | @@ -9507,7 +9539,7 @@ pub const tc_lflag_t = switch (native_os) { |
| 9507 | 9539 | ECHOKE: bool = false, |
| 9508 | 9540 | FLUSHO: bool = false, |
| 9509 | 9541 | PENDIN: bool = false, |
| 9510 | | _: u17 = 0, |
| 9542 | _: u1 = 0, |
| 9511 | 9543 | }, |
| 9512 | 9544 | .illumos => packed struct(u32) { |
| 9513 | 9545 | ISIG: bool = false, |
| ... | ... | @@ -9568,7 +9600,7 @@ pub const tc_lflag_t = switch (native_os) { |
| 9568 | 9600 | |
| 9569 | 9601 | pub const speed_t = switch (native_os) { |
| 9570 | 9602 | .linux => linux.speed_t, |
| 9571 | | .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .openbsd => enum(u64) { |
| 9603 | .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos, .openbsd => enum(if (native_os == .openbsd) c_uint else u64) { |
| 9572 | 9604 | B0 = 0, |
| 9573 | 9605 | B50 = 50, |
| 9574 | 9606 | B75 = 75, |
| ... | ... | @@ -9780,7 +9812,7 @@ pub const MINSIGSTKSZ = switch (native_os) { |
| 9780 | 9812 | }, |
| 9781 | 9813 | .illumos => 2048, |
| 9782 | 9814 | .haiku, .netbsd => 8192, |
| 9783 | | .openbsd => 1 << openbsd.MAX_PAGE_SHIFT, |
| 9815 | .openbsd => 3 << openbsd.MAX_PAGE_SHIFT, |
| 9784 | 9816 | // https://github.com/SerenityOS/serenity/blob/ec492a1a0819e6239ea44156825c4ee7234ca3db/Kernel/API/POSIX/signal.h#L58 |
| 9785 | 9817 | .serenity => 4096, |
| 9786 | 9818 | else => {}, |
| ... | ... | @@ -9790,7 +9822,7 @@ pub const SIGSTKSZ = switch (native_os) { |
| 9790 | 9822 | .netbsd, .freebsd => MINSIGSTKSZ + 32768, |
| 9791 | 9823 | .illumos => 8192, |
| 9792 | 9824 | .haiku => 16384, |
| 9793 | | .openbsd => MINSIGSTKSZ + (1 << openbsd.MAX_PAGE_SHIFT) * 4, |
| 9825 | .openbsd => MINSIGSTKSZ + (1 << openbsd.MAX_PAGE_SHIFT) * (if (openbsd.MAX_PAGE_SHIFT < 14) 4 else 2), |
| 9794 | 9826 | // https://github.com/SerenityOS/serenity/blob/ec492a1a0819e6239ea44156825c4ee7234ca3db/Kernel/API/POSIX/signal.h#L59 |
| 9795 | 9827 | .serenity => 32768, |
| 9796 | 9828 | else => {}, |
| ... | ... | @@ -10845,7 +10877,7 @@ pub const malloc_size = switch (native_os) { |
| 10845 | 10877 | else => {}, |
| 10846 | 10878 | }; |
| 10847 | 10879 | pub const malloc_usable_size = switch (native_os) { |
| 10848 | | .freebsd, .linux, .serenity => private.malloc_usable_size, |
| 10880 | .freebsd, .linux => private.malloc_usable_size, |
| 10849 | 10881 | else => {}, |
| 10850 | 10882 | }; |
| 10851 | 10883 | pub const posix_memalign = switch (native_os) { |
| ... | ... | @@ -10906,7 +10938,10 @@ pub extern "c" fn write(fd: fd_t, buf: [*]const u8, nbyte: usize) isize; |
| 10906 | 10938 | pub extern "c" fn pwrite(fd: fd_t, buf: [*]const u8, nbyte: usize, offset: off_t) isize; |
| 10907 | 10939 | pub extern "c" fn mmap(addr: ?*align(page_size) anyopaque, len: usize, prot: PROT, flags: MAP, fd: fd_t, offset: off_t) *anyopaque; |
| 10908 | 10940 | pub extern "c" fn munmap(addr: *align(page_size) const anyopaque, len: usize) c_int; |
| 10909 | | pub extern "c" fn mremap(addr: ?*align(page_size) const anyopaque, old_len: usize, new_len: usize, flags: MREMAP, ...) *anyopaque; |
| 10941 | pub const mremap = switch (native_os) { |
| 10942 | .serenity => serenity.mremap, |
| 10943 | else => private.mremap, |
| 10944 | }; |
| 10910 | 10945 | pub extern "c" fn mprotect(addr: *align(page_size) anyopaque, len: usize, prot: PROT) c_int; |
| 10911 | 10946 | pub extern "c" fn link(oldpath: [*:0]const u8, newpath: [*:0]const u8) c_int; |
| 10912 | 10947 | pub extern "c" fn linkat(oldfd: fd_t, oldpath: [*:0]const u8, newfd: fd_t, newpath: [*:0]const u8, flags: c_uint) c_int; |
| ... | ... | @@ -10999,7 +11034,10 @@ pub extern "c" fn sendto( |
| 10999 | 11034 | addrlen: socklen_t, |
| 11000 | 11035 | ) isize; |
| 11001 | 11036 | pub extern "c" fn sendmsg(sockfd: fd_t, msg: *const msghdr_const, flags: u32) isize; |
| 11002 | | pub extern "c" fn sendmmsg(sockfd: fd_t, msgvec: [*]mmsghdr, n: c_uint, flags: u32) c_int; |
| 11037 | pub const sendmmsg = switch (native_os) { |
| 11038 | .freebsd => freebsd.sendmmsg, |
| 11039 | else => private.sendmmsg, |
| 11040 | }; |
| 11003 | 11041 | |
| 11004 | 11042 | pub extern "c" fn recv( |
| 11005 | 11043 | sockfd: fd_t, |
| ... | ... | @@ -11061,6 +11099,10 @@ pub const pthread_cancelstate = switch (native_os) { |
| 11061 | 11099 | ENABLE = 1, |
| 11062 | 11100 | DISABLE = 0, |
| 11063 | 11101 | }, |
| 11102 | .dragonfly, .freebsd, .haiku, .openbsd => enum(c_int) { |
| 11103 | ENABLE = 0, |
| 11104 | DISABLE = 1, |
| 11105 | }, |
| 11064 | 11106 | .linux => if (native_abi.isMusl()) enum(c_int) { |
| 11065 | 11107 | ENABLE = 0, |
| 11066 | 11108 | DISABLE = 1, |
| ... | ... | @@ -11069,6 +11111,10 @@ pub const pthread_cancelstate = switch (native_os) { |
| 11069 | 11111 | ENABLE = 0, |
| 11070 | 11112 | DISABLE = 1, |
| 11071 | 11113 | }, |
| 11114 | .serenity => enum(c_int) { |
| 11115 | ENABLE = 1, |
| 11116 | DISABLE = 2, |
| 11117 | }, |
| 11072 | 11118 | else => void, |
| 11073 | 11119 | }; |
| 11074 | 11120 | pub extern "c" fn pthread_setcancelstate(pthread_cancelstate, ?*pthread_cancelstate) E; |
| ... | ... | @@ -11124,7 +11170,7 @@ pub const ptrace = switch (native_os) { |
| 11124 | 11170 | |
| 11125 | 11171 | pub extern "c" fn sem_init(sem: *sem_t, pshared: c_int, value: c_uint) c_int; |
| 11126 | 11172 | pub extern "c" fn sem_destroy(sem: *sem_t) c_int; |
| 11127 | | pub extern "c" fn sem_open(name: [*:0]const u8, flag: c_int, mode: mode_t, value: c_uint) *sem_t; |
| 11173 | pub extern "c" fn sem_open(name: [*:0]const u8, flag: c_int, ...) *sem_t; |
| 11128 | 11174 | pub extern "c" fn sem_close(sem: *sem_t) c_int; |
| 11129 | 11175 | pub extern "c" fn sem_post(sem: *sem_t) c_int; |
| 11130 | 11176 | pub extern "c" fn sem_wait(sem: *sem_t) c_int; |
| ... | ... | @@ -11186,15 +11232,12 @@ pub extern "c" fn getaddrinfo( |
| 11186 | 11232 | |
| 11187 | 11233 | pub extern "c" fn freeaddrinfo(res: *addrinfo) void; |
| 11188 | 11234 | |
| 11189 | | pub extern "c" fn getnameinfo( |
| 11190 | | noalias addr: *const sockaddr, |
| 11191 | | addrlen: socklen_t, |
| 11192 | | noalias host: ?[*]u8, |
| 11193 | | hostlen: socklen_t, |
| 11194 | | noalias serv: ?[*]u8, |
| 11195 | | servlen: socklen_t, |
| 11196 | | flags: NI, |
| 11197 | | ) EAI; |
| 11235 | pub const getnameinfo = switch (native_os) { |
| 11236 | .dragonfly => dragonfly.getnameinfo, |
| 11237 | .freebsd => freebsd.getnameinfo, |
| 11238 | .openbsd => openbsd.getnameinfo, |
| 11239 | else => private.getnameinfo, |
| 11240 | }; |
| 11198 | 11241 | |
| 11199 | 11242 | pub extern "c" fn gai_strerror(errcode: EAI) [*:0]const u8; |
| 11200 | 11243 | |
| ... | ... | @@ -11283,21 +11326,44 @@ pub extern "c" fn setsid() pid_t; |
| 11283 | 11326 | /// These are implementation defined but share identical values in at least musl and glibc: |
| 11284 | 11327 | /// - https://git.musl-libc.org/cgit/musl/tree/include/locale.h?id=ab31e9d6a0fa7c5c408856c89df2dfb12c344039#n18 |
| 11285 | 11328 | /// - https://sourceware.org/git/?p=glibc.git;a=blob;f=locale/bits/locale.h;h=0fcbb66114be5fef0577dc9047256eb508c45919;hb=c90cfce849d010474e8cccf3e5bff49a2c8b141f#l26 |
| 11286 | | pub const LC = enum(c_int) { |
| 11287 | | CTYPE = 0, |
| 11288 | | NUMERIC = 1, |
| 11289 | | TIME = 2, |
| 11290 | | COLLATE = 3, |
| 11291 | | MONETARY = 4, |
| 11292 | | MESSAGES = 5, |
| 11293 | | ALL = 6, |
| 11294 | | PAPER = 7, |
| 11295 | | NAME = 8, |
| 11296 | | ADDRESS = 9, |
| 11297 | | TELEPHONE = 10, |
| 11298 | | MEASUREMENT = 11, |
| 11299 | | IDENTIFICATION = 12, |
| 11300 | | _, |
| 11329 | pub const LC = switch (native_os) { |
| 11330 | // https://github.com/SerenityOS/serenity/blob/fe4f3879551f2fdd8a24de06b88f4450e2f3b93d/Userland/Libraries/LibC/locale.h#L14-L29 |
| 11331 | .serenity => enum(c_int) { |
| 11332 | ALL = 0, |
| 11333 | COLLATE = 1, |
| 11334 | CTYPE = 2, |
| 11335 | MONETARY = 3, |
| 11336 | NUMERIC = 4, |
| 11337 | TIME = 5, |
| 11338 | MESSAGES = 6, |
| 11339 | _, |
| 11340 | }, |
| 11341 | .serenity => enum(c_int) { |
| 11342 | ALL = 0, |
| 11343 | NUMERIC = 1, |
| 11344 | CTYPE = 2, |
| 11345 | COLLATE = 3, |
| 11346 | TIME = 4, |
| 11347 | MONETARY = 5, |
| 11348 | MESSAGES = 6, |
| 11349 | _, |
| 11350 | }, |
| 11351 | else => enum(c_int) { |
| 11352 | CTYPE = 0, |
| 11353 | NUMERIC = 1, |
| 11354 | TIME = 2, |
| 11355 | COLLATE = 3, |
| 11356 | MONETARY = 4, |
| 11357 | MESSAGES = 5, |
| 11358 | ALL = 6, |
| 11359 | PAPER = 7, |
| 11360 | NAME = 8, |
| 11361 | ADDRESS = 9, |
| 11362 | TELEPHONE = 10, |
| 11363 | MEASUREMENT = 11, |
| 11364 | IDENTIFICATION = 12, |
| 11365 | _, |
| 11366 | }, |
| 11301 | 11367 | }; |
| 11302 | 11368 | |
| 11303 | 11369 | pub extern "c" fn setlocale(category: LC, locale: ?[*:0]const u8) ?[*:0]const u8; |
| ... | ... | @@ -11364,6 +11430,9 @@ pub const clock_nanosleep = switch (native_os) { |
| 11364 | 11430 | }; |
| 11365 | 11431 | |
| 11366 | 11432 | pub const ioctl = switch (native_os) { |
| 11433 | .dragonfly => dragonfly.ioctl, |
| 11434 | .freebsd => freebsd.ioctl, |
| 11435 | .openbsd => openbsd.ioctl, |
| 11367 | 11436 | .windows => {}, |
| 11368 | 11437 | else => private.ioctl, |
| 11369 | 11438 | }; |
| ... | ... | @@ -11823,7 +11892,7 @@ const private = struct { |
| 11823 | 11892 | extern "c" fn fork() c_int; |
| 11824 | 11893 | extern "c" fn fstat(fd: fd_t, buf: *Stat) c_int; |
| 11825 | 11894 | extern "c" fn fstatat(dirfd: fd_t, path: [*:0]const u8, buf: *Stat, flag: u32) c_int; |
| 11826 | | extern "c" fn getdirentries(fd: fd_t, buf_ptr: [*]u8, nbytes: usize, basep: *i64) isize; |
| 11895 | extern "c" fn getdirentries(fd: fd_t, buf_ptr: [*]u8, nbytes: usize, basep: *i64) if (native_os == .dragonfly) c_int else isize; |
| 11827 | 11896 | extern "c" fn getdents(fd: c_int, buf_ptr: [*]u8, nbytes: usize) switch (native_os) { |
| 11828 | 11897 | else => c_int, |
| 11829 | 11898 | .freebsd => isize, |
| ... | ... | @@ -11833,13 +11902,24 @@ const private = struct { |
| 11833 | 11902 | extern "c" fn gettimeofday(noalias tv: ?*timeval, noalias tz: ?*timezone) c_int; |
| 11834 | 11903 | extern "c" fn ioctl(fd: fd_t, request: c_int, ...) c_int; |
| 11835 | 11904 | extern "c" fn msync(addr: *align(page_size) const anyopaque, len: usize, flags: c_int) c_int; |
| 11905 | extern "c" fn mremap(addr: ?*align(page_size) const anyopaque, old_len: usize, new_len: usize, flags: MREMAP, ...) *anyopaque; |
| 11836 | 11906 | extern "c" fn nanosleep(rqtp: *const timespec, rmtp: ?*timespec) c_int; |
| 11837 | 11907 | extern "c" fn pipe2(fds: *[2]fd_t, flags: O) c_int; |
| 11838 | 11908 | extern "c" fn readdir(dir: *DIR) ?*dirent; |
| 11839 | 11909 | extern "c" fn realpath(noalias file_name: [*:0]const u8, noalias resolved_name: [*]u8) ?[*:0]u8; |
| 11840 | 11910 | extern "c" fn recvmsg(sockfd: fd_t, msg: *msghdr, flags: u32) isize; |
| 11841 | 11911 | extern "c" fn sched_yield() c_int; |
| 11912 | extern "c" fn getnameinfo( |
| 11913 | noalias addr: *const sockaddr, |
| 11914 | addrlen: socklen_t, |
| 11915 | noalias host: ?[*]u8, |
| 11916 | hostlen: socklen_t, |
| 11917 | noalias serv: ?[*]u8, |
| 11918 | servlen: socklen_t, |
| 11919 | flags: NI, |
| 11920 | ) EAI; |
| 11842 | 11921 | extern "c" fn sendfile(out_fd: fd_t, in_fd: fd_t, offset: ?*off_t, count: usize) isize; |
| 11922 | extern "c" fn sendmmsg(sockfd: fd_t, msgvec: [*]mmsghdr, n: c_uint, flags: u32) c_int; |
| 11843 | 11923 | extern "c" fn sigaction(sig: SIG, noalias act: ?*const Sigaction, noalias oact: ?*Sigaction) c_int; |
| 11844 | 11924 | extern "c" fn sigdelset(set: ?*sigset_t, signo: SIG) c_int; |
| 11845 | 11925 | extern "c" fn sigaddset(set: ?*sigset_t, signo: SIG) c_int; |