* proc/Makefile (MIGSFLAGS): Add mutator. * proc/hash.c (reqport_find_payload): New function. * proc/proc.h (reqport_find_payload): New declaration. --- proc/Makefile | 1 + proc/hash.c | 10 ++++++++++ proc/proc.h | 1 + 3 files changed, 12 insertions(+)
diff --git a/proc/Makefile b/proc/Makefile index 2eed13c..e7fe834 100644 --- a/proc/Makefile +++ b/proc/Makefile @@ -25,6 +25,7 @@ SRCS = wait.c hash.c host.c info.c main.c mgt.c notify.c pgrp.c msg.c \ cpu-types.c stubs.c MIGSFLAGS="-DPROCESS_INTRAN=pstruct_t reqport_find (process_t)" \ + "-DPROCESS_INTRAN_PAYLOAD=pstruct_t reqport_find_payload" \ "-DPROCESS_DESTRUCTOR=process_drop (pstruct_t)" \ "-DPROCESS_IMPORTS=import \"proc.h\";" diff --git a/proc/hash.c b/proc/hash.c index ed670a1..959bc62 100644 --- a/proc/hash.c +++ b/proc/hash.c @@ -87,6 +87,16 @@ reqport_find (mach_port_t reqport) return (!p || p->p_dead) ? 0 : p; } +struct proc * +reqport_find_payload (unsigned long payload) +{ + struct proc *p; + p = ports_lookup_payload (proc_bucket, payload, proc_class); + if (p && ! p->p_dead) + ports_port_deref (p); + return (!p || p->p_dead) ? 0 : p; +} + /* Find the process group corresponding to a given pgid. */ struct pgrp * pgrp_find (pid_t pgid) diff --git a/proc/proc.h b/proc/proc.h index 12f56da..21eeda2 100644 --- a/proc/proc.h +++ b/proc/proc.h @@ -183,6 +183,7 @@ struct proc *task_find (task_t); struct proc *task_find_nocreate (task_t); struct pgrp *pgrp_find (int); struct proc *reqport_find (mach_port_t); +struct proc *reqport_find_payload (unsigned long); struct session *session_find (pid_t); void exc_clean (void *); -- 1.7.10.4