1
1

* process death notification support for the bproc pcm

This commit was SVN r3726.
Этот коммит содержится в:
Brian Barrett 2004-12-07 06:07:45 +00:00
родитель be3facae87
Коммит fceeecd8c5
2 изменённых файлов: 36 добавлений и 3 удалений

Просмотреть файл

@ -23,12 +23,45 @@
#include "mca/pcm/pcm.h"
#include "mca/pcm/base/base.h"
#include "class/ompi_list.h"
#include "runtime/runtime.h"
#include "runtime/runtime_types.h"
#include "runtime/ompi_rte_wait.h"
#include "util/show_help.h"
#include "mca/pcm/base/base_kill_track.h"
#include "mca/pcm/base/base_job_track.h"
void
mca_pcm_bproc_monitor_cb(pid_t pid, int status, void *data)
{
printf("pcm: bproc: have callback for pid %d\n", pid);
mca_ns_base_jobid_t jobid = 0;
mca_ns_base_vpid_t upper = 0;
mca_ns_base_vpid_t lower = 0;
mca_ns_base_vpid_t i = 0;
int ret;
ompi_process_name_t *proc_name;
mca_pcm_bproc_module_t *me = (mca_pcm_bproc_module_t*) data;
ompi_rte_process_status_t proc_status;
printf("pcm: bproc: process %d exited with status %d\n", pid, status);
ret = mca_pcm_base_job_list_get_job_info(me->jobs, pid, &jobid,
&lower, &upper, true);
if (ret != OMPI_SUCCESS) {
ompi_show_help("help-mca-pcm-bproc.txt",
"spawn:no-process-record", true, pid, status);
return;
}
/* unregister all the procs */
proc_status.status_key = OMPI_PROC_KILLED;
proc_status.exit_code = (ompi_exit_code_t)status;
for (i = lower ; i <= upper ; ++i) {
proc_name = mca_ns_base_create_process_name(0, jobid, i);
ompi_rte_set_process_status(&proc_status, proc_name);
free(proc_name);
}
mca_pcm_base_kill_unregister((mca_pcm_base_module_t*)me, jobid, lower, upper);
}

Просмотреть файл

@ -304,7 +304,7 @@ internal_spawn_procs(mca_pcm_bproc_module_t *me,
return ret;
}
ret = ompi_rte_wait_cb(pids[i], mca_pcm_bproc_monitor_cb, NULL);
ret = ompi_rte_wait_cb(pids[i], mca_pcm_bproc_monitor_cb, me);
if (OMPI_SUCCESS != ret) {
mca_pcm_bproc_kill_job((mca_pcm_base_module_t*) me, jobid, 0);
return ret;