From 7b21c16f1ae94a9ea41b123558da234cfd994386 Mon Sep 17 00:00:00 2001 From: "Christopher J. Morrone" <morrone2@llnl.gov> Date: Thu, 18 Aug 2005 20:30:29 +0000 Subject: [PATCH] Update proctrack plugin to work with AIX proctrack kernel extension version 2 --- src/plugins/proctrack/aix/proctrack_aix.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/plugins/proctrack/aix/proctrack_aix.c b/src/plugins/proctrack/aix/proctrack_aix.c index 9117912d17b..75f7060c041 100644 --- a/src/plugins/proctrack/aix/proctrack_aix.c +++ b/src/plugins/proctrack/aix/proctrack_aix.c @@ -44,11 +44,12 @@ #include "src/common/log.h" #include "src/slurmd/slurmd_job.h" -extern int proctrack_job_reg(int *jobid); /* register a job, include this proc */ +extern int proctrack_job_reg_pid(int *jobid, int *pid_ptr); /* register a job */ extern int proctrack_job_unreg(int *jobid); /* unregister a job */ extern int proctrack_job_kill(int *jobid, int *signal); /* signal a job */ extern int proctrack_get_job_id(int *pid_ptr); /* return jobid for given pid */ extern int proctrack_dump_records(void); /* dump records */ +extern uint32_t proctrack_version(void); /* proctrack version */ /* * These variables are required by the generic plugin interface. If they @@ -89,6 +90,14 @@ const uint32_t plugin_version = 90; */ extern int init ( void ) { + uint32_t required_version = 2; + + if (proctrack_version() < required_version) { + error("proctrack AIX kernel extension must be >= %u", + required_version); + return SLURM_ERROR; + } + return SLURM_SUCCESS; } @@ -99,18 +108,19 @@ extern int fini ( void ) /* * Uses job step process group id as a unique identifier. Job id - * step id are not unique by themselves. + * and step id are not unique by themselves. */ extern uint32_t slurm_create_container ( slurmd_job_t *job ) { int pgid = (int) job->pgid; int i; - xassert(jobid != 0); + xassert(job); + xassert(pgid > 1); for (i = 0; i < job->ntasks; i++) { - if (proctrack_job_reg(&pgid, &job->task[i].pid) != 0) { - error("proctrack_job_reg(%d): %m", jobid); + if (proctrack_job_reg_pid(&pgid, &job->task[i]->pid) != 0) { + error("proctrack_job_reg(%d): %m", pgid); return (uint32_t) 0; } } -- GitLab