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