PAPI  5.7.0.0
forkexec3.c File Reference
Include dependency graph for forkexec3.c:

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Function Documentation

◆ main()

int main ( int  argc,
char **  argv 
)

Definition at line 32 of file forkexec3.c.

33 {
34  int retval;
35  int status;
36  int quiet;
37 
38  /* Set TESTS_QUIET variable */
39  quiet = tests_quiet( argc, argv );
40 
41  if ( ( argc > 1 ) && ( strcmp( argv[1], "xxx" ) == 0 ) ) {
42  /* In child */
44  if ( retval != PAPI_VER_CURRENT ) {
45  test_fail( __FILE__, __LINE__, "execed PAPI_library_init", retval );
46  }
47  return 0;
48  } else {
49  if (!quiet) printf("Testing Init/Shutdown/fork/init/exec/init\n");
50  /* Init PAPI */
52  if ( retval != PAPI_VER_CURRENT )
53  test_fail( __FILE__, __LINE__, "main PAPI_library_init", retval );
54 
55  PAPI_shutdown( );
56 
57  if ( fork( ) == 0 ) {
58  /* In child */
60  if ( retval != PAPI_VER_CURRENT ) {
61  test_fail( __FILE__, __LINE__, "forked PAPI_library_init",
62  retval );
63  }
64 
65  if ( execlp( argv[0], argv[0], "xxx", NULL ) == -1 ) {
66  test_fail( __FILE__, __LINE__, "execlp", PAPI_ESYS );
67  }
68  } else {
69  wait( &status );
70  if ( WEXITSTATUS( status ) != 0 ) {
71  test_fail( __FILE__, __LINE__, "fork", WEXITSTATUS( status ) );
72  }
73  }
74  }
75 
76  test_pass( __FILE__ );
77 
78  return 0;
79 
80 }
void test_pass(const char *filename)
Definition: test_utils.c:432
#define PAPI_VER_CURRENT
Definition: fpapi.h:14
int retval
Definition: zero_fork.c:53
#define PAPI_ESYS
Definition: fpapi.h:108
int PAPI_library_init(int version)
Definition: papi.c:500
void PAPI_shutdown(void)
Definition: papi.c:4461
int quiet
Definition: rapl_overflow.c:18
int wait()
int tests_quiet(int argc, char **argv)
Definition: test_utils.c:376
void test_fail(const char *file, int line, const char *call, int retval)
Definition: test_utils.c:468
long long status
Definition: iozone.c:1335
Here is the call graph for this function: