/* 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; | |
} |