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 = 0 and < -1 with arg 0 29 */ 30 31#include "waitpid_common.h" 32 33static void do_child_1(void) 34{ 35 pid_t pid, group; 36 int i; 37 38 group = SAFE_GETPGID(0); 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(0); 47 48 fork_kid_pid[i] = pid; 49 } 50 51 TST_CHECKPOINT_WAKE2(0, MAXKIDS); 52 53 if (TST_TRACE(reap_children(0, 0, fork_kid_pid + MAXKIDS/2, MAXKIDS/2))) 54 return; 55 56 /* Make sure can pickup children in a diff. process group */ 57 if (TST_TRACE(reap_children(-group, 0, fork_kid_pid, MAXKIDS / 2))) 58 return; 59 60 tst_res(TPASS, "Test PASSED"); 61} 62 63static struct tst_test test = { 64 .forks_child = 1, 65 .needs_checkpoints = 1, 66 .setup = waitpid_setup, 67 .cleanup = waitpid_cleanup, 68 .test_all = waitpid_test, 69}; 70