bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 04/23] proc: add a payload-aware intrans function


From: Justus Winter
Subject: [PATCH 04/23] proc: add a payload-aware intrans function
Date: Fri, 29 Nov 2013 01:03:32 +0100

* 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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]