brintos

brintos / linux-shallow public Read only

0
0
Text · 1.3 KiB · 15dacfc Raw
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