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, ¶m)) 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