1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Copyright (c) International Business Machines Corp., 2001
4 * Ported to LTP: Wayne Boyer
5 * Copyright (c) 2016 Cyril Hrubis <chrubis@suse.cz>
6 */
7
8/*\
9 * [Description]
10 *
11 * Verify that any user can successfully increase the nice value of
12 * the process by passing a higher increment value (> max. applicable limits)
13 * to nice() system call.
14 */
15#include <unistd.h>
16#include <errno.h>
17#include <sys/resource.h>
18
19#include "tst_test.h"
20
21#define	NICEINC 50
22#define MAX_PRIO 19
23#define DEFAULT_PRIO 0
24
25static void verify_nice(void)
26{
27	int new_nice;
28
29	TEST(nice(NICEINC));
30
31	if (TST_RET == -1) {
32		tst_res(TFAIL | TTERRNO, "nice(%d) returned -1", NICEINC);
33		return;
34	}
35
36	if (TST_ERR) {
37		tst_res(TFAIL | TTERRNO, "nice(%d) failed", NICEINC);
38		return;
39	}
40
41	new_nice = SAFE_GETPRIORITY(PRIO_PROCESS, 0);
42
43	if (new_nice != MAX_PRIO) {
44		tst_res(TFAIL, "Process priority %i, expected %i",
45			new_nice, MAX_PRIO);
46		return;
47	}
48
49	tst_res(TPASS, "nice(%d) passed", NICEINC);
50
51	TEST(nice(DEFAULT_PRIO));
52	if (TST_ERR)
53		tst_brk(TBROK | TTERRNO, "nice(%d) failed", DEFAULT_PRIO);
54}
55
56static struct tst_test test = {
57	.test_all = verify_nice,
58};
59