summaryrefslogtreecommitdiff
path: root/debian/patches/0007-ipc-inline-key-ipc-entry-lookup-functions.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/0007-ipc-inline-key-ipc-entry-lookup-functions.patch')
-rw-r--r--debian/patches/0007-ipc-inline-key-ipc-entry-lookup-functions.patch316
1 files changed, 0 insertions, 316 deletions
diff --git a/debian/patches/0007-ipc-inline-key-ipc-entry-lookup-functions.patch b/debian/patches/0007-ipc-inline-key-ipc-entry-lookup-functions.patch
deleted file mode 100644
index b43233b..0000000
--- a/debian/patches/0007-ipc-inline-key-ipc-entry-lookup-functions.patch
+++ /dev/null
@@ -1,316 +0,0 @@
-From 8346e6fb9bbe15c86d5736d53379f8366f17a127 Mon Sep 17 00:00:00 2001
-From: Justus Winter <4winter@informatik.uni-hamburg.de>
-Date: Wed, 1 Apr 2015 17:17:01 +0200
-Subject: [PATCH gnumach 7/8] ipc: inline key ipc entry lookup functions
-
-Declare functions looking up IPC entries that were previously inlined
-manually with `static inline' so that they will be inlined into the
-fast paths by the compiler.
-
-* ipc/ipc_entry.c (ipc_entry_lookup, ipc_entry_get,
-ipc_entry_dealloc): Move functions...
-* ipc/ipc_space.h: ... here, and declare them as `static inline'.
-* ipc/ipc_entry.h: Drop associated declarations.
----
- ipc/ipc_entry.c | 119 -------------------------------------------------------
- ipc/ipc_entry.h | 9 -----
- ipc/ipc_space.h | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 120 insertions(+), 128 deletions(-)
-
-diff --git a/ipc/ipc_entry.c b/ipc/ipc_entry.c
-index 2d6e665..a5fe319 100644
---- a/ipc/ipc_entry.c
-+++ b/ipc/ipc_entry.c
-@@ -52,93 +52,6 @@
- struct kmem_cache ipc_entry_cache;
-
- /*
-- * Routine: ipc_entry_lookup
-- * Purpose:
-- * Searches for an entry, given its name.
-- * Conditions:
-- * The space must be read or write locked throughout.
-- * The space must be active.
-- */
--
--ipc_entry_t
--ipc_entry_lookup(
-- ipc_space_t space,
-- mach_port_t name)
--{
-- ipc_entry_t entry;
--
-- assert(space->is_active);
-- entry = rdxtree_lookup(&space->is_map, (rdxtree_key_t) name);
-- if (entry != IE_NULL
-- && IE_BITS_TYPE(entry->ie_bits) == MACH_PORT_TYPE_NONE)
-- entry = NULL;
-- assert((entry == IE_NULL) || IE_BITS_TYPE(entry->ie_bits));
-- return entry;
--}
--
--/*
-- * Routine: ipc_entry_get
-- * Purpose:
-- * Tries to allocate an entry out of the space.
-- * Conditions:
-- * The space is write-locked and active throughout.
-- * An object may be locked. Will not allocate memory.
-- * Returns:
-- * KERN_SUCCESS A free entry was found.
-- * KERN_NO_SPACE No entry allocated.
-- */
--
--kern_return_t
--ipc_entry_get(
-- ipc_space_t space,
-- mach_port_t *namep,
-- ipc_entry_t *entryp)
--{
-- mach_port_t new_name;
-- ipc_entry_t free_entry;
--
-- assert(space->is_active);
--
-- /* Get entry from the free list. */
-- free_entry = space->is_free_list;
-- if (free_entry == IE_NULL)
-- return KERN_NO_SPACE;
--
-- space->is_free_list = free_entry->ie_next_free;
-- space->is_free_list_size -= 1;
--
-- /*
-- * Initialize the new entry. We need only
-- * increment the generation number and clear ie_request.
-- */
--
-- {
-- mach_port_gen_t gen;
--
-- assert((free_entry->ie_bits &~ IE_BITS_GEN_MASK) == 0);
-- gen = free_entry->ie_bits + IE_BITS_GEN_ONE;
-- free_entry->ie_bits = gen;
-- free_entry->ie_request = 0;
-- new_name = MACH_PORT_MAKE(free_entry->ie_name, gen);
-- }
--
-- /*
-- * The new name can't be MACH_PORT_NULL because index
-- * is non-zero. It can't be MACH_PORT_DEAD because
-- * the table isn't allowed to grow big enough.
-- * (See comment in ipc/ipc_table.h.)
-- */
--
-- assert(MACH_PORT_VALID(new_name));
-- assert(free_entry->ie_object == IO_NULL);
--
-- space->is_size += 1;
-- *namep = new_name;
-- *entryp = free_entry;
-- return KERN_SUCCESS;
--}
--
--/*
- * Routine: ipc_entry_alloc
- * Purpose:
- * Allocate an entry out of the space.
-@@ -293,38 +206,6 @@ ipc_entry_alloc_name(
- return KERN_SUCCESS;
- }
-
--/*
-- * Routine: ipc_entry_dealloc
-- * Purpose:
-- * Deallocates an entry from a space.
-- * Conditions:
-- * The space must be write-locked throughout.
-- * The space must be active.
-- */
--
--void
--ipc_entry_dealloc(
-- ipc_space_t space,
-- mach_port_t name,
-- ipc_entry_t entry)
--{
-- assert(space->is_active);
-- assert(entry->ie_object == IO_NULL);
-- assert(entry->ie_request == 0);
--
-- if (space->is_free_list_size < IS_FREE_LIST_SIZE_LIMIT) {
-- space->is_free_list_size += 1;
-- entry->ie_bits &= IE_BITS_GEN_MASK;
-- entry->ie_next_free = space->is_free_list;
-- space->is_free_list = entry;
-- } else {
-- rdxtree_remove(&space->is_map, (rdxtree_key_t) name);
-- ie_free(entry);
-- }
-- space->is_size -= 1;
--}
--
--
- #if MACH_KDB
- #include <ddb/db_output.h>
- #include <kern/task.h>
-diff --git a/ipc/ipc_entry.h b/ipc/ipc_entry.h
-index 451dc53..ee3c2d4 100644
---- a/ipc/ipc_entry.h
-+++ b/ipc/ipc_entry.h
-@@ -104,21 +104,12 @@ extern struct kmem_cache ipc_entry_cache;
- #define ie_alloc() ((ipc_entry_t) kmem_cache_alloc(&ipc_entry_cache))
- #define ie_free(e) kmem_cache_free(&ipc_entry_cache, (vm_offset_t) (e))
-
--extern ipc_entry_t
--ipc_entry_lookup(ipc_space_t space, mach_port_t name);
--
--extern kern_return_t
--ipc_entry_get(ipc_space_t space, mach_port_t *namep, ipc_entry_t *entryp);
--
- extern kern_return_t
- ipc_entry_alloc(ipc_space_t space, mach_port_t *namep, ipc_entry_t *entryp);
-
- extern kern_return_t
- ipc_entry_alloc_name(ipc_space_t space, mach_port_t name, ipc_entry_t *entryp);
-
--extern void
--ipc_entry_dealloc(ipc_space_t space, mach_port_t name, ipc_entry_t entry);
--
- ipc_entry_t
- db_ipc_object_by_name(
- task_t task,
-diff --git a/ipc/ipc_space.h b/ipc/ipc_space.h
-index c90a2a3..404f708 100644
---- a/ipc/ipc_space.h
-+++ b/ipc/ipc_space.h
-@@ -137,6 +137,126 @@ kern_return_t ipc_space_create(ipc_table_size_t, ipc_space_t *);
- kern_return_t ipc_space_create_special(struct ipc_space **);
- void ipc_space_destroy(struct ipc_space *);
-
-+/* IPC entry lookups. */
-+
-+/*
-+ * Routine: ipc_entry_lookup
-+ * Purpose:
-+ * Searches for an entry, given its name.
-+ * Conditions:
-+ * The space must be read or write locked throughout.
-+ * The space must be active.
-+ */
-+
-+static inline ipc_entry_t
-+ipc_entry_lookup(
-+ ipc_space_t space,
-+ mach_port_t name)
-+{
-+ ipc_entry_t entry;
-+
-+ assert(space->is_active);
-+ entry = rdxtree_lookup(&space->is_map, (rdxtree_key_t) name);
-+ if (entry != IE_NULL
-+ && IE_BITS_TYPE(entry->ie_bits) == MACH_PORT_TYPE_NONE)
-+ entry = NULL;
-+ assert((entry == IE_NULL) || IE_BITS_TYPE(entry->ie_bits));
-+ return entry;
-+}
-+
-+/*
-+ * Routine: ipc_entry_get
-+ * Purpose:
-+ * Tries to allocate an entry out of the space.
-+ * Conditions:
-+ * The space is write-locked and active throughout.
-+ * An object may be locked. Will not allocate memory.
-+ * Returns:
-+ * KERN_SUCCESS A free entry was found.
-+ * KERN_NO_SPACE No entry allocated.
-+ */
-+
-+static inline kern_return_t
-+ipc_entry_get(
-+ ipc_space_t space,
-+ mach_port_t *namep,
-+ ipc_entry_t *entryp)
-+{
-+ mach_port_t new_name;
-+ ipc_entry_t free_entry;
-+
-+ assert(space->is_active);
-+
-+ /* Get entry from the free list. */
-+ free_entry = space->is_free_list;
-+ if (free_entry == IE_NULL)
-+ return KERN_NO_SPACE;
-+
-+ space->is_free_list = free_entry->ie_next_free;
-+ space->is_free_list_size -= 1;
-+
-+ /*
-+ * Initialize the new entry. We need only
-+ * increment the generation number and clear ie_request.
-+ */
-+
-+ {
-+ mach_port_gen_t gen;
-+
-+ assert((free_entry->ie_bits &~ IE_BITS_GEN_MASK) == 0);
-+ gen = free_entry->ie_bits + IE_BITS_GEN_ONE;
-+ free_entry->ie_bits = gen;
-+ free_entry->ie_request = 0;
-+ new_name = MACH_PORT_MAKE(free_entry->ie_name, gen);
-+ }
-+
-+ /*
-+ * The new name can't be MACH_PORT_NULL because index
-+ * is non-zero. It can't be MACH_PORT_DEAD because
-+ * the table isn't allowed to grow big enough.
-+ * (See comment in ipc/ipc_table.h.)
-+ */
-+
-+ assert(MACH_PORT_VALID(new_name));
-+ assert(free_entry->ie_object == IO_NULL);
-+
-+ space->is_size += 1;
-+ *namep = new_name;
-+ *entryp = free_entry;
-+ return KERN_SUCCESS;
-+}
-+
-+/*
-+ * Routine: ipc_entry_dealloc
-+ * Purpose:
-+ * Deallocates an entry from a space.
-+ * Conditions:
-+ * The space must be write-locked throughout.
-+ * The space must be active.
-+ */
-+
-+static inline void
-+ipc_entry_dealloc(
-+ ipc_space_t space,
-+ mach_port_t name,
-+ ipc_entry_t entry)
-+{
-+ assert(space->is_active);
-+ assert(entry->ie_object == IO_NULL);
-+ assert(entry->ie_request == 0);
-+
-+ if (space->is_free_list_size < IS_FREE_LIST_SIZE_LIMIT) {
-+ space->is_free_list_size += 1;
-+ entry->ie_bits &= IE_BITS_GEN_MASK;
-+ entry->ie_next_free = space->is_free_list;
-+ space->is_free_list = entry;
-+ } else {
-+ rdxtree_remove(&space->is_map, (rdxtree_key_t) name);
-+ ie_free(entry);
-+ }
-+ space->is_size -= 1;
-+}
-+
- /* Reverse lookups. */
-
- /* Cast a pointer to a suitable key. */
---
-2.1.4
-