1*9c5db199SXin Li /* setidle.c: tell kernel to use SCHED_IDLE policy for an existing process 2*9c5db199SXin Li and its future descendents. These background processes run only when some 3*9c5db199SXin Li cpu would otherwise be idle. The process's priority is never dynamically 4*9c5db199SXin Li escalated to the point where its I/O actions may compete with that of 5*9c5db199SXin Li higher priority work */ 6*9c5db199SXin Li 7*9c5db199SXin Li #include <sched.h> 8*9c5db199SXin Li #include <errno.h> 9*9c5db199SXin Li #include <stdio.h> 10*9c5db199SXin Li 11*9c5db199SXin Li #define SCHED_IDLE 6006 12*9c5db199SXin Li main(int argc,char * argv[])13*9c5db199SXin Liint main(int argc, char *argv[]) 14*9c5db199SXin Li { 15*9c5db199SXin Li int pid; 16*9c5db199SXin Li struct sched_param param = { 0 }; 17*9c5db199SXin Li 18*9c5db199SXin Li if (argc != 2) { 19*9c5db199SXin Li printf("usage: %s pid\n", argv[0]); 20*9c5db199SXin Li return EINVAL; 21*9c5db199SXin Li } 22*9c5db199SXin Li 23*9c5db199SXin Li pid = atoi(argv[1]); 24*9c5db199SXin Li 25*9c5db199SXin Li if (sched_setscheduler(pid, SCHED_IDLE, ¶m) == -1) { 26*9c5db199SXin Li perror("error sched_setscheduler"); 27*9c5db199SXin Li return -1; 28*9c5db199SXin Li } 29*9c5db199SXin Li return 0; 30*9c5db199SXin Li } 31