157257Sdufault#include <errno.h>
257257Sdufault#include <unistd.h>
357257Sdufault#include <sched.h>
457257Sdufault#include <stdio.h>
557257Sdufault
657257Sdufault#include <err.h>
757257Sdufault#include <sysexits.h>
857257Sdufault#include "prutil.h"
957257Sdufault
1057257Sdufault/*
1157257Sdufault * $FreeBSD$
1257257Sdufault */
1357257Sdufaultvoid quit(const char *text)
1457257Sdufault{
1557257Sdufault	err(errno, text);
1657257Sdufault}
1757257Sdufault
1857257Sdufaultchar *sched_text(int scheduler)
1957257Sdufault{
2057257Sdufault	switch(scheduler)
2157257Sdufault	{
2257257Sdufault		case SCHED_FIFO:
2357257Sdufault		return "SCHED_FIFO";
2457257Sdufault
2557257Sdufault		case SCHED_RR:
2657257Sdufault		return "SCHED_RR";
2757257Sdufault
2857257Sdufault		case SCHED_OTHER:
2957257Sdufault		return "SCHED_OTHER";
3057257Sdufault
3157257Sdufault		default:
3257257Sdufault		return "Illegal scheduler value";
3357257Sdufault	}
3457257Sdufault}
3557257Sdufault
3657257Sdufaultint sched_is(int line, struct sched_param *p, int shouldbe)
3757257Sdufault{
3857257Sdufault	int scheduler;
3957257Sdufault	struct sched_param param;
4057257Sdufault
4157257Sdufault	/* What scheduler are we running now?
4257257Sdufault	 */
4357257Sdufault	errno = 0;
4457257Sdufault	scheduler = sched_getscheduler(0);
4557257Sdufault	if (sched_getparam(0, &param))
4657257Sdufault		quit("sched_getparam");
4757257Sdufault
4857257Sdufault	if (p)
4957257Sdufault		*p = param;
5057257Sdufault
5157257Sdufault	if (shouldbe != -1 && scheduler != shouldbe)
5257257Sdufault	{
5357257Sdufault		fprintf(stderr,
5457257Sdufault		"At line %d the scheduler should be %s yet it is %s.\n",
5557257Sdufault		line, sched_text(shouldbe), sched_text(scheduler));
5657257Sdufault
5757257Sdufault		exit(-1);
5857257Sdufault	}
5957257Sdufault
6057257Sdufault	return scheduler;
6157257Sdufault}
62