1*cf5a6c84SAndroid Build Coastguard Worker /* renice.c - renice process 2*cf5a6c84SAndroid Build Coastguard Worker * 3*cf5a6c84SAndroid Build Coastguard Worker * Copyright 2013 CE Strake <strake888 at gmail.com> 4*cf5a6c84SAndroid Build Coastguard Worker * 5*cf5a6c84SAndroid Build Coastguard Worker * See http://pubs.opengroup.org/onlinepubs/9699919799/utilities/renice.html 6*cf5a6c84SAndroid Build Coastguard Worker 7*cf5a6c84SAndroid Build Coastguard Worker USE_RENICE(NEWTOY(renice, "<1gpun#|", TOYFLAG_USR|TOYFLAG_BIN)) 8*cf5a6c84SAndroid Build Coastguard Worker 9*cf5a6c84SAndroid Build Coastguard Worker config RENICE 10*cf5a6c84SAndroid Build Coastguard Worker bool "renice" 11*cf5a6c84SAndroid Build Coastguard Worker default y 12*cf5a6c84SAndroid Build Coastguard Worker help 13*cf5a6c84SAndroid Build Coastguard Worker usage: renice [-gpu] -n INCREMENT ID... 14*cf5a6c84SAndroid Build Coastguard Worker 15*cf5a6c84SAndroid Build Coastguard Worker -g Group ids 16*cf5a6c84SAndroid Build Coastguard Worker -p Process ids (default) 17*cf5a6c84SAndroid Build Coastguard Worker -u User ids 18*cf5a6c84SAndroid Build Coastguard Worker */ 19*cf5a6c84SAndroid Build Coastguard Worker 20*cf5a6c84SAndroid Build Coastguard Worker #define FOR_renice 21*cf5a6c84SAndroid Build Coastguard Worker #include "toys.h" 22*cf5a6c84SAndroid Build Coastguard Worker GLOBALS(long n;)23*cf5a6c84SAndroid Build Coastguard WorkerGLOBALS( 24*cf5a6c84SAndroid Build Coastguard Worker long n; 25*cf5a6c84SAndroid Build Coastguard Worker ) 26*cf5a6c84SAndroid Build Coastguard Worker 27*cf5a6c84SAndroid Build Coastguard Worker void renice_main(void) { 28*cf5a6c84SAndroid Build Coastguard Worker int which = FLAG(g) ? PRIO_PGRP : (FLAG(u) ? PRIO_USER : PRIO_PROCESS); 29*cf5a6c84SAndroid Build Coastguard Worker char **arg; 30*cf5a6c84SAndroid Build Coastguard Worker 31*cf5a6c84SAndroid Build Coastguard Worker for (arg = toys.optargs; *arg; arg++) { 32*cf5a6c84SAndroid Build Coastguard Worker char *s = *arg; 33*cf5a6c84SAndroid Build Coastguard Worker int id = -1; 34*cf5a6c84SAndroid Build Coastguard Worker 35*cf5a6c84SAndroid Build Coastguard Worker if (FLAG(u)) { 36*cf5a6c84SAndroid Build Coastguard Worker struct passwd *p = getpwnam(s); 37*cf5a6c84SAndroid Build Coastguard Worker if (p) id = p->pw_uid; 38*cf5a6c84SAndroid Build Coastguard Worker } else { 39*cf5a6c84SAndroid Build Coastguard Worker id = strtol(s, &s, 10); 40*cf5a6c84SAndroid Build Coastguard Worker if (*s) id = -1; 41*cf5a6c84SAndroid Build Coastguard Worker } 42*cf5a6c84SAndroid Build Coastguard Worker 43*cf5a6c84SAndroid Build Coastguard Worker if (id < 0) { 44*cf5a6c84SAndroid Build Coastguard Worker error_msg("bad '%s'", *arg); 45*cf5a6c84SAndroid Build Coastguard Worker continue; 46*cf5a6c84SAndroid Build Coastguard Worker } 47*cf5a6c84SAndroid Build Coastguard Worker 48*cf5a6c84SAndroid Build Coastguard Worker if (setpriority(which, id, getpriority(which, id)+TT.n) < 0) 49*cf5a6c84SAndroid Build Coastguard Worker perror_msg("setpriority %d", id); 50*cf5a6c84SAndroid Build Coastguard Worker } 51*cf5a6c84SAndroid Build Coastguard Worker } 52