/* setidle.c: tell kernel to use SCHED_IDLE policy for an existing process
and its future descendents. These background processes run only when some
cpu would otherwise be idle. The process's priority is never dynamically
escalated to the point where its I/O actions may compete with that of
higher priority work */
#include <sched.h>
#include <errno.h>
#include <stdio.h>
#define SCHED_IDLE 6006
int main(int argc, char *argv[])
{
int pid;
struct sched_param param = { 0 };
if (argc != 2) {
printf("usage: %s pid\n", argv[0]);
return EINVAL;
}
pid = atoi(argv[1]);
if (sched_setscheduler(pid, SCHED_IDLE, ¶m) == -1) {
perror("error sched_setscheduler");
return -1;
}
return 0;
}