| author | |
| committer | |
| log | 87150468fc25f2ad70abcc1428112bfb8d31843a |
| tree | bd972036fc484318721ddbd2d9016ab066ceca4e |
| parent | 95f0dce7dae258fc2cf9947fdaad26d768902373 |
2 files changed, 373 insertions(+), 0 deletions(-)
lib/std/os/linux/syscalls.zig+309| ... | @@ -3911,3 +3911,312 @@ pub const RiscV64 = enum(usize) { | ... | @@ -3911,3 +3911,312 @@ pub const RiscV64 = enum(usize) { |
| 3911 | 3911 | ||
| 3912 | riscv_flush_icache = arch_specific_syscall + 15, | 3912 | riscv_flush_icache = arch_specific_syscall + 15, |
| 3913 | }; | 3913 | }; |
| 3914 | |||
| 3915 | pub const LoongArch64 = enum(usize) { | ||
| 3916 | io_setup = 0, | ||
| 3917 | io_destroy = 1, | ||
| 3918 | io_submit = 2, | ||
| 3919 | io_cancel = 3, | ||
| 3920 | io_getevents = 4, | ||
| 3921 | setxattr = 5, | ||
| 3922 | lsetxattr = 6, | ||
| 3923 | fsetxattr = 7, | ||
| 3924 | getxattr = 8, | ||
| 3925 | lgetxattr = 9, | ||
| 3926 | fgetxattr = 10, | ||
| 3927 | listxattr = 11, | ||
| 3928 | llistxattr = 12, | ||
| 3929 | flistxattr = 13, | ||
| 3930 | removexattr = 14, | ||
| 3931 | lremovexattr = 15, | ||
| 3932 | fremovexattr = 16, | ||
| 3933 | getcwd = 17, | ||
| 3934 | lookup_dcookie = 18, | ||
| 3935 | eventfd2 = 19, | ||
| 3936 | epoll_create1 = 20, | ||
| 3937 | epoll_ctl = 21, | ||
| 3938 | epoll_pwait = 22, | ||
| 3939 | dup = 23, | ||
| 3940 | dup3 = 24, | ||
| 3941 | fcntl = 25, | ||
| 3942 | inotify_init1 = 26, | ||
| 3943 | inotify_add_watch = 27, | ||
| 3944 | inotify_rm_watch = 28, | ||
| 3945 | ioctl = 29, | ||
| 3946 | ioprio_set = 30, | ||
| 3947 | ioprio_get = 31, | ||
| 3948 | flock = 32, | ||
| 3949 | mknodat = 33, | ||
| 3950 | mkdirat = 34, | ||
| 3951 | unlinkat = 35, | ||
| 3952 | symlinkat = 36, | ||
| 3953 | linkat = 37, | ||
| 3954 | umount2 = 39, | ||
| 3955 | mount = 40, | ||
| 3956 | pivot_root = 41, | ||
| 3957 | nfsservctl = 42, | ||
| 3958 | statfs = 43, | ||
| 3959 | fstatfs = 44, | ||
| 3960 | truncate = 45, | ||
| 3961 | ftruncate = 46, | ||
| 3962 | fallocate = 47, | ||
| 3963 | faccessat = 48, | ||
| 3964 | chdir = 49, | ||
| 3965 | fchdir = 50, | ||
| 3966 | chroot = 51, | ||
| 3967 | fchmod = 52, | ||
| 3968 | fchmodat = 53, | ||
| 3969 | fchownat = 54, | ||
| 3970 | fchown = 55, | ||
| 3971 | openat = 56, | ||
| 3972 | close = 57, | ||
| 3973 | vhangup = 58, | ||
| 3974 | pipe2 = 59, | ||
| 3975 | quotactl = 60, | ||
| 3976 | getdents64 = 61, | ||
| 3977 | lseek = 62, | ||
| 3978 | read = 63, | ||
| 3979 | write = 64, | ||
| 3980 | readv = 65, | ||
| 3981 | writev = 66, | ||
| 3982 | pread64 = 67, | ||
| 3983 | pwrite64 = 68, | ||
| 3984 | preadv = 69, | ||
| 3985 | pwritev = 70, | ||
| 3986 | sendfile = 71, | ||
| 3987 | pselect6 = 72, | ||
| 3988 | ppoll = 73, | ||
| 3989 | signalfd4 = 74, | ||
| 3990 | vmsplice = 75, | ||
| 3991 | splice = 76, | ||
| 3992 | tee = 77, | ||
| 3993 | readlinkat = 78, | ||
| 3994 | sync = 81, | ||
| 3995 | fsync = 82, | ||
| 3996 | fdatasync = 83, | ||
| 3997 | sync_file_range = 84, | ||
| 3998 | timerfd_create = 85, | ||
| 3999 | timerfd_settime = 86, | ||
| 4000 | timerfd_gettime = 87, | ||
| 4001 | utimensat = 88, | ||
| 4002 | acct = 89, | ||
| 4003 | capget = 90, | ||
| 4004 | capset = 91, | ||
| 4005 | personality = 92, | ||
| 4006 | exit = 93, | ||
| 4007 | exit_group = 94, | ||
| 4008 | waitid = 95, | ||
| 4009 | set_tid_address = 96, | ||
| 4010 | unshare = 97, | ||
| 4011 | futex = 98, | ||
| 4012 | set_robust_list = 99, | ||
| 4013 | get_robust_list = 100, | ||
| 4014 | nanosleep = 101, | ||
| 4015 | getitimer = 102, | ||
| 4016 | setitimer = 103, | ||
| 4017 | kexec_load = 104, | ||
| 4018 | init_module = 105, | ||
| 4019 | delete_module = 106, | ||
| 4020 | timer_create = 107, | ||
| 4021 | timer_gettime = 108, | ||
| 4022 | timer_getoverrun = 109, | ||
| 4023 | timer_settime = 110, | ||
| 4024 | timer_delete = 111, | ||
| 4025 | clock_settime = 112, | ||
| 4026 | clock_gettime = 113, | ||
| 4027 | clock_getres = 114, | ||
| 4028 | clock_nanosleep = 115, | ||
| 4029 | syslog = 116, | ||
| 4030 | ptrace = 117, | ||
| 4031 | sched_setparam = 118, | ||
| 4032 | sched_setscheduler = 119, | ||
| 4033 | sched_getscheduler = 120, | ||
| 4034 | sched_getparam = 121, | ||
| 4035 | sched_setaffinity = 122, | ||
| 4036 | sched_getaffinity = 123, | ||
| 4037 | sched_yield = 124, | ||
| 4038 | sched_get_priority_max = 125, | ||
| 4039 | sched_get_priority_min = 126, | ||
| 4040 | sched_rr_get_interval = 127, | ||
| 4041 | restart_syscall = 128, | ||
| 4042 | kill = 129, | ||
| 4043 | tkill = 130, | ||
| 4044 | tgkill = 131, | ||
| 4045 | sigaltstack = 132, | ||
| 4046 | rt_sigsuspend = 133, | ||
| 4047 | rt_sigaction = 134, | ||
| 4048 | rt_sigprocmask = 135, | ||
| 4049 | rt_sigpending = 136, | ||
| 4050 | rt_sigtimedwait = 137, | ||
| 4051 | rt_sigqueueinfo = 138, | ||
| 4052 | rt_sigreturn = 139, | ||
| 4053 | setpriority = 140, | ||
| 4054 | getpriority = 141, | ||
| 4055 | reboot = 142, | ||
| 4056 | setregid = 143, | ||
| 4057 | setgid = 144, | ||
| 4058 | setreuid = 145, | ||
| 4059 | setuid = 146, | ||
| 4060 | setresuid = 147, | ||
| 4061 | getresuid = 148, | ||
| 4062 | setresgid = 149, | ||
| 4063 | getresgid = 150, | ||
| 4064 | setfsuid = 151, | ||
| 4065 | setfsgid = 152, | ||
| 4066 | times = 153, | ||
| 4067 | setpgid = 154, | ||
| 4068 | getpgid = 155, | ||
| 4069 | getsid = 156, | ||
| 4070 | setsid = 157, | ||
| 4071 | getgroups = 158, | ||
| 4072 | setgroups = 159, | ||
| 4073 | uname = 160, | ||
| 4074 | sethostname = 161, | ||
| 4075 | setdomainname = 162, | ||
| 4076 | getrusage = 165, | ||
| 4077 | umask = 166, | ||
| 4078 | prctl = 167, | ||
| 4079 | getcpu = 168, | ||
| 4080 | gettimeofday = 169, | ||
| 4081 | settimeofday = 170, | ||
| 4082 | adjtimex = 171, | ||
| 4083 | getpid = 172, | ||
| 4084 | getppid = 173, | ||
| 4085 | getuid = 174, | ||
| 4086 | geteuid = 175, | ||
| 4087 | getgid = 176, | ||
| 4088 | getegid = 177, | ||
| 4089 | gettid = 178, | ||
| 4090 | sysinfo = 179, | ||
| 4091 | mq_open = 180, | ||
| 4092 | mq_unlink = 181, | ||
| 4093 | mq_timedsend = 182, | ||
| 4094 | mq_timedreceive = 183, | ||
| 4095 | mq_notify = 184, | ||
| 4096 | mq_getsetattr = 185, | ||
| 4097 | msgget = 186, | ||
| 4098 | msgctl = 187, | ||
| 4099 | msgrcv = 188, | ||
| 4100 | msgsnd = 189, | ||
| 4101 | semget = 190, | ||
| 4102 | semctl = 191, | ||
| 4103 | semtimedop = 192, | ||
| 4104 | semop = 193, | ||
| 4105 | shmget = 194, | ||
| 4106 | shmctl = 195, | ||
| 4107 | shmat = 196, | ||
| 4108 | shmdt = 197, | ||
| 4109 | socket = 198, | ||
| 4110 | socketpair = 199, | ||
| 4111 | bind = 200, | ||
| 4112 | listen = 201, | ||
| 4113 | accept = 202, | ||
| 4114 | connect = 203, | ||
| 4115 | getsockname = 204, | ||
| 4116 | getpeername = 205, | ||
| 4117 | sendto = 206, | ||
| 4118 | recvfrom = 207, | ||
| 4119 | setsockopt = 208, | ||
| 4120 | getsockopt = 209, | ||
| 4121 | shutdown = 210, | ||
| 4122 | sendmsg = 211, | ||
| 4123 | recvmsg = 212, | ||
| 4124 | readahead = 213, | ||
| 4125 | brk = 214, | ||
| 4126 | munmap = 215, | ||
| 4127 | mremap = 216, | ||
| 4128 | add_key = 217, | ||
| 4129 | request_key = 218, | ||
| 4130 | keyctl = 219, | ||
| 4131 | clone = 220, | ||
| 4132 | execve = 221, | ||
| 4133 | mmap = 222, | ||
| 4134 | fadvise64 = 223, | ||
| 4135 | swapon = 224, | ||
| 4136 | swapoff = 225, | ||
| 4137 | mprotect = 226, | ||
| 4138 | msync = 227, | ||
| 4139 | mlock = 228, | ||
| 4140 | munlock = 229, | ||
| 4141 | mlockall = 230, | ||
| 4142 | munlockall = 231, | ||
| 4143 | mincore = 232, | ||
| 4144 | madvise = 233, | ||
| 4145 | remap_file_pages = 234, | ||
| 4146 | mbind = 235, | ||
| 4147 | get_mempolicy = 236, | ||
| 4148 | set_mempolicy = 237, | ||
| 4149 | migrate_pages = 238, | ||
| 4150 | move_pages = 239, | ||
| 4151 | rt_tgsigqueueinfo = 240, | ||
| 4152 | perf_event_open = 241, | ||
| 4153 | accept4 = 242, | ||
| 4154 | recvmmsg = 243, | ||
| 4155 | wait4 = 260, | ||
| 4156 | prlimit64 = 261, | ||
| 4157 | fanotify_init = 262, | ||
| 4158 | fanotify_mark = 263, | ||
| 4159 | name_to_handle_at = 264, | ||
| 4160 | open_by_handle_at = 265, | ||
| 4161 | clock_adjtime = 266, | ||
| 4162 | syncfs = 267, | ||
| 4163 | setns = 268, | ||
| 4164 | sendmmsg = 269, | ||
| 4165 | process_vm_readv = 270, | ||
| 4166 | process_vm_writev = 271, | ||
| 4167 | kcmp = 272, | ||
| 4168 | finit_module = 273, | ||
| 4169 | sched_setattr = 274, | ||
| 4170 | sched_getattr = 275, | ||
| 4171 | renameat2 = 276, | ||
| 4172 | seccomp = 277, | ||
| 4173 | getrandom = 278, | ||
| 4174 | memfd_create = 279, | ||
| 4175 | bpf = 280, | ||
| 4176 | execveat = 281, | ||
| 4177 | userfaultfd = 282, | ||
| 4178 | membarrier = 283, | ||
| 4179 | mlock2 = 284, | ||
| 4180 | copy_file_range = 285, | ||
| 4181 | preadv2 = 286, | ||
| 4182 | pwritev2 = 287, | ||
| 4183 | pkey_mprotect = 288, | ||
| 4184 | pkey_alloc = 289, | ||
| 4185 | pkey_free = 290, | ||
| 4186 | statx = 291, | ||
| 4187 | io_pgetevents = 292, | ||
| 4188 | rseq = 293, | ||
| 4189 | kexec_file_load = 294, | ||
| 4190 | pidfd_send_signal = 424, | ||
| 4191 | io_uring_setup = 425, | ||
| 4192 | io_uring_enter = 426, | ||
| 4193 | io_uring_register = 427, | ||
| 4194 | open_tree = 428, | ||
| 4195 | move_mount = 429, | ||
| 4196 | fsopen = 430, | ||
| 4197 | fsconfig = 431, | ||
| 4198 | fsmount = 432, | ||
| 4199 | fspick = 433, | ||
| 4200 | pidfd_open = 434, | ||
| 4201 | clone3 = 435, | ||
| 4202 | close_range = 436, | ||
| 4203 | openat2 = 437, | ||
| 4204 | pidfd_getfd = 438, | ||
| 4205 | faccessat2 = 439, | ||
| 4206 | process_madvise = 440, | ||
| 4207 | epoll_pwait2 = 441, | ||
| 4208 | mount_setattr = 442, | ||
| 4209 | quotactl_fd = 443, | ||
| 4210 | landlock_create_ruleset = 444, | ||
| 4211 | landlock_add_rule = 445, | ||
| 4212 | landlock_restrict_self = 446, | ||
| 4213 | process_mrelease = 448, | ||
| 4214 | futex_waitv = 449, | ||
| 4215 | set_mempolicy_home_node = 450, | ||
| 4216 | cachestat = 451, | ||
| 4217 | fchmodat2 = 452, | ||
| 4218 | map_shadow_stack = 453, | ||
| 4219 | futex_wake = 454, | ||
| 4220 | futex_wait = 455, | ||
| 4221 | futex_requeue = 456, | ||
| 4222 | }; |
tools/generate_linux_syscalls.zig+64| ... | @@ -362,6 +362,70 @@ pub fn main() !void { | ... | @@ -362,6 +362,70 @@ pub fn main() !void { |
| 362 | \\ | 362 | \\ |
| 363 | ); | 363 | ); |
| 364 | } | 364 | } |
| 365 | { | ||
| 366 | try writer.writeAll( | ||
| 367 | \\ | ||
| 368 | \\pub const LoongArch64 = enum(usize) { | ||
| 369 | \\ | ||
| 370 | ); | ||
| 371 | |||
| 372 | const child_args = [_][]const u8{ | ||
| 373 | zig_exe, | ||
| 374 | "cc", | ||
| 375 | "-march=loongarch64", | ||
| 376 | "-target", | ||
| 377 | "loongarch64-linux-gnu", | ||
| 378 | "-E", | ||
| 379 | "-dD", | ||
| 380 | "-P", | ||
| 381 | "-nostdinc", | ||
| 382 | "-Iinclude", | ||
| 383 | "-Iinclude/uapi", | ||
| 384 | "arch/loongarch/include/uapi/asm/unistd.h", | ||
| 385 | }; | ||
| 386 | |||
| 387 | const child_result = try std.process.Child.run(.{ | ||
| 388 | .allocator = allocator, | ||
| 389 | .argv = &child_args, | ||
| 390 | .cwd = linux_path, | ||
| 391 | .cwd_dir = linux_dir, | ||
| 392 | }); | ||
| 393 | if (child_result.stderr.len > 0) std.debug.print("{s}\n", .{child_result.stderr}); | ||
| 394 | |||
| 395 | const defines = switch (child_result.term) { | ||
| 396 | .Exited => |code| if (code == 0) child_result.stdout else { | ||
| 397 | std.debug.print("zig cc exited with code {d}\n", .{code}); | ||
| 398 | std.process.exit(1); | ||
| 399 | }, | ||
| 400 | else => { | ||
| 401 | std.debug.print("zig cc crashed\n", .{}); | ||
| 402 | std.process.exit(1); | ||
| 403 | }, | ||
| 404 | }; | ||
| 405 | |||
| 406 | var lines = mem.tokenizeScalar(u8, defines, '\n'); | ||
| 407 | loop: while (lines.next()) |line| { | ||
| 408 | var fields = mem.tokenizeAny(u8, line, " \t"); | ||
| 409 | const cmd = fields.next() orelse return error.Incomplete; | ||
| 410 | if (!mem.eql(u8, cmd, "#define")) continue; | ||
| 411 | const define = fields.next() orelse return error.Incomplete; | ||
| 412 | const number = fields.next() orelse continue; | ||
| 413 | |||
| 414 | if (!std.ascii.isDigit(number[0])) continue; | ||
| 415 | if (!mem.startsWith(u8, define, "__NR")) continue; | ||
| 416 | const name = mem.trimLeft(u8, mem.trimLeft(u8, define, "__NR3264_"), "__NR_"); | ||
| 417 | if (mem.eql(u8, name, "arch_specific_syscall")) continue; | ||
| 418 | if (mem.eql(u8, name, "syscalls")) break :loop; | ||
| 419 | |||
| 420 | const fixed_name = if (stdlib_renames.get(name)) |fixed| fixed else name; | ||
| 421 | try writer.print(" {p} = {s},\n", .{ zig.fmtId(fixed_name), number }); | ||
| 422 | } | ||
| 423 | |||
| 424 | try writer.writeAll( | ||
| 425 | \\}; | ||
| 426 | \\ | ||
| 427 | ); | ||
| 428 | } | ||
| 365 | 429 | ||
| 366 | try buf_out.flush(); | 430 | try buf_out.flush(); |
| 367 | } | 431 | } |