// SPDX-License-Identifier: GPL-2.0-or-later /* * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. * Author: Richard Logan * * Test Description: * The process does a fork: * 1) By the value returned by child's alarm(0), check whether child * process cleared the previously specified alarm request or not. * 2) By the value returned by parent's alarm(0), check whether parent * process cleared the previously specified alarm request or not. */ #include <errno.h> #include <signal.h> #include <stdlib.h> #include <unistd.h> #include "tst_test.h" static void verify_alarm(void) { pid_t pid; TEST(alarm(100)); pid = SAFE_FORK(); if (pid == 0) { TEST(alarm(0)); if (TST_RET != 0) { tst_res(TFAIL, "alarm(100), fork, alarm(0) child's " "alarm returned %ld", TST_RET); } else { tst_res(TPASS, "alarm(100), fork, alarm(0) child's " "alarm returned %ld", TST_RET); } exit(0); } TEST(alarm(0)); if (TST_RET != 100) { tst_res(TFAIL, "alarm(100), fork, alarm(0) parent's " "alarm returned %ld", TST_RET); } else { tst_res(TPASS, "alarm(100), fork, alarm(0) parent's " "alarm returned %ld", TST_RET); } } static struct tst_test test = { .test_all = verify_alarm, .forks_child = 1, };