This function maps payloads back to port names. This can be used as
intranspayload functions in situations where the server function
expects a port name.
* libports/ports.h: Add function ports_payload_get_name.
---
libports/ports.h | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/libports/ports.h b/libports/ports.h
index 2f63142..0a7f500 100644
--- a/libports/ports.h
+++ b/libports/ports.h
@@ -238,6 +238,18 @@ void *ports_lookup_port (struct port_bucket *bucket,
void *ports_lookup_payload (struct port_bucket *bucket,
unsigned long payload, struct port_class *class);
+/* This returns the ports name. This function can be used as
+ intranpayload function turning payloads back into port names. If
+ this function is used, PAYLOAD must be a pointer to the port
+ structure. */
+static inline mach_port_t ports_payload_get_name (unsigned int payload)
+{
+ struct port_info *pi = (struct port_info *) payload;
+ if (pi)
+ return pi->port_right;
+ return MACH_PORT_NULL;
+}
+
/* Allocate another reference to PORT. */
void ports_port_ref (void *port);
--
1.7.10.4