Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 
0003 #include <linux/linkage.h>
0004 #include <linux/errno.h>
0005 
0006 #include <asm/unistd.h>
0007 
0008 #ifdef CONFIG_ARCH_HAS_SYSCALL_WRAPPER
0009 /* Architectures may override COND_SYSCALL and COND_SYSCALL_COMPAT */
0010 #include <asm/syscall_wrapper.h>
0011 #endif /* CONFIG_ARCH_HAS_SYSCALL_WRAPPER */
0012 
0013 /*  we can't #include <linux/syscalls.h> here,
0014     but tell gcc to not warn with -Wmissing-prototypes  */
0015 asmlinkage long sys_ni_syscall(void);
0016 
0017 /*
0018  * Non-implemented system calls get redirected here.
0019  */
0020 asmlinkage long sys_ni_syscall(void)
0021 {
0022     return -ENOSYS;
0023 }
0024 
0025 #ifndef COND_SYSCALL
0026 #define COND_SYSCALL(name) cond_syscall(sys_##name)
0027 #endif /* COND_SYSCALL */
0028 
0029 #ifndef COND_SYSCALL_COMPAT
0030 #define COND_SYSCALL_COMPAT(name) cond_syscall(compat_sys_##name)
0031 #endif /* COND_SYSCALL_COMPAT */
0032 
0033 /*
0034  * This list is kept in the same order as include/uapi/asm-generic/unistd.h.
0035  * Architecture specific entries go below, followed by deprecated or obsolete
0036  * system calls.
0037  */
0038 
0039 COND_SYSCALL(io_setup);
0040 COND_SYSCALL_COMPAT(io_setup);
0041 COND_SYSCALL(io_destroy);
0042 COND_SYSCALL(io_submit);
0043 COND_SYSCALL_COMPAT(io_submit);
0044 COND_SYSCALL(io_cancel);
0045 COND_SYSCALL(io_getevents_time32);
0046 COND_SYSCALL(io_getevents);
0047 COND_SYSCALL(io_pgetevents_time32);
0048 COND_SYSCALL(io_pgetevents);
0049 COND_SYSCALL_COMPAT(io_pgetevents_time32);
0050 COND_SYSCALL_COMPAT(io_pgetevents);
0051 COND_SYSCALL(io_uring_setup);
0052 COND_SYSCALL(io_uring_enter);
0053 COND_SYSCALL(io_uring_register);
0054 
0055 /* fs/xattr.c */
0056 
0057 /* fs/dcache.c */
0058 
0059 /* fs/cookies.c */
0060 COND_SYSCALL(lookup_dcookie);
0061 COND_SYSCALL_COMPAT(lookup_dcookie);
0062 
0063 /* fs/eventfd.c */
0064 COND_SYSCALL(eventfd2);
0065 
0066 /* fs/eventfd.c */
0067 COND_SYSCALL(epoll_create1);
0068 COND_SYSCALL(epoll_ctl);
0069 COND_SYSCALL(epoll_pwait);
0070 COND_SYSCALL_COMPAT(epoll_pwait);
0071 COND_SYSCALL(epoll_pwait2);
0072 COND_SYSCALL_COMPAT(epoll_pwait2);
0073 
0074 /* fs/fcntl.c */
0075 
0076 /* fs/inotify_user.c */
0077 COND_SYSCALL(inotify_init1);
0078 COND_SYSCALL(inotify_add_watch);
0079 COND_SYSCALL(inotify_rm_watch);
0080 
0081 /* fs/ioctl.c */
0082 
0083 /* fs/ioprio.c */
0084 COND_SYSCALL(ioprio_set);
0085 COND_SYSCALL(ioprio_get);
0086 
0087 /* fs/locks.c */
0088 COND_SYSCALL(flock);
0089 
0090 /* fs/namei.c */
0091 
0092 /* fs/namespace.c */
0093 
0094 /* fs/nfsctl.c */
0095 
0096 /* fs/open.c */
0097 
0098 /* fs/pipe.c */
0099 
0100 /* fs/quota.c */
0101 COND_SYSCALL(quotactl);
0102 COND_SYSCALL(quotactl_fd);
0103 
0104 /* fs/readdir.c */
0105 
0106 /* fs/read_write.c */
0107 
0108 /* fs/sendfile.c */
0109 
0110 /* fs/select.c */
0111 
0112 /* fs/signalfd.c */
0113 COND_SYSCALL(signalfd4);
0114 COND_SYSCALL_COMPAT(signalfd4);
0115 
0116 /* fs/splice.c */
0117 
0118 /* fs/stat.c */
0119 
0120 /* fs/sync.c */
0121 
0122 /* fs/timerfd.c */
0123 COND_SYSCALL(timerfd_create);
0124 COND_SYSCALL(timerfd_settime);
0125 COND_SYSCALL(timerfd_settime32);
0126 COND_SYSCALL(timerfd_gettime);
0127 COND_SYSCALL(timerfd_gettime32);
0128 
0129 /* fs/utimes.c */
0130 
0131 /* kernel/acct.c */
0132 COND_SYSCALL(acct);
0133 
0134 /* kernel/capability.c */
0135 COND_SYSCALL(capget);
0136 COND_SYSCALL(capset);
0137 
0138 /* kernel/exec_domain.c */
0139 
0140 /* kernel/exit.c */
0141 
0142 /* kernel/fork.c */
0143 /* __ARCH_WANT_SYS_CLONE3 */
0144 COND_SYSCALL(clone3);
0145 
0146 /* kernel/futex/syscalls.c */
0147 COND_SYSCALL(futex);
0148 COND_SYSCALL(futex_time32);
0149 COND_SYSCALL(set_robust_list);
0150 COND_SYSCALL_COMPAT(set_robust_list);
0151 COND_SYSCALL(get_robust_list);
0152 COND_SYSCALL_COMPAT(get_robust_list);
0153 COND_SYSCALL(futex_waitv);
0154 
0155 /* kernel/hrtimer.c */
0156 
0157 /* kernel/itimer.c */
0158 
0159 /* kernel/kexec.c */
0160 COND_SYSCALL(kexec_load);
0161 COND_SYSCALL_COMPAT(kexec_load);
0162 
0163 /* kernel/module.c */
0164 COND_SYSCALL(init_module);
0165 COND_SYSCALL(delete_module);
0166 
0167 /* kernel/posix-timers.c */
0168 
0169 /* kernel/printk.c */
0170 COND_SYSCALL(syslog);
0171 
0172 /* kernel/ptrace.c */
0173 
0174 /* kernel/sched/core.c */
0175 
0176 /* kernel/sys.c */
0177 COND_SYSCALL(setregid);
0178 COND_SYSCALL(setgid);
0179 COND_SYSCALL(setreuid);
0180 COND_SYSCALL(setuid);
0181 COND_SYSCALL(setresuid);
0182 COND_SYSCALL(getresuid);
0183 COND_SYSCALL(setresgid);
0184 COND_SYSCALL(getresgid);
0185 COND_SYSCALL(setfsuid);
0186 COND_SYSCALL(setfsgid);
0187 COND_SYSCALL(setgroups);
0188 COND_SYSCALL(getgroups);
0189 
0190 /* kernel/time.c */
0191 
0192 /* kernel/timer.c */
0193 
0194 /* ipc/mqueue.c */
0195 COND_SYSCALL(mq_open);
0196 COND_SYSCALL_COMPAT(mq_open);
0197 COND_SYSCALL(mq_unlink);
0198 COND_SYSCALL(mq_timedsend);
0199 COND_SYSCALL(mq_timedsend_time32);
0200 COND_SYSCALL(mq_timedreceive);
0201 COND_SYSCALL(mq_timedreceive_time32);
0202 COND_SYSCALL(mq_notify);
0203 COND_SYSCALL_COMPAT(mq_notify);
0204 COND_SYSCALL(mq_getsetattr);
0205 COND_SYSCALL_COMPAT(mq_getsetattr);
0206 
0207 /* ipc/msg.c */
0208 COND_SYSCALL(msgget);
0209 COND_SYSCALL(old_msgctl);
0210 COND_SYSCALL(msgctl);
0211 COND_SYSCALL_COMPAT(msgctl);
0212 COND_SYSCALL_COMPAT(old_msgctl);
0213 COND_SYSCALL(msgrcv);
0214 COND_SYSCALL_COMPAT(msgrcv);
0215 COND_SYSCALL(msgsnd);
0216 COND_SYSCALL_COMPAT(msgsnd);
0217 
0218 /* ipc/sem.c */
0219 COND_SYSCALL(semget);
0220 COND_SYSCALL(old_semctl);
0221 COND_SYSCALL(semctl);
0222 COND_SYSCALL_COMPAT(semctl);
0223 COND_SYSCALL_COMPAT(old_semctl);
0224 COND_SYSCALL(semtimedop);
0225 COND_SYSCALL(semtimedop_time32);
0226 COND_SYSCALL(semop);
0227 
0228 /* ipc/shm.c */
0229 COND_SYSCALL(shmget);
0230 COND_SYSCALL(old_shmctl);
0231 COND_SYSCALL(shmctl);
0232 COND_SYSCALL_COMPAT(shmctl);
0233 COND_SYSCALL_COMPAT(old_shmctl);
0234 COND_SYSCALL(shmat);
0235 COND_SYSCALL_COMPAT(shmat);
0236 COND_SYSCALL(shmdt);
0237 
0238 /* net/socket.c */
0239 COND_SYSCALL(socket);
0240 COND_SYSCALL(socketpair);
0241 COND_SYSCALL(bind);
0242 COND_SYSCALL(listen);
0243 COND_SYSCALL(accept);
0244 COND_SYSCALL(connect);
0245 COND_SYSCALL(getsockname);
0246 COND_SYSCALL(getpeername);
0247 COND_SYSCALL(setsockopt);
0248 COND_SYSCALL_COMPAT(setsockopt);
0249 COND_SYSCALL(getsockopt);
0250 COND_SYSCALL_COMPAT(getsockopt);
0251 COND_SYSCALL(sendto);
0252 COND_SYSCALL(shutdown);
0253 COND_SYSCALL(recvfrom);
0254 COND_SYSCALL_COMPAT(recvfrom);
0255 COND_SYSCALL(sendmsg);
0256 COND_SYSCALL_COMPAT(sendmsg);
0257 COND_SYSCALL(recvmsg);
0258 COND_SYSCALL_COMPAT(recvmsg);
0259 
0260 /* mm/filemap.c */
0261 
0262 /* mm/nommu.c, also with MMU */
0263 COND_SYSCALL(mremap);
0264 
0265 /* security/keys/keyctl.c */
0266 COND_SYSCALL(add_key);
0267 COND_SYSCALL(request_key);
0268 COND_SYSCALL(keyctl);
0269 COND_SYSCALL_COMPAT(keyctl);
0270 
0271 /* security/landlock/syscalls.c */
0272 COND_SYSCALL(landlock_create_ruleset);
0273 COND_SYSCALL(landlock_add_rule);
0274 COND_SYSCALL(landlock_restrict_self);
0275 
0276 /* arch/example/kernel/sys_example.c */
0277 
0278 /* mm/fadvise.c */
0279 COND_SYSCALL(fadvise64_64);
0280 COND_SYSCALL_COMPAT(fadvise64_64);
0281 
0282 /* mm/, CONFIG_MMU only */
0283 COND_SYSCALL(swapon);
0284 COND_SYSCALL(swapoff);
0285 COND_SYSCALL(mprotect);
0286 COND_SYSCALL(msync);
0287 COND_SYSCALL(mlock);
0288 COND_SYSCALL(munlock);
0289 COND_SYSCALL(mlockall);
0290 COND_SYSCALL(munlockall);
0291 COND_SYSCALL(mincore);
0292 COND_SYSCALL(madvise);
0293 COND_SYSCALL(process_madvise);
0294 COND_SYSCALL(process_mrelease);
0295 COND_SYSCALL(remap_file_pages);
0296 COND_SYSCALL(mbind);
0297 COND_SYSCALL(get_mempolicy);
0298 COND_SYSCALL(set_mempolicy);
0299 COND_SYSCALL(migrate_pages);
0300 COND_SYSCALL(move_pages);
0301 COND_SYSCALL(set_mempolicy_home_node);
0302 
0303 COND_SYSCALL(perf_event_open);
0304 COND_SYSCALL(accept4);
0305 COND_SYSCALL(recvmmsg);
0306 COND_SYSCALL(recvmmsg_time32);
0307 COND_SYSCALL_COMPAT(recvmmsg_time32);
0308 COND_SYSCALL_COMPAT(recvmmsg_time64);
0309 
0310 /*
0311  * Architecture specific syscalls: see further below
0312  */
0313 
0314 /* fanotify */
0315 COND_SYSCALL(fanotify_init);
0316 COND_SYSCALL(fanotify_mark);
0317 
0318 /* open by handle */
0319 COND_SYSCALL(name_to_handle_at);
0320 COND_SYSCALL(open_by_handle_at);
0321 COND_SYSCALL_COMPAT(open_by_handle_at);
0322 
0323 COND_SYSCALL(sendmmsg);
0324 COND_SYSCALL_COMPAT(sendmmsg);
0325 COND_SYSCALL(process_vm_readv);
0326 COND_SYSCALL_COMPAT(process_vm_readv);
0327 COND_SYSCALL(process_vm_writev);
0328 COND_SYSCALL_COMPAT(process_vm_writev);
0329 
0330 /* compare kernel pointers */
0331 COND_SYSCALL(kcmp);
0332 
0333 COND_SYSCALL(finit_module);
0334 
0335 /* operate on Secure Computing state */
0336 COND_SYSCALL(seccomp);
0337 
0338 COND_SYSCALL(memfd_create);
0339 
0340 /* access BPF programs and maps */
0341 COND_SYSCALL(bpf);
0342 
0343 /* execveat */
0344 COND_SYSCALL(execveat);
0345 
0346 COND_SYSCALL(userfaultfd);
0347 
0348 /* membarrier */
0349 COND_SYSCALL(membarrier);
0350 
0351 COND_SYSCALL(mlock2);
0352 
0353 COND_SYSCALL(copy_file_range);
0354 
0355 /* memory protection keys */
0356 COND_SYSCALL(pkey_mprotect);
0357 COND_SYSCALL(pkey_alloc);
0358 COND_SYSCALL(pkey_free);
0359 
0360 /* memfd_secret */
0361 COND_SYSCALL(memfd_secret);
0362 
0363 /*
0364  * Architecture specific weak syscall entries.
0365  */
0366 
0367 /* pciconfig: alpha, arm, arm64, ia64, sparc */
0368 COND_SYSCALL(pciconfig_read);
0369 COND_SYSCALL(pciconfig_write);
0370 COND_SYSCALL(pciconfig_iobase);
0371 
0372 /* sys_socketcall: arm, mips, x86, ... */
0373 COND_SYSCALL(socketcall);
0374 COND_SYSCALL_COMPAT(socketcall);
0375 
0376 /* compat syscalls for arm64, x86, ... */
0377 COND_SYSCALL_COMPAT(fanotify_mark);
0378 
0379 /* x86 */
0380 COND_SYSCALL(vm86old);
0381 COND_SYSCALL(modify_ldt);
0382 COND_SYSCALL(vm86);
0383 COND_SYSCALL(kexec_file_load);
0384 
0385 /* s390 */
0386 COND_SYSCALL(s390_pci_mmio_read);
0387 COND_SYSCALL(s390_pci_mmio_write);
0388 COND_SYSCALL(s390_ipc);
0389 COND_SYSCALL_COMPAT(s390_ipc);
0390 
0391 /* powerpc */
0392 COND_SYSCALL(rtas);
0393 COND_SYSCALL(spu_run);
0394 COND_SYSCALL(spu_create);
0395 COND_SYSCALL(subpage_prot);
0396 
0397 
0398 /*
0399  * Deprecated system calls which are still defined in
0400  * include/uapi/asm-generic/unistd.h and wanted by >= 1 arch
0401  */
0402 
0403 /* __ARCH_WANT_SYSCALL_NO_FLAGS */
0404 COND_SYSCALL(epoll_create);
0405 COND_SYSCALL(inotify_init);
0406 COND_SYSCALL(eventfd);
0407 COND_SYSCALL(signalfd);
0408 COND_SYSCALL_COMPAT(signalfd);
0409 
0410 /* __ARCH_WANT_SYSCALL_OFF_T */
0411 COND_SYSCALL(fadvise64);
0412 
0413 /* __ARCH_WANT_SYSCALL_DEPRECATED */
0414 COND_SYSCALL(epoll_wait);
0415 COND_SYSCALL(recv);
0416 COND_SYSCALL_COMPAT(recv);
0417 COND_SYSCALL(send);
0418 COND_SYSCALL(uselib);
0419 
0420 /* optional: time32 */
0421 COND_SYSCALL(time32);
0422 COND_SYSCALL(stime32);
0423 COND_SYSCALL(utime32);
0424 COND_SYSCALL(adjtimex_time32);
0425 COND_SYSCALL(sched_rr_get_interval_time32);
0426 COND_SYSCALL(nanosleep_time32);
0427 COND_SYSCALL(rt_sigtimedwait_time32);
0428 COND_SYSCALL_COMPAT(rt_sigtimedwait_time32);
0429 COND_SYSCALL(timer_settime32);
0430 COND_SYSCALL(timer_gettime32);
0431 COND_SYSCALL(clock_settime32);
0432 COND_SYSCALL(clock_gettime32);
0433 COND_SYSCALL(clock_getres_time32);
0434 COND_SYSCALL(clock_nanosleep_time32);
0435 COND_SYSCALL(utimes_time32);
0436 COND_SYSCALL(futimesat_time32);
0437 COND_SYSCALL(pselect6_time32);
0438 COND_SYSCALL_COMPAT(pselect6_time32);
0439 COND_SYSCALL(ppoll_time32);
0440 COND_SYSCALL_COMPAT(ppoll_time32);
0441 COND_SYSCALL(utimensat_time32);
0442 COND_SYSCALL(clock_adjtime32);
0443 
0444 /*
0445  * The syscalls below are not found in include/uapi/asm-generic/unistd.h
0446  */
0447 
0448 /* obsolete: SGETMASK_SYSCALL */
0449 COND_SYSCALL(sgetmask);
0450 COND_SYSCALL(ssetmask);
0451 
0452 /* obsolete: SYSFS_SYSCALL */
0453 COND_SYSCALL(sysfs);
0454 
0455 /* obsolete: __ARCH_WANT_SYS_IPC */
0456 COND_SYSCALL(ipc);
0457 COND_SYSCALL_COMPAT(ipc);
0458 
0459 /* obsolete: UID16 */
0460 COND_SYSCALL(chown16);
0461 COND_SYSCALL(fchown16);
0462 COND_SYSCALL(getegid16);
0463 COND_SYSCALL(geteuid16);
0464 COND_SYSCALL(getgid16);
0465 COND_SYSCALL(getgroups16);
0466 COND_SYSCALL(getresgid16);
0467 COND_SYSCALL(getresuid16);
0468 COND_SYSCALL(getuid16);
0469 COND_SYSCALL(lchown16);
0470 COND_SYSCALL(setfsgid16);
0471 COND_SYSCALL(setfsuid16);
0472 COND_SYSCALL(setgid16);
0473 COND_SYSCALL(setgroups16);
0474 COND_SYSCALL(setregid16);
0475 COND_SYSCALL(setresgid16);
0476 COND_SYSCALL(setresuid16);
0477 COND_SYSCALL(setreuid16);
0478 COND_SYSCALL(setuid16);
0479 
0480 /* restartable sequence */
0481 COND_SYSCALL(rseq);