Home | History | Annotate | Download | only in exit_group
      1 /******************************************************************************
      2  * Copyright (c) Crackerjack Project., 2007                                   *
      3  * Ported to LTP by Manas Kumar Nayak <maknayak (at) in.ibm.com>                   *
      4  * Copyright (C) 2015 Cyril Hrubis <chrubis (at) suse.cz>                          *
      5  *                                                                            *
      6  * This program is free software;  you can redistribute it and/or modify      *
      7  * it under the terms of the GNU General Public License as published by       *
      8  * the Free Software Foundation; either version 2 of the License, or          *
      9  * (at your option) any later version.                                        *
     10  *                                                                            *
     11  * This program is distributed in the hope that it will be useful,            *
     12  * but WITHOUT ANY WARRANTY;  without even the implied warranty of            *
     13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See                  *
     14  * the GNU General Public License for more details.                           *
     15  *                                                                            *
     16  * You should have received a copy of the GNU General Public License          *
     17  * along with this program;  if not, write to the Free Software Foundation,   *
     18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA           *
     19  *                                                                            *
     20  ******************************************************************************/
     21 
     22 #include <stdio.h>
     23 #include <errno.h>
     24 #include <linux/unistd.h>
     25 #include <sys/wait.h>
     26 
     27 #include "test.h"
     28 #include "linux_syscall_numbers.h"
     29 
     30 char *TCID = "exit_group01";
     31 int testno;
     32 int TST_TOTAL = 1;
     33 
     34 static void verify_exit_group(void)
     35 {
     36 	pid_t cpid, w;
     37 	int status;
     38 
     39 	cpid = fork();
     40 	if (cpid == -1)
     41 		tst_brkm(TFAIL | TERRNO, NULL, "fork failed");
     42 
     43 	if (cpid == 0) {
     44 		TEST(ltp_syscall(__NR_exit_group, 4));
     45 	} else {
     46 		w = wait(&status);
     47 		if (w == -1)
     48 			tst_brkm(TBROK | TERRNO, NULL, "wait() failed");
     49 
     50 		if (WIFEXITED(status) && (WEXITSTATUS(status) == 4)) {
     51 			tst_resm(TPASS, "exit_group() succeeded");
     52 		} else {
     53 			tst_resm(TFAIL | TERRNO,
     54 				 "exit_group() failed (wait status = %d)", w);
     55 		}
     56 	}
     57 }
     58 
     59 int main(int ac, char **av)
     60 {
     61 	int lc;
     62 
     63 	tst_parse_opts(ac, av, NULL, NULL);
     64 
     65 	for (lc = 0; TEST_LOOPING(lc); lc++)
     66 		verify_exit_group();
     67 
     68 	tst_exit();
     69 }
     70