diff --git a/src/proc/proc.c b/src/proc/proc.c index 401d09c7d9..64ba74329e 100644 --- a/src/proc/proc.c +++ b/src/proc/proc.c @@ -152,3 +152,21 @@ lam_proc_t** lam_proc_self(size_t* size) return procs; } +lam_proc_t * lam_proc_find ( lam_job_handle_t jobid, uint32_t vpid ) +{ + lam_proc_t *proc; + + /* return the proc-struct which matches this jobid+process id */ + THREAD_LOCK(&lam_proc_lock); + for(proc = (lam_proc_t*)lam_list_get_first(&lam_proc_list); + proc != (lam_proc_t*)lam_list_get_end(&lam_proc_list); + proc = (lam_proc_t*)lam_list_get_next(proc)) { + if( (strcmp(proc->proc_job,jobid) == 0) && + (proc->proc_vpid == vpid ) ) + { + break; + } + } + THREAD_UNLOCK(&lam_proc_lock); + return proc; +} diff --git a/src/proc/proc.h b/src/proc/proc.h index 9eb41774d0..bf4be8e9b2 100644 --- a/src/proc/proc.h +++ b/src/proc/proc.h @@ -61,5 +61,10 @@ static inline lam_proc_t* lam_proc_local(void) return lam_proc_local_proc; } +/** + * Returns the proc instance for a given vpid +*/ +lam_proc_t * lam_proc_find ( lam_job_handle_t jobid, uint32_t vpid ); + #endif /* LAM_PROC */