Home | History | Annotate | Download | only in nice
      1 /*
      2  * Copyright (c) International Business Machines  Corp., 2001
      3  *  07/2001 Ported by Wayne Boyer
      4  * Copyright (c) 2016 Cyril Hrubis <chrubis (at) suse.cz>
      5  *
      6  * This program is free software;  you can redistribute it and/or modify
      7  * it under the terms of the GNU General Public License as published by
      8  * the Free Software Foundation; either version 2 of the License, or
      9  * (at your option) any later version.
     10  *
     11  * This program is distributed in the hope that it will be useful,
     12  * but WITHOUT ANY WARRANTY;  without even the implied warranty of
     13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
     14  * the GNU General Public License for more details.
     15  *
     16  * You should have received a copy of the GNU General Public License
     17  * along with this program;  if not, write to the Free Software Foundation,
     18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
     19  */
     20 /*
     21  *  Verify that any user can successfully increase the nice value of
     22  *  the process by passing a higher increment value (> max. applicable limits)
     23  *  to nice() system call.
     24  */
     25 #include <unistd.h>
     26 #include <errno.h>
     27 #include <sys/resource.h>
     28 
     29 #include "tst_test.h"
     30 
     31 #define	NICEINC 50
     32 #define MAX_PRIO 19
     33 #define DEFAULT_PRIO 0
     34 
     35 static void verify_nice(void)
     36 {
     37 	int new_nice;
     38 
     39 	TEST(nice(NICEINC));
     40 
     41 	if (TST_RET == -1) {
     42 		tst_res(TFAIL | TTERRNO, "nice(%d) returned -1", NICEINC);
     43 		return;
     44 	}
     45 
     46 	if (TST_ERR) {
     47 		tst_res(TFAIL | TTERRNO, "nice(%d) failed", NICEINC);
     48 		return;
     49 	}
     50 
     51 	new_nice = SAFE_GETPRIORITY(PRIO_PROCESS, 0);
     52 
     53 	if (new_nice != MAX_PRIO) {
     54 		tst_res(TFAIL, "Process priority %i, expected %i",
     55 			new_nice, MAX_PRIO);
     56 		return;
     57 	}
     58 
     59 	tst_res(TPASS, "nice(%d) passed", NICEINC);
     60 
     61 	TEST(nice(DEFAULT_PRIO));
     62 	if (TST_ERR)
     63 		tst_brk(TBROK | TERRNO, "nice(-NICEINC) failed");
     64 }
     65 
     66 static struct tst_test test = {
     67 	.test_all = verify_nice,
     68 };
     69