1
1
openmpi/test/runtime/sigchld.c
Ralph Castain d5dfe05521 Remove stale code associated with OPAL_THREADS_HAVE_DIFFERENT_PIDS. In the past, we have supported the case of really, really old Linux kernels where threads have different pids. However, when we updated the event library, we didn't also update that support code. In addition, when we dropped progress thread support, we didn't remove areas of the code that could no longer be compiled (i.e., were protected by "if progress thread && if have different pids).
There was no compelling reason to support such old kernels. Accordingly, convert the test to print a nice error message indicating we no longer support old kernels (but indicate that earlier OMPI versions do) and error out. Remove all code that was protected by "if have different pids" since it can no longer be compiled.

This commit was SVN r24531.
2011-03-15 21:05:03 +00:00

91 строка
2.3 KiB
C

/*
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2004-2005 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "ompi_config.h"
#include "mpi.h"
#include "orte/runtime/orte_wait.h"
#include "opal/runtime/opal_progress.h"
#include "runtime/runtime.h"
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#include <stdio.h>
#include <stdlib.h>
int count = 0;
static void callback(pid_t pid, int status, void *data)
{
printf("callback for %d, %d\n", pid, status);
count--;
}
int main(int argc, char *argv[])
{
pid_t pid, ret;
int status = -1;
orte_init(true);
pid = fork();
if (pid > 0) {
count++;
printf("parent launched child #1 PID %d\n", pid);
orte_wait_cb(pid, callback, NULL);
} else {
printf("child pid %d sleeping 10 seconds\n", getpid());
sleep(10);
printf("pid %d exiting after sleeping 10 seconds\n", getpid());
exit(0);
}
pid = fork();
if (pid > 0) {
printf("parent launched child #2 PID %d\n", pid);
ret = orte_waitpid(pid, &status, 0);
printf("pid %d waitpid, status %d\n", ret, status);
} else {
printf("child pid %d sleeping 5 seconds\n", getpid());
sleep(5);
printf("pid %d exiting after sleeping 5 seconds\n", getpid());
exit(0);
}
pid = fork();
if (pid > 0) {
count++;
printf("parent launched child #3 PID %d\n", pid);
orte_wait_cb(pid, callback, NULL);
} else {
printf("pid %d exiting after not sleeping at all\n", getpid());
exit(0);
}
while (count > 0) {
opal_progress();
}
orte_finalize();
return 0;
}