You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.6 KiB
62 lines
1.6 KiB
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
/*
|
|
* Copyright (c) 2019 Linus Walleij <linus.walleij@linaro.org>
|
|
*
|
|
* Description:
|
|
* Negative ioprio_set() test. Test some non-working priorities to make
|
|
* sure they don't work.
|
|
*/
|
|
#include <sys/types.h>
|
|
#include <sys/syscall.h>
|
|
|
|
#include "tst_test.h"
|
|
#include "lapi/syscalls.h"
|
|
#include "ioprio.h"
|
|
|
|
static void run(void)
|
|
{
|
|
int class;
|
|
|
|
class = IOPRIO_CLASS_BE;
|
|
|
|
/*
|
|
* Test to fail with prio 8, first set prio 4 so we know what it
|
|
* should still be after failure, i.e. we check that the priority
|
|
* didn't change as a side effect of setting an invalid priority.
|
|
*/
|
|
sys_ioprio_set(IOPRIO_WHO_PROCESS, 0,
|
|
IOPRIO_PRIO_VALUE(class, 4));
|
|
TEST(sys_ioprio_set(IOPRIO_WHO_PROCESS, 0,
|
|
IOPRIO_PRIO_VALUE(class, 8)));
|
|
if (TST_RET == -1) {
|
|
ioprio_check_setting(class, 4, 1);
|
|
if (errno == EINVAL)
|
|
tst_res(TPASS | TTERRNO, "returned correct error for wrong prio");
|
|
else
|
|
tst_res(TFAIL, "ioprio_set returns wrong errno %d",
|
|
TST_ERR);
|
|
} else {
|
|
tst_res(TFAIL, "ioprio_set IOPRIO_CLASS_BE prio 8 should not work");
|
|
}
|
|
|
|
/* Any other prio than 0 should not work with NONE */
|
|
class = IOPRIO_CLASS_NONE;
|
|
TEST(sys_ioprio_set(IOPRIO_WHO_PROCESS, 0,
|
|
IOPRIO_PRIO_VALUE(class, 4)));
|
|
if (TST_RET == -1) {
|
|
tst_res(TINFO, "tested illegal priority with class %s",
|
|
to_class_str[class]);
|
|
if (errno == EINVAL)
|
|
tst_res(TPASS | TTERRNO, "returned correct error for wrong prio");
|
|
else
|
|
tst_res(TFAIL, "ioprio_set returns wrong errno %d",
|
|
TST_ERR);
|
|
} else {
|
|
tst_res(TFAIL, "ioprio_set IOPRIO_CLASS_NONE should fail");
|
|
}
|
|
}
|
|
|
|
static struct tst_test test = {
|
|
.test_all = run,
|
|
};
|