From b7cbdde8854ee4c51ec9cd49ce639bd02d646355 Mon Sep 17 00:00:00 2001
From: Justus Winter <4winter@informatik.uni-hamburg.de>
Date: Mon, 3 Mar 2014 20:48:20 +0100
Subject: libpager: fix receiver lookups

Previously, the receiver lookup was done manually in all the server
functions.  Use mig translator functions instead.

* libpager/mig-decls.h: New file.
* libpager/mig-mutate.h: Likewise.
* libpager/Makefile (MIGSFLAGS): Include mig-mutate.h.
* libpager/chg-compl.c: Fix receiver lookups.
* libpager/data-request.c: Likewise.
* libpager/data-return.c: Likewise.
* libpager/data-unlock.c: Likewise.
* libpager/lock-completed.c: Likewise.
* libpager/object-init.c: Likewise.
* libpager/object-terminate.c: Likewise.
* libpager/stubs.c: Likewise.
* libpager/seqnos.c (_pager_update_seqno): Move the actual
functionality...
(_pager_update_seqno_p): ... into a new function that can be called
with a pointer to struct pager.
* libpager/priv.h (_pager_update_seqno_p): New declaration.
---
 libpager/object-init.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

(limited to 'libpager/object-init.c')

diff --git a/libpager/object-init.c b/libpager/object-init.c
index 90ffc016..6683e24d 100644
--- a/libpager/object-init.c
+++ b/libpager/object-init.c
@@ -22,16 +22,14 @@
 /* Implement the object initialiation call as described in
    <mach/memory_object.defs>.  */
 kern_return_t
-_pager_seqnos_memory_object_init (mach_port_t object, 
+_pager_seqnos_memory_object_init (struct pager *p,
 				  mach_port_seqno_t seqno,
 				  mach_port_t control,
 				  mach_port_t name,
 				  vm_size_t pagesize)
 {
-  struct pager *p;
-
-  p = ports_lookup_port (0, object, _pager_class);
-  if (!p)
+  if (!p
+      || p->port.class != _pager_class)
     return EOPNOTSUPP;
 
   pthread_mutex_lock (&p->interlock);
@@ -73,7 +71,6 @@ _pager_seqnos_memory_object_init (mach_port_t object,
  out:
   _pager_release_seqno (p, seqno);
   pthread_mutex_unlock (&p->interlock);
-  ports_port_deref (p);
 
   return 0;
 }
-- 
cgit v1.2.3