bug-hurd
[Top][All Lists]
Advanced

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

[PATCH 2/8] ipc: add protected payload


From: Justus Winter
Subject: [PATCH 2/8] ipc: add protected payload
Date: Fri, 29 Nov 2013 01:00:34 +0100

* ipc/ipc_port.c (ipc_port_init): Initialize protected_payload.
(ipc_port_print): Print protected_payload.
(ipc_port_set_protected_payload): New function.
* ipc/ipc_port.h (struct ipc_port): Add field protected_payload.
(ipc_port_set_protected_payload): Add function declaration.
---
 ipc/ipc_port.c |   22 ++++++++++++++++++++++
 ipc/ipc_port.h |    4 ++++
 2 files changed, 26 insertions(+)

diff --git a/ipc/ipc_port.c b/ipc/ipc_port.c
index b960739..e2ff38d 100644
--- a/ipc/ipc_port.c
+++ b/ipc/ipc_port.c
@@ -425,6 +425,25 @@ ipc_port_set_seqno(port, seqno)
 }
 
 /*
+ *     Routine:        ipc_port_set_protected_payload
+ *     Purpose:
+ *             Changes a port's protected payload.
+ *     Conditions:
+ *             The port is locked and active.
+ */
+
+void
+ipc_port_set_protected_payload(ipc_port_t port, unsigned long payload)
+{
+       ipc_mqueue_t mqueue;
+
+       mqueue = ipc_port_lock_mqueue(port);
+       port->ip_protected_payload = payload;
+       imq_unlock(mqueue);
+}
+
+
+/*
  *     Routine:        ipc_port_clear_receiver
  *     Purpose:
  *             Prepares a receive right for transmission/destruction.
@@ -493,6 +512,7 @@ ipc_port_init(
        port->ip_seqno = 0;
        port->ip_msgcount = 0;
        port->ip_qlimit = MACH_PORT_QLIMIT_DEFAULT;
+       port->ip_protected_payload = 0;
 
        ipc_mqueue_init(&port->ip_messages);
        ipc_thread_queue_init(&port->ip_blocked);
@@ -1240,6 +1260,8 @@ ipc_port_print(port)
        printf(", sndrs=0x%x", port->ip_blocked.ithq_base);
        printf(", kobj=0x%x\n", port->ip_kobject);
 
+       iprintf("protected_payload=%p\n", (void *) port->ip_protected_payload);
+
        indent -=2;
 }
 
diff --git a/ipc/ipc_port.h b/ipc/ipc_port.h
index 27d2e49..a1a0943 100644
--- a/ipc/ipc_port.h
+++ b/ipc/ipc_port.h
@@ -96,6 +96,7 @@ struct ipc_port {
        mach_port_msgcount_t ip_msgcount;
        mach_port_msgcount_t ip_qlimit;
        struct ipc_thread_queue ip_blocked;
+       unsigned long ip_protected_payload;
 };
 
 #define ip_object              ip_target.ipt_object
@@ -262,6 +263,9 @@ extern void
 ipc_port_set_seqno(ipc_port_t, mach_port_seqno_t);
 
 extern void
+ipc_port_set_protected_payload(ipc_port_t, unsigned long);
+
+extern void
 ipc_port_clear_receiver(ipc_port_t);
 
 extern void
-- 
1.7.10.4




reply via email to

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