From patchwork Thu Jul 26 05:32:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jinhui Huang X-Patchwork-Id: 949485 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=lists.linux.it (client-ip=213.254.12.146; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=cn.fujitsu.com Received: from picard.linux.it (picard.linux.it [213.254.12.146]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 41bgjk6MMnz9ryl for ; Thu, 26 Jul 2018 15:33:14 +1000 (AEST) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 5EF033E61CA for ; Thu, 26 Jul 2018 07:33:12 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-7.smtp.seeweb.it (in-7.smtp.seeweb.it [IPv6:2001:4b78:1:20::7]) by picard.linux.it (Postfix) with ESMTP id 715983E60E2 for ; Thu, 26 Jul 2018 07:33:05 +0200 (CEST) Received: from heian.cn.fujitsu.com (mail.cn.fujitsu.com [183.91.158.132]) by in-7.smtp.seeweb.it (Postfix) with ESMTP id 8B903200DFF for ; Thu, 26 Jul 2018 07:33:04 +0200 (CEST) X-IronPort-AV: E=Sophos;i="5.43,368,1503331200"; d="scan'208";a="42674178" Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 26 Jul 2018 13:33:04 +0800 Received: from G08CNEXCHPEKD02.g08.fujitsu.local (unknown [10.167.33.83]) by cn.fujitsu.com (Postfix) with ESMTP id 5E05A4B66C26; Thu, 26 Jul 2018 13:33:00 +0800 (CST) Received: from localhost.localdomain.localdomain (10.167.220.196) by G08CNEXCHPEKD02.g08.fujitsu.local (10.167.33.89) with Microsoft SMTP Server (TLS) id 14.3.399.0; Thu, 26 Jul 2018 13:32:58 +0800 From: Jinhui huang To: Date: Thu, 26 Jul 2018 13:32:47 +0800 Message-ID: <1532583167-8455-2-git-send-email-huangjh.jy@cn.fujitsu.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1532583167-8455-1-git-send-email-huangjh.jy@cn.fujitsu.com> References: <20180725134828.GB23890@rei> <1532583167-8455-1-git-send-email-huangjh.jy@cn.fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.220.196] X-yoursite-MailScanner-ID: 5E05A4B66C26.AE20F X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: huangjh.jy@cn.fujitsu.com X-Spam-Status: No, score=0.0 required=7.0 tests=none autolearn=disabled version=3.4.0 X-Virus-Scanned: clamav-milter 0.99.2 at in-7.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on in-7.smtp.seeweb.it Cc: ltp@lists.linux.it Subject: [LTP] [PATCH v2 2/2] syscalls/alarm03: Rewrite to new library X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.18 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Signed-off-by: Jinhui huang --- testcases/kernel/syscalls/alarm/alarm03.c | 220 ++++++------------------------ 1 file changed, 43 insertions(+), 177 deletions(-) diff --git a/testcases/kernel/syscalls/alarm/alarm03.c b/testcases/kernel/syscalls/alarm/alarm03.c index 60141f1..6e4e66a 100644 --- a/testcases/kernel/syscalls/alarm/alarm03.c +++ b/testcases/kernel/syscalls/alarm/alarm03.c @@ -1,193 +1,59 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of version 2 of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it would be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * Further, this software is distributed without any warranty that it is - * free of the rightful claim of any third person regarding infringement - * or the like. Any license provided herein, whether implied or - * otherwise, applies only to this software file. Patent licenses, if - * any, provided herein do not apply to combinations of this program with - * other software, or any other product whatsoever. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, - * Mountain View, CA 94043, or: - * - * http://www.sgi.com - * - * For further information regarding this notice, see: - * - * http://oss.sgi.com/projects/GenInfo/NoticeExplan/ + * 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. */ -/* $Id: alarm03.c,v 1.10 2009/08/28 10:57:29 vapier Exp $ */ -/********************************************************** - * - * OS Test - Silicon Graphics, Inc. - * - * TEST IDENTIFIER : alarm03 - * - * EXECUTED BY : anyone - * - * TEST TITLE : alarm(2) cleared by a fork - * - * PARENT DOCUMENT : usctpl01 - * - * TEST CASE TOTAL : 1 - * - * WALL CLOCK TIME : 1 - * - * CPU TYPES : ALL - * - * AUTHOR : Richard Logan - * - * CO-PILOT : Dennis Arason - * - * DATE STARTED : 08/96 - * - * - * TEST CASES - * - * 1.) alarm(100), fork, child's alarm(0) shall return 0; - * 2.) alarm(100), fork, parent's alarm(0) shall return non-zero. - * - * INPUT SPECIFICATIONS - * The standard options for system call tests are accepted. - * (See the parse_opts(3) man page). - * - * - * SPECIAL PROCEDURAL REQUIREMENTS - * None - * - * - * DETAILED DESCRIPTION - * This is a Phase I test for the alarm(2) system call. It is intended - * to provide a limited exposure of the system call, for now. It - * should/will be extended when full functional tests are written for - * alarm(2). - * - * Setup: - * Setup signal handling. - * Pause for SIGUSR1 if option specified. - * - * Test: - * Loop if the proper options are given. - * Execute system call - * Check return code, if system call failed (return=-1) - * Log the errno and Issue a FAIL message. - * Otherwise, Issue a PASS message. - * - * Cleanup: - * Print errno log and/or timing stats if options given - * - * - *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#**/ #include -#include #include #include -#include -#include "test.h" -#include "safe_macros.h" +#include -void setup(); -void cleanup(); -void trapper(); +#include "tst_test.h" -char *TCID = "alarm03"; -int TST_TOTAL = 1; - -int main(int ac, char **av) +static void verify_alarm(void) { - int lc; - int status, retval = 0; - - tst_parse_opts(ac, av, NULL, NULL); - - setup(); - - for (lc = 0; TEST_LOOPING(lc); lc++) { - - tst_count = 0; - - /* - * Call alarm(2) - */ - TEST(alarm(100)); - - switch (FORK_OR_VFORK()) { - case -1: - tst_brkm(TBROK | TERRNO, cleanup, "fork() failed"); - break; - - case 0: - TEST(alarm(0)); - - if (TEST_RETURN != 0) { - retval = 1; - printf("%d: alarm(100), fork, alarm(0) child's " - "alarm returned %ld\n", - getpid(), TEST_RETURN); - } else { - printf("%d: alarm(100), fork, alarm(0) child's " - "alarm returned %ld\n", - getpid(), TEST_RETURN); - } - - exit(retval); - break; - - default: - tst_count++; - TEST(alarm(0)); -/* The timer may be rounded up to the next nearest second, this is OK */ - if (TEST_RETURN <= 0 || TEST_RETURN > 101) { - retval = 1; - tst_resm(TFAIL, - "alarm(100), fork, alarm(0) parent's alarm returned %ld", - TEST_RETURN); - } else { - tst_resm(TPASS, - "alarm(100), fork, alarm(0) parent's alarm returned %ld", - TEST_RETURN); - } - SAFE_WAIT(cleanup, &status); - if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) - tst_resm(TFAIL, "see failures reported above"); - + pid_t pid; + + TEST(alarm(100)); + + pid = SAFE_FORK(); + if (pid == 0) { + TEST(alarm(0)); + if (TEST_RETURN != 0) { + tst_res(TFAIL, + "alarm(100), fork, alarm(0) child's " + "alarm returned %ld", TEST_RETURN); + } else { + tst_res(TPASS, + "alarm(100), fork, alarm(0) child's " + "alarm returned %ld", TEST_RETURN); } - + exit(0); } - cleanup(); - tst_exit(); -} - -void setup(void) -{ - - tst_sig(FORK, DEF_HANDLER, cleanup); - - signal(SIGALRM, trapper); + TEST(alarm(0)); + if (TEST_RETURN != 100) { + tst_res(TFAIL, + "alarm(100), fork, alarm(0) parent's " + "alarm returned %ld", TEST_RETURN); + } else { + tst_res(TPASS, + "alarm(100), fork, alarm(0) parent's " + "alarm returned %ld", TEST_RETURN); + } - TEST_PAUSE; + tst_reap_children(); } -void cleanup(void) -{ -} - -void trapper(int sig) -{ - signal(SIGALRM, trapper); -} +static struct tst_test test = { + .test_all = verify_alarm, + .forks_child = 1, +};