[LTP] [PATCH v3] flock: Add test for verifying EINTR errno
Petr Vorel
pvorel@suse.cz
Mon Feb 3 15:22:13 CET 2025
Hi Avinesh, all,
...
> +++ b/testcases/kernel/syscalls/flock/flock07.c
...
> +static void handler(int sig)
> +{
> + tst_res(TINFO, "Received signal: %d", sig);
How about print a signal constant/name?
tst_res(TINFO, "Received signal: %s (%d)", tst_strsig(sig), sig);
> +}
...
> +static void verify_flock(void)
> +{
> + pid_t pid;
> + int fd1 = SAFE_OPEN(TEMPFILE, O_RDWR);
> + int fd2 = SAFE_OPEN(TEMPFILE, O_RDWR);
How about to setup file descriptors in setup() and close them in cleanup()?
I suggest to merge with the change below.
> +
> + TST_EXP_PASS(flock(fd1, LOCK_EX));
> +
> + pid = SAFE_FORK();
> + if (!pid) {
> + child_do(fd2);
> + exit(0);
> + } else {
> + sleep(1);
> + SAFE_KILL(pid, SIGUSR1);
> + SAFE_WAITPID(pid, NULL, 0);
> + }
> +
> + SAFE_CLOSE(fd1);
> + SAFE_CLOSE(fd2);
> +}
Kind regards,
Petr
+++ testcases/kernel/syscalls/flock/flock07.c
@@ -17,14 +17,27 @@
#define TEMPFILE "test_eintr"
+static int fd1 = -1, fd2 = -1;
+
static void handler(int sig)
{
- tst_res(TINFO, "Received signal: %d", sig);
+ tst_res(TINFO, "Received signal: %s (%d)", tst_strsig(sig), sig);
}
static void setup(void)
{
SAFE_TOUCH(TEMPFILE, 0777, NULL);
+ fd1 = SAFE_OPEN(TEMPFILE, O_RDWR);
+ fd2 = SAFE_OPEN(TEMPFILE, O_RDWR);
+}
+
+static void cleanup(void)
+{
+ if (fd1 >= 0)
+ SAFE_CLOSE(fd1);
+
+ if (fd2 >= 0)
+ SAFE_CLOSE(fd2);
}
static void child_do(int fd)
@@ -42,8 +55,6 @@ static void child_do(int fd)
static void verify_flock(void)
{
pid_t pid;
- int fd1 = SAFE_OPEN(TEMPFILE, O_RDWR);
- int fd2 = SAFE_OPEN(TEMPFILE, O_RDWR);
TST_EXP_PASS(flock(fd1, LOCK_EX));
@@ -56,13 +67,11 @@ static void verify_flock(void)
SAFE_KILL(pid, SIGUSR1);
SAFE_WAITPID(pid, NULL, 0);
}
-
- SAFE_CLOSE(fd1);
- SAFE_CLOSE(fd2);
}
static struct tst_test test = {
.setup = setup,
+ .cleanup = cleanup,
.test_all = verify_flock,
.needs_tmpdir = 1,
.needs_root = 1,
More information about the ltp
mailing list