1 // SPDX-License-Identifier: GPL-2.0 2 #include <test_progs.h> 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <sys/mman.h> 6 #include <pthread.h> 7 #include <sys/types.h> 8 #include <sys/stat.h> 9 #include <fcntl.h> 10 #include "test_send_signal_kern.skel.h" 11 12 static void sigusr1_handler(int signum) 13 { 14 } 15 16 #define THREAD_COUNT 100 17 18 static void *worker(void *p) 19 { 20 int i; 21 22 for ( i = 0; i < 1000; i++) 23 usleep(1); 24 25 return NULL; 26 } 27 28 /* NOTE: cause events loss */ 29 void serial_test_send_signal_sched_switch(void) 30 { 31 struct test_send_signal_kern *skel; 32 pthread_t threads[THREAD_COUNT]; 33 u32 duration = 0; 34 int i, err; 35 36 signal(SIGUSR1, sigusr1_handler); 37 38 skel = test_send_signal_kern__open_and_load(); 39 if (CHECK(!skel, "skel_open_and_load", "skeleton open_and_load failed\n")) 40 return; 41 42 skel->bss->pid = getpid(); 43 skel->bss->sig = SIGUSR1; 44 45 err = test_send_signal_kern__attach(skel); 46 if (CHECK(err, "skel_attach", "skeleton attach failed\n")) 47 goto destroy_skel; 48 49 for (i = 0; i < THREAD_COUNT; i++) { 50 err = pthread_create(threads + i, NULL, worker, NULL); 51 if (CHECK(err, "pthread_create", "Error creating thread, %s\n", 52 strerror(errno))) 53 goto destroy_skel; 54 } 55 56 for (i = 0; i < THREAD_COUNT; i++) 57 pthread_join(threads[i], NULL); 58 59 destroy_skel: 60 test_send_signal_kern__destroy(skel); 61 } 62
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.