xref: /freebsd/tools/regression/p1003_1b/prutil.c (revision 123af6ec70016f5556da5972d4d63c7d175c06d3)
1 #include <err.h>
2 #include <errno.h>
3 #include <sched.h>
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <sysexits.h>
7 #include <unistd.h>
8 
9 #include "prutil.h"
10 
11 /*
12  * $FreeBSD$
13  */
14 void quit(const char *text)
15 {
16 	err(errno, "%s", text);
17 }
18 
19 char *sched_text(int scheduler)
20 {
21 	switch(scheduler)
22 	{
23 		case SCHED_FIFO:
24 		return "SCHED_FIFO";
25 
26 		case SCHED_RR:
27 		return "SCHED_RR";
28 
29 		case SCHED_OTHER:
30 		return "SCHED_OTHER";
31 
32 		default:
33 		return "Illegal scheduler value";
34 	}
35 }
36 
37 int sched_is(int line, struct sched_param *p, int shouldbe)
38 {
39 	int scheduler;
40 	struct sched_param param;
41 
42 	/* What scheduler are we running now?
43 	 */
44 	errno = 0;
45 	scheduler = sched_getscheduler(0);
46 	if (sched_getparam(0, &param))
47 		quit("sched_getparam");
48 
49 	if (p)
50 		*p = param;
51 
52 	if (shouldbe != -1 && scheduler != shouldbe)
53 	{
54 		fprintf(stderr,
55 		"At line %d the scheduler should be %s yet it is %s.\n",
56 		line, sched_text(shouldbe), sched_text(scheduler));
57 
58 		exit(-1);
59 	}
60 
61 	return scheduler;
62 }
63