xref: /aosp_15_r20/external/autotest/client/tools/setidle.c (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
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 Li int 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, &param) == -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