/kernel/linux/linux-5.10/tools/testing/selftests/pidfd/ |
H A D | pidfd_wait.c | 19 #include "pidfd.h" 42 int pidfd = -1; in TEST() local 46 .pidfd = ptr_to_u64(&pidfd), in TEST() 55 pidfd = open("/proc/self", O_DIRECTORY | O_RDONLY | O_CLOEXEC); in TEST() 56 ASSERT_GE(pidfd, 0); in TEST() 58 pid = sys_waitid(P_PIDFD, pidfd, &info, WEXITED, NULL); in TEST() 60 EXPECT_EQ(close(pidfd), 0); in TEST() 61 pidfd = -1; in TEST() 63 pidfd in TEST() 90 int pidfd = -1; TEST() local 142 int pidfd, status = 0; TEST() local [all...] |
H A D | pidfd_test.c | 22 #include "pidfd.h" 33 static pid_t pidfd_clone(int flags, int *pidfd, int (*fn)(void *)) in pidfd_clone() argument 39 return __clone2(fn, stack, stack_size, flags | SIGCHLD, NULL, pidfd); in pidfd_clone() 41 return clone(fn, stack + stack_size, flags | SIGCHLD, NULL, pidfd); in pidfd_clone() 59 int pidfd, ret; in test_pidfd_send_signal_simple_success() local 69 pidfd = open("/proc/self", O_DIRECTORY | O_CLOEXEC); in test_pidfd_send_signal_simple_success() 70 if (pidfd < 0) in test_pidfd_send_signal_simple_success() 77 ret = sys_pidfd_send_signal(pidfd, SIGUSR1, NULL, 0); in test_pidfd_send_signal_simple_success() 78 close(pidfd); in test_pidfd_send_signal_simple_success() 94 int pidfd, re in test_pidfd_send_signal_exited_fail() local 200 int pidfd = -1; test_pidfd_send_signal_recycled_pid_fail() local 352 int pidfd, ret; test_pidfd_send_signal_syscall_support() local 394 poll_pidfd(const char *test_name, int pidfd) poll_pidfd() argument 442 int pid, pidfd = 0; test_pidfd_poll_exec() local 508 int pid, pidfd = 0; test_pidfd_poll_leader_exit() local [all...] |
H A D | pidfd_open_test.c | 21 #include "pidfd.h" 86 static pid_t get_pid_from_fdinfo_file(int pidfd, const char *key, size_t keylen) in get_pid_from_fdinfo_file() argument 95 snprintf(path, sizeof(path), "/proc/self/fdinfo/%d", pidfd); in get_pid_from_fdinfo_file() 123 int pidfd = -1, ret = 1; in main() local 128 pidfd = sys_pidfd_open(-1, 0); in main() 129 if (pidfd >= 0) { in main() 131 "%s - succeeded to open pidfd for invalid pid -1\n", in main() 137 pidfd = sys_pidfd_open(getpid(), 1); in main() 138 if (pidfd >= 0) { in main() 140 "%s - succeeded to open pidfd wit in main() [all...] |
H A D | pidfd_poll_test.c | 16 #include "pidfd.h" 44 ksft_print_msg("running pidfd poll test for %d iterations\n", in main() 48 int pidfd; in main() local 68 pidfd = sys_pidfd_open(child_pid, 0); in main() 69 if (pidfd < 0) in main() 80 if (sys_pidfd_send_signal(pidfd, SIGKILL, NULL, 0)) in main() 85 fds.fd = pidfd; in main() 106 close(pidfd); in main() 114 ksft_test_result_pass("pidfd poll test: pass\n"); in main()
|
H A D | pidfd_getfd_test.c | 20 #include "pidfd.h" 125 /* pidfd is the pidfd of the child */ in FIXTURE() 126 int pidfd; in FIXTURE() local 155 self->pidfd = sys_pidfd_open(self->pid, 0); in FIXTURE_SETUP() 156 ASSERT_GE(self->pidfd, 0); in FIXTURE_SETUP() 168 EXPECT_EQ(0, close(self->pidfd)); in FIXTURE_TEARDOWN() 192 fd = sys_pidfd_getfd(self->pidfd, self->remote_fd, 0); in TEST_F() 204 fd = sys_pidfd_getfd(self->pidfd, self->remote_fd, 0); in TEST_F() 223 fd = sys_pidfd_getfd(self->pidfd, UNKNOWN_F in TEST_F() [all...] |
H A D | pidfd_fdinfo_test.c | 17 #include "pidfd.h" 163 static int verify_fdinfo(int pidfd, struct error *err, const char *prefix, in verify_fdinfo() argument 180 snprintf(path, sizeof(path), "/proc/self/fdinfo/%d", pidfd); in verify_fdinfo() 184 pidfd); in verify_fdinfo() 210 prefix, pidfd); in verify_fdinfo() 218 int pidfd; in child_fdinfo_nspid_test() local 225 /* verify that we can not resolve the pidfd for a process in child_fdinfo_nspid_test() 242 pidfd = *(int *)args; in child_fdinfo_nspid_test() 243 r = verify_fdinfo(pidfd, &err, "NSpid:", 6, "\t0\n"); in child_fdinfo_nspid_test() 255 const char *test_name = "pidfd chec in test_pidfd_fdinfo_nspid() [all...] |
H A D | pidfd.h | 102 static inline int sys_pidfd_send_signal(int pidfd, int sig, siginfo_t *info, in sys_pidfd_send_signal() argument 105 return syscall(__NR_pidfd_send_signal, pidfd, sig, info, flags); in sys_pidfd_send_signal() 108 static inline int sys_pidfd_getfd(int pidfd, int fd, int flags) in sys_pidfd_getfd() argument 110 return syscall(__NR_pidfd_getfd, pidfd, fd, flags); in sys_pidfd_getfd()
|
H A D | pidfd_setns_test.c | 20 #include "pidfd.h" 55 int pidfd; in FIXTURE() local 75 pid_t create_child(int *pidfd, unsigned flags) in create_child() argument 80 .pidfd = ptr_to_u64(pidfd), in create_child() 153 self->pidfd = sys_pidfd_open(self->pid, 0); in FIXTURE_SETUP() 154 EXPECT_GT(self->pidfd, 0) { in FIXTURE_SETUP() 155 TH_LOG("%m - Failed to open pidfd for process %d", self->pid); in FIXTURE_SETUP() 168 self->pidfd = sys_pidfd_open(self->pid, 0); in FIXTURE_SETUP() 169 EXPECT_GE(self->pidfd, in FIXTURE_SETUP() [all...] |
/kernel/linux/linux-6.6/tools/testing/selftests/pidfd/ |
H A D | pidfd_wait.c | 19 #include "pidfd.h" 42 int pidfd = -1; in TEST() local 46 .pidfd = ptr_to_u64(&pidfd), in TEST() 55 pidfd = open("/proc/self", O_DIRECTORY | O_RDONLY | O_CLOEXEC); in TEST() 56 ASSERT_GE(pidfd, 0); in TEST() 58 pid = sys_waitid(P_PIDFD, pidfd, &info, WEXITED, NULL); in TEST() 60 EXPECT_EQ(close(pidfd), 0); in TEST() 61 pidfd = -1; in TEST() 63 pidfd in TEST() 90 int pidfd = -1; TEST() local 151 int pidfd; TEST() local [all...] |
H A D | pidfd_test.c | 22 #include "pidfd.h" 33 static pid_t pidfd_clone(int flags, int *pidfd, int (*fn)(void *)) in pidfd_clone() argument 39 return __clone2(fn, stack, stack_size, flags | SIGCHLD, NULL, pidfd); in pidfd_clone() 41 return clone(fn, stack + stack_size, flags | SIGCHLD, NULL, pidfd); in pidfd_clone() 59 int pidfd, ret; in test_pidfd_send_signal_simple_success() local 69 pidfd = open("/proc/self", O_DIRECTORY | O_CLOEXEC); in test_pidfd_send_signal_simple_success() 70 if (pidfd < 0) in test_pidfd_send_signal_simple_success() 77 ret = sys_pidfd_send_signal(pidfd, SIGUSR1, NULL, 0); in test_pidfd_send_signal_simple_success() 78 close(pidfd); in test_pidfd_send_signal_simple_success() 94 int pidfd, re in test_pidfd_send_signal_exited_fail() local 201 int pidfd = -1; test_pidfd_send_signal_recycled_pid_fail() local 353 int pidfd, ret; test_pidfd_send_signal_syscall_support() local 395 poll_pidfd(const char *test_name, int pidfd) poll_pidfd() argument 445 int pid, pidfd = 0; test_pidfd_poll_exec() local 511 int pid, pidfd = 0; test_pidfd_poll_leader_exit() local [all...] |
H A D | pidfd_open_test.c | 21 #include "pidfd.h" 86 static pid_t get_pid_from_fdinfo_file(int pidfd, const char *key, size_t keylen) in get_pid_from_fdinfo_file() argument 95 snprintf(path, sizeof(path), "/proc/self/fdinfo/%d", pidfd); in get_pid_from_fdinfo_file() 123 int pidfd = -1, ret = 1; in main() local 128 pidfd = sys_pidfd_open(-1, 0); in main() 129 if (pidfd >= 0) { in main() 131 "%s - succeeded to open pidfd for invalid pid -1\n", in main() 137 pidfd = sys_pidfd_open(getpid(), 1); in main() 138 if (pidfd >= 0) { in main() 140 "%s - succeeded to open pidfd wit in main() [all...] |
H A D | pidfd_poll_test.c | 16 #include "pidfd.h" 44 ksft_print_msg("running pidfd poll test for %d iterations\n", in main() 48 int pidfd; in main() local 68 pidfd = sys_pidfd_open(child_pid, 0); in main() 69 if (pidfd < 0) in main() 80 if (sys_pidfd_send_signal(pidfd, SIGKILL, NULL, 0)) in main() 85 fds.fd = pidfd; in main() 106 close(pidfd); in main() 114 ksft_test_result_pass("pidfd poll test: pass\n"); in main()
|
H A D | pidfd_getfd_test.c | 20 #include "pidfd.h" 125 /* pidfd is the pidfd of the child */ in FIXTURE() 126 int pidfd; in FIXTURE() local 155 self->pidfd = sys_pidfd_open(self->pid, 0); in FIXTURE_SETUP() 156 ASSERT_GE(self->pidfd, 0); in FIXTURE_SETUP() 168 EXPECT_EQ(0, close(self->pidfd)); in FIXTURE_TEARDOWN() 192 fd = sys_pidfd_getfd(self->pidfd, self->remote_fd, 0); in TEST_F() 204 fd = sys_pidfd_getfd(self->pidfd, self->remote_fd, 0); in TEST_F() 223 fd = sys_pidfd_getfd(self->pidfd, UNKNOWN_F in TEST_F() [all...] |
H A D | pidfd.h | 101 static inline int sys_pidfd_send_signal(int pidfd, int sig, siginfo_t *info, in sys_pidfd_send_signal() argument 104 return syscall(__NR_pidfd_send_signal, pidfd, sig, info, flags); in sys_pidfd_send_signal() 107 static inline int sys_pidfd_getfd(int pidfd, int fd, int flags) in sys_pidfd_getfd() argument 109 return syscall(__NR_pidfd_getfd, pidfd, fd, flags); in sys_pidfd_getfd()
|
H A D | pidfd_setns_test.c | 20 #include "pidfd.h" 55 int pidfd; in FIXTURE() local 75 pid_t create_child(int *pidfd, unsigned flags) in create_child() argument 80 .pidfd = ptr_to_u64(pidfd), in create_child() 153 self->pidfd = sys_pidfd_open(self->pid, 0); in FIXTURE_SETUP() 154 EXPECT_GT(self->pidfd, 0) { in FIXTURE_SETUP() 155 TH_LOG("%m - Failed to open pidfd for process %d", self->pid); in FIXTURE_SETUP() 168 self->pidfd = sys_pidfd_open(self->pid, 0); in FIXTURE_SETUP() 169 EXPECT_GE(self->pidfd, in FIXTURE_SETUP() [all...] |
H A D | pidfd_fdinfo_test.c | 17 #include "pidfd.h" 164 static int verify_fdinfo(int pidfd, struct error *err, const char *prefix, in verify_fdinfo() argument 181 snprintf(path, sizeof(path), "/proc/self/fdinfo/%d", pidfd); in verify_fdinfo() 185 pidfd); in verify_fdinfo() 211 prefix, pidfd); in verify_fdinfo() 219 int pidfd; in child_fdinfo_nspid_test() local 226 /* verify that we can not resolve the pidfd for a process in child_fdinfo_nspid_test() 243 pidfd = *(int *)args; in child_fdinfo_nspid_test() 244 r = verify_fdinfo(pidfd, &err, "NSpid:", 6, "\t0\n"); in child_fdinfo_nspid_test() 256 const char *test_name = "pidfd chec in test_pidfd_fdinfo_nspid() [all...] |
/kernel/linux/linux-5.10/samples/pidfd/ |
H A D | pidfd-metadata.c | 34 static pid_t pidfd_clone(int flags, int *pidfd) in pidfd_clone() argument 40 return __clone2(do_child, stack, stack_size, flags | SIGCHLD, NULL, pidfd); in pidfd_clone() 42 return clone(do_child, stack + stack_size, flags | SIGCHLD, NULL, pidfd); in pidfd_clone() 46 static inline int sys_pidfd_send_signal(int pidfd, int sig, siginfo_t *info, in sys_pidfd_send_signal() argument 49 return syscall(__NR_pidfd_send_signal, pidfd, sig, info, flags); in sys_pidfd_send_signal() 52 static int pidfd_metadata_fd(pid_t pid, int pidfd) in pidfd_metadata_fd() argument 68 ret = sys_pidfd_send_signal(pidfd, 0, NULL, 0); in pidfd_metadata_fd() 86 int pidfd = -1, ret = EXIT_FAILURE; in main() local 92 pid = pidfd_clone(CLONE_PIDFD, &pidfd); in main() 95 if (pidfd in main() [all...] |
/kernel/linux/linux-6.6/samples/pidfd/ |
H A D | pidfd-metadata.c | 34 static pid_t pidfd_clone(int flags, int *pidfd) in pidfd_clone() argument 40 return __clone2(do_child, stack, stack_size, flags | SIGCHLD, NULL, pidfd); in pidfd_clone() 42 return clone(do_child, stack + stack_size, flags | SIGCHLD, NULL, pidfd); in pidfd_clone() 46 static inline int sys_pidfd_send_signal(int pidfd, int sig, siginfo_t *info, in sys_pidfd_send_signal() argument 49 return syscall(__NR_pidfd_send_signal, pidfd, sig, info, flags); in sys_pidfd_send_signal() 52 static int pidfd_metadata_fd(pid_t pid, int pidfd) in pidfd_metadata_fd() argument 68 ret = sys_pidfd_send_signal(pidfd, 0, NULL, 0); in pidfd_metadata_fd() 86 int pidfd = -1, ret = EXIT_FAILURE; in main() local 92 pid = pidfd_clone(CLONE_PIDFD, &pidfd); in main() 95 if (pidfd in main() [all...] |
/kernel/linux/linux-6.6/tools/testing/selftests/mm/ |
H A D | mrelease_test.c | 55 static void run_negative_tests(int pidfd) in run_negative_tests() argument 59 if (!syscall(__NR_process_mrelease, pidfd, (unsigned int)-1) || in run_negative_tests() 69 if (!syscall(__NR_process_mrelease, pidfd, 0) || errno != EINVAL) { in run_negative_tests() 89 int pipefd[2], pidfd; in main() local 96 /* Test a wrong pidfd */ in main() 99 perror("process_mrelease with wrong pidfd"); in main() 143 pidfd = syscall(__NR_pidfd_open, pid, 0); in main() 144 if (pidfd < 0) { in main() 152 run_negative_tests(pidfd); in main() 160 success = (syscall(__NR_process_mrelease, pidfd, in main() [all...] |
/kernel/linux/linux-6.6/kernel/ |
H A D | pid.c | 46 #include <uapi/linux/pidfd.h> 547 * pidfd_get_task() - Get the task associated with a pidfd 549 * @pidfd: pidfd for which to get the task 550 * @flags: flags associated with this pidfd 552 * Return the task associated with @pidfd. The function takes a reference on 555 * Currently, the process identified by @pidfd is always a thread-group leader. 556 * This restriction currently exists for all aspects of pidfds including pidfd 557 * creation (CLONE_PIDFD cannot be used with CLONE_THREAD) and pidfd polling 560 * Return: On success, the task_struct associated with the pidfd 563 pidfd_get_task(int pidfd, unsigned int *flags) pidfd_get_task() argument 600 int pidfd; pidfd_create() local [all...] |
/kernel/linux/linux-6.6/tools/testing/selftests/net/af_unix/ |
H A D | scm_pidfd.c | 93 /* borrowed (with all helpers) from pidfd/pidfd_open_test.c */ 94 static pid_t get_pid_from_fdinfo_file(int pidfd, const char *key, size_t keylen) in get_pid_from_fdinfo_file() argument 103 snprintf(path, sizeof(path), "/proc/self/fdinfo/%d", pidfd); in get_pid_from_fdinfo_file() 138 int *pidfd = NULL; in cmsg_check() local 165 if (cmsg->cmsg_len < sizeof(*pidfd)) { in cmsg_check() 170 pidfd = (void *)CMSG_DATA(cmsg); in cmsg_check() 190 if (!pidfd) { in cmsg_check() 200 /* pidfd from SCM_PIDFD should point to the parent process PID */ in cmsg_check() 202 get_pid_from_fdinfo_file(*pidfd, "Pid:", sizeof("Pid:") - 1); in cmsg_check()
|
/kernel/linux/linux-6.6/tools/testing/selftests/pid_namespace/ |
H A D | Makefile | 6 LOCAL_HDRS += $(selfdir)/pidfd/pidfd.h
|
/kernel/linux/linux-5.10/tools/testing/selftests/pid_namespace/ |
H A D | Makefile | 8 $(OUTPUT)/regression_enomem: regression_enomem.c ../pidfd/pidfd.h
|
/kernel/linux/linux-6.6/include/net/ |
H A D | scm.h | 127 int len, pidfd; in scm_pidfd_recv() local 145 pidfd = pidfd_prepare(scm->pid, 0, &pidfd_file); in scm_pidfd_recv() 147 if (put_cmsg(msg, SOL_SOCKET, SCM_PIDFD, sizeof(int), &pidfd)) { in scm_pidfd_recv() 149 put_unused_fd(pidfd); in scm_pidfd_recv() 157 fd_install(pidfd, pidfd_file); in scm_pidfd_recv()
|
/kernel/linux/linux-6.6/tools/testing/selftests/cgroup/ |
H A D | Makefile | 18 LOCAL_HDRS += $(selfdir)/clone3/clone3_selftests.h $(selfdir)/pidfd/pidfd.h
|