PAPI 7.1.0.0
Loading...
Searching...
No Matches
forkexec4.c
Go to the documentation of this file.
1/*
2* File: forkexec4.c
3* Author: Philip Mucci
4* mucci@cs.utk.edu
5*/
6
7/* This file performs the following test:
8
9 PAPI_library_init()
10 ** unlike forkexec2/forkexec3, no shutdown here **
11 fork()
12 / \
13 parent child
14 wait() PAPI_library_init()
15 execlp()
16 PAPI_library_init()
17
18 */
19
20#include <stdio.h>
21#include <stdlib.h>
22#include <unistd.h>
23#include <string.h>
24#include <sys/wait.h>
25
26#include "papi.h"
27#include "papi_test.h"
28
29
30int
31main( int argc, char **argv )
32{
33 int retval;
34 int status;
35 int quiet;
36
37 /* Set TESTS_QUIET variable */
38 quiet = tests_quiet( argc, argv );
39
40 if ( ( argc > 1 ) && ( strcmp( argv[1], "xxx" ) == 0 ) ) {
41 /* In child */
43 if ( retval != PAPI_VER_CURRENT ) {
44 test_fail( __FILE__, __LINE__, "execed PAPI_library_init", retval );
45 }
46 return 0;
47 } else {
48 if (!quiet) printf("Testing Init/fork/exec/Init\n");
49
50 /* Init PAPI */
52 if ( retval != PAPI_VER_CURRENT ) {
53 test_fail( __FILE__, __LINE__, "main PAPI_library_init", retval );
54 }
55
56 if ( fork( ) == 0 ) {
57 /* In Child */
59 if ( retval != PAPI_VER_CURRENT ) {
60 test_fail( __FILE__, __LINE__, "forked PAPI_library_init",
61 retval );
62 }
63
64 if ( execlp( argv[0], argv[0], "xxx", NULL ) == -1 ) {
65 test_fail( __FILE__, __LINE__, "execlp", PAPI_ESYS );
66 }
67 } else {
68 /* Waiting in parent */
69 wait( &status );
70 if ( WEXITSTATUS( status ) != 0 ) {
71 test_fail( __FILE__, __LINE__, "fork", WEXITSTATUS( status ) );
72 } }
73 }
74
75 test_pass( __FILE__ );
76
77 return 0;
78}
initialize the PAPI library.
#define PAPI_VER_CURRENT
Definition: f90papi.h:54
#define PAPI_ESYS
Definition: f90papi.h:136
Return codes and api definitions.
int tests_quiet(int argc, char **argv)
Definition: test_utils.c:376
void PAPI_NORETURN test_fail(const char *file, int line, const char *call, int retval)
Definition: test_utils.c:491
void PAPI_NORETURN test_pass(const char *filename)
Definition: test_utils.c:432
int main()
Definition: pernode.c:20
int quiet
Definition: rapl_overflow.c:19
int retval
Definition: zero_fork.c:53