1 /* 2 * Copyright (c) International Business Machines Corp., 2001 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 12 * the GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program. 16 * 17 * History 18 * 07/2001 John George 19 * -Ported 20 * 04/2002 wjhuie sigset cleanups 21 */ 22 23 /* 24 * DESCRIPTION 25 * Tests to see if pids returned from fork and waitpid are same. 26 * 27 * ALGORITHM 28 * Check proper functioning of waitpid with pid = -1 and arg = 29 * WUNTRACED 30 */ 31 32 #include "waitpid_common.h" 33 34 static void do_child_1(void) 35 { 36 pid_t pid; 37 int i; 38 int status; 39 40 for (i = 0; i < MAXKIDS; i++) { 41 if (i == (MAXKIDS / 2)) 42 SAFE_SETPGID(0, 0); 43 44 pid = SAFE_FORK(); 45 if (pid == 0) 46 do_exit(1); 47 48 fork_kid_pid[i] = pid; 49 } 50 51 /* Check that waitpid with WNOHANG|WUNTRACED returns 52 * zero 53 */ 54 if (TST_TRACE(waitpid_ret_test(-1, &status, WNOHANG | WUNTRACED, 0, 0))) 55 return; 56 57 TST_CHECKPOINT_WAKE2(0, MAXKIDS); 58 59 if (TST_TRACE(reap_children(-1, WUNTRACED, fork_kid_pid, MAXKIDS))) 60 return; 61 62 tst_res(TPASS, "Test PASSED"); 63 } 64 65 static struct tst_test test = { 66 .forks_child = 1, 67 .needs_checkpoints = 1, 68 .setup = waitpid_setup, 69 .cleanup = waitpid_cleanup, 70 .test_all = waitpid_test, 71 }; 72