62 lines · c
1// SPDX-License-Identifier: GPL-2.02#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 12static void sigusr1_handler(int signum)13{14}15 16#define THREAD_COUNT 10017 18static 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 */29void 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 59destroy_skel:60 test_send_signal_kern__destroy(skel);61}62