blob: 8558b3e25333903aaafb2e219649328c6ec4d364 [file] [log] [blame]
/*
* Copyright (c) 2002, Intel Corporation. All rights reserved.
* Created by: rolla.n.selbak REMOVE-THIS AT intel DOT com
* This file is licensed under the GPL license. For the full content
* of this license, see the COPYING file at the top level of this
* source tree.
*
* int pthread_atfork(void (*prepare) (void), void (*parent) (void), void (*child) (void))
*
* If no handling is desired at one or more of these three points, the corresponding fork
* handler address(es) may be set to NULL.
*
* STEPS:
* 1. Call pthread_atfork() with all NULL parameters
* 2. Check to make sure the function returns success
*
*/
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>
#include "posixtest.h"
int main(void)
{
pid_t pid;
int ret;
/* Set up the fork handlers */
ret = pthread_atfork(NULL, NULL, NULL);
if (ret != 0) {
if (ret == ENOMEM) {
printf("Error: ran out of memory\n");
return PTS_UNRESOLVED;
}
printf
("Test FAILED: Expected return value success, instead received %d\n",
ret);
return PTS_FAIL;
}
/* Now call fork() to make sure everything goes smoothly */
pid = fork();
if (pid < 0) {
perror("Error in fork()\n");
return PTS_UNRESOLVED;
}
if (pid == 0) {
/* Child process */
pthread_exit(0);
} else {
/* Parent process */
wait(NULL);
}
printf("Test PASSED\n");
return PTS_PASS;
}