1 // SPDX-License-Identifier: GPL-2.0
2 #include <test_progs.h>
10 #include "test_send_signal_kern.skel.h"
12 static void sigusr1_handler(int signum)
16 #define THREAD_COUNT 100
18 static void *worker(void *p)
22 for ( i = 0; i < 1000; i++)
28 /* NOTE: cause events loss */
29 void serial_test_send_signal_sched_switch(void)
31 struct test_send_signal_kern *skel;
32 pthread_t threads[THREAD_COUNT];
36 signal(SIGUSR1, sigusr1_handler);
38 skel = test_send_signal_kern__open_and_load();
39 if (CHECK(!skel, "skel_open_and_load", "skeleton open_and_load failed\n"))
42 skel->bss->pid = getpid();
43 skel->bss->sig = SIGUSR1;
45 err = test_send_signal_kern__attach(skel);
46 if (CHECK(err, "skel_attach", "skeleton attach failed\n"))
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",
56 for (i = 0; i < THREAD_COUNT; i++)
57 pthread_join(threads[i], NULL);
60 test_send_signal_kern__destroy(skel);