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