diff options
Diffstat (limited to 'proc')
-rw-r--r-- | proc/mig-decls.h | 17 | ||||
-rw-r--r-- | proc/mig-mutate.h | 4 | ||||
-rw-r--r-- | proc/proc_exc.defs | 1 |
3 files changed, 22 insertions, 0 deletions
diff --git a/proc/mig-decls.h b/proc/mig-decls.h index 7d36a870..eb33ef31 100644 --- a/proc/mig-decls.h +++ b/proc/mig-decls.h @@ -35,6 +35,17 @@ begin_using_proc_port (mach_port_t port) return (!p || p->p_dead) ? NULL : p; } +static inline struct proc * __attribute__ ((unused)) +begin_using_proc_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; +} + + static inline void __attribute__ ((unused)) end_using_proc (struct proc *p) { @@ -50,6 +61,12 @@ begin_using_exc_port (mach_port_t port) return ports_lookup_port (NULL, port, exc_class); } +static inline exc_t __attribute__ ((unused)) +begin_using_exc_payload (unsigned long payload) +{ + return ports_lookup_payload (NULL, payload, exc_class); +} + static inline void __attribute__ ((unused)) end_using_exc (exc_t exc) { diff --git a/proc/mig-mutate.h b/proc/mig-mutate.h index ce9f88e6..62dc2a59 100644 --- a/proc/mig-mutate.h +++ b/proc/mig-mutate.h @@ -20,6 +20,8 @@ #define PROCESS_INTRAN \ pstruct_t begin_using_proc_port (process_t) +#define PROCESS_INTRAN_PAYLOAD \ + pstruct_t begin_using_proc_payload #define PROCESS_DESTRUCTOR \ end_using_proc (pstruct_t) #define PROCESS_IMPORTS \ @@ -27,6 +29,8 @@ #define NOTIFY_INTRAN \ port_info_t begin_using_port_info_port (mach_port_t) +#define NOTIFY_INTRAN_PAYLOAD \ + port_info_t begin_using_port_info_payload #define NOTIFY_DESTRUCTOR \ end_using_port_info (port_info_t) #define NOTIFY_IMPORTS \ diff --git a/proc/proc_exc.defs b/proc/proc_exc.defs index c9108246..9dc3626e 100644 --- a/proc/proc_exc.defs +++ b/proc/proc_exc.defs @@ -38,6 +38,7 @@ import "mig-decls.h"; type exception_t = mach_port_copy_send_t cusertype: mach_port_t intran: exc_t begin_using_exc_port (exception_t) + intranpayload: exc_t begin_using_exc_payload destructor: end_using_exc (exc_t); routine proc_exception_raise ( |