mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-05 19:24:01 -04:00
selftests/nolibc: support two errnos with EXPECT_SYSER2()
Some functions may be implemented with different syscalls in different platforms, these syscalls may set different errnos for the same arguments, let's support such cases. Suggested-by: Willy Tarreau <w@1wt.eu> Link: https://lore.kernel.org/linux-riscv/20230528113325.GJ1956@1wt.eu/ Signed-off-by: Zhangjin Wu <falcon@tinylab.org> Reviewed-by: Thomas Weißschuh <linux@weissschuh.net> Signed-off-by: Willy Tarreau <w@1wt.eu> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
committed by
Paul E. McKenney
parent
f62ec079d0
commit
75d75a7b28
@@ -300,18 +300,24 @@ static int expect_sysne(int expr, int llen, int val)
|
||||
}
|
||||
|
||||
|
||||
#define EXPECT_SYSER(cond, expr, expret, experr) \
|
||||
do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret += expect_syserr(expr, expret, experr, llen); } while (0)
|
||||
#define EXPECT_SYSER2(cond, expr, expret, experr1, experr2) \
|
||||
do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret += expect_syserr2(expr, expret, experr1, experr2, llen); } while (0)
|
||||
|
||||
static int expect_syserr(int expr, int expret, int experr, int llen)
|
||||
#define EXPECT_SYSER(cond, expr, expret, experr) \
|
||||
EXPECT_SYSER2(cond, expr, expret, experr, 0)
|
||||
|
||||
static int expect_syserr2(int expr, int expret, int experr1, int experr2, int llen)
|
||||
{
|
||||
int ret = 0;
|
||||
int _errno = errno;
|
||||
|
||||
llen += printf(" = %d %s ", expr, errorname(_errno));
|
||||
if (expr != expret || _errno != experr) {
|
||||
if (expr != expret || (_errno != experr1 && _errno != experr2)) {
|
||||
ret = 1;
|
||||
llen += printf(" != (%d %s) ", expret, errorname(experr));
|
||||
if (experr2 == 0)
|
||||
llen += printf(" != (%d %s) ", expret, errorname(experr1));
|
||||
else
|
||||
llen += printf(" != (%d %s %s) ", expret, errorname(experr1), errorname(experr2));
|
||||
llen += pad_spc(llen, 64, "[FAIL]\n");
|
||||
} else {
|
||||
llen += pad_spc(llen, 64, " [OK]\n");
|
||||
|
||||
Reference in New Issue
Block a user