1*cf5a6c84SAndroid Build Coastguard Worker /* nice.c - Run a program at a different niceness level. 2*cf5a6c84SAndroid Build Coastguard Worker * 3*cf5a6c84SAndroid Build Coastguard Worker * Copyright 2010 Rob Landley <[email protected]> 4*cf5a6c84SAndroid Build Coastguard Worker * 5*cf5a6c84SAndroid Build Coastguard Worker * See http://opengroup.org/onlinepubs/9699919799/utilities/nice.html 6*cf5a6c84SAndroid Build Coastguard Worker 7*cf5a6c84SAndroid Build Coastguard Worker USE_NICE(NEWTOY(nice, "^<1n#", TOYFLAG_BIN)) 8*cf5a6c84SAndroid Build Coastguard Worker 9*cf5a6c84SAndroid Build Coastguard Worker config NICE 10*cf5a6c84SAndroid Build Coastguard Worker bool "nice" 11*cf5a6c84SAndroid Build Coastguard Worker default y 12*cf5a6c84SAndroid Build Coastguard Worker help 13*cf5a6c84SAndroid Build Coastguard Worker usage: nice [-n PRIORITY] COMMAND... 14*cf5a6c84SAndroid Build Coastguard Worker 15*cf5a6c84SAndroid Build Coastguard Worker Run a command line at an increased or decreased scheduling priority. 16*cf5a6c84SAndroid Build Coastguard Worker 17*cf5a6c84SAndroid Build Coastguard Worker Higher numbers make a program yield more CPU time, from -20 (highest 18*cf5a6c84SAndroid Build Coastguard Worker priority) to 19 (lowest). By default processes inherit their parent's 19*cf5a6c84SAndroid Build Coastguard Worker niceness (usually 0). By default this command adds 10 to the parent's 20*cf5a6c84SAndroid Build Coastguard Worker priority. Only root can set a negative niceness level. 21*cf5a6c84SAndroid Build Coastguard Worker 22*cf5a6c84SAndroid Build Coastguard Worker -n Add given adjustment to priority (default 10) 23*cf5a6c84SAndroid Build Coastguard Worker */ 24*cf5a6c84SAndroid Build Coastguard Worker 25*cf5a6c84SAndroid Build Coastguard Worker #define FOR_nice 26*cf5a6c84SAndroid Build Coastguard Worker #include "toys.h" 27*cf5a6c84SAndroid Build Coastguard Worker GLOBALS(long n;)28*cf5a6c84SAndroid Build Coastguard WorkerGLOBALS( 29*cf5a6c84SAndroid Build Coastguard Worker long n; 30*cf5a6c84SAndroid Build Coastguard Worker ) 31*cf5a6c84SAndroid Build Coastguard Worker 32*cf5a6c84SAndroid Build Coastguard Worker void nice_main(void) 33*cf5a6c84SAndroid Build Coastguard Worker { 34*cf5a6c84SAndroid Build Coastguard Worker if (!toys.optflags) TT.n = 10; 35*cf5a6c84SAndroid Build Coastguard Worker 36*cf5a6c84SAndroid Build Coastguard Worker errno = 0; 37*cf5a6c84SAndroid Build Coastguard Worker if (nice(TT.n)==-1 && errno) { 38*cf5a6c84SAndroid Build Coastguard Worker toys.exitval = 125; 39*cf5a6c84SAndroid Build Coastguard Worker perror_exit("Can't set priority"); 40*cf5a6c84SAndroid Build Coastguard Worker } 41*cf5a6c84SAndroid Build Coastguard Worker xexec(toys.optargs); 42*cf5a6c84SAndroid Build Coastguard Worker } 43