summaryrefslogtreecommitdiff
path: root/debian/patches/0025-maybe_fu-use-pp.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/0025-maybe_fu-use-pp.patch')
-rw-r--r--debian/patches/0025-maybe_fu-use-pp.patch125
1 files changed, 0 insertions, 125 deletions
diff --git a/debian/patches/0025-maybe_fu-use-pp.patch b/debian/patches/0025-maybe_fu-use-pp.patch
deleted file mode 100644
index 58ce3a09..00000000
--- a/debian/patches/0025-maybe_fu-use-pp.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From a266ace960cb823532140e2c683316a9b803a7a4 Mon Sep 17 00:00:00 2001
-From: Justus Winter <4winter@informatik.uni-hamburg.de>
-Date: Sun, 12 Oct 2014 15:32:54 +0200
-Subject: [PATCH hurd 25/29] maybe_fu use pp
-
----
- libports/complete-deallocate.c | 9 +++------
- libports/destroy-right.c | 32 ++++++++++++--------------------
- 2 files changed, 15 insertions(+), 26 deletions(-)
-
-diff --git a/libports/complete-deallocate.c b/libports/complete-deallocate.c
-index 1a6eb54..6799dfd 100644
---- a/libports/complete-deallocate.c
-+++ b/libports/complete-deallocate.c
-@@ -27,7 +27,7 @@ _ports_complete_deallocate (struct port_info *pi)
- {
- assert ((pi->flags & PORT_HAS_SENDRIGHTS) == 0);
-
-- if (pi->port_right)
-+ if (MACH_PORT_VALID (pi->port_right))
- {
- struct references result;
-
-@@ -45,11 +45,8 @@ _ports_complete_deallocate (struct port_info *pi)
- hurd_ihash_locp_remove (&pi->bucket->htable, pi->hentry);
- pthread_rwlock_unlock (&_ports_htable_lock);
-
-- /* If the right has been destroyed using ports_destroy_right,
-- port_right is set to MACH_PORT_DEAD. */
-- if (MACH_PORT_VALID (pi->port_right))
-- mach_port_mod_refs (mach_task_self (), pi->port_right,
-- MACH_PORT_RIGHT_RECEIVE, -1);
-+ mach_port_mod_refs (mach_task_self (), pi->port_right,
-+ MACH_PORT_RIGHT_RECEIVE, -1);
- pi->port_right = MACH_PORT_NULL;
- }
-
-diff --git a/libports/destroy-right.c b/libports/destroy-right.c
-index 1e32379..ed6b66b 100644
---- a/libports/destroy-right.c
-+++ b/libports/destroy-right.c
-@@ -36,22 +36,21 @@ ports_destroy_right (void *portstruct)
- struct port_info *pi = portstruct;
- error_t err;
-
-+ mach_port_clear_protected_payload (mach_task_self (),
-+ pi->port_right);
-+
- pthread_mutex_lock (&_ports_lock);
- if (pi->port_right != MACH_PORT_NULL)
- {
-- mach_port_clear_protected_payload (mach_task_self (),
-- pi->port_right);
--
- pthread_rwlock_wrlock (&_ports_htable_lock);
- hurd_ihash_locp_remove (&_ports_htable, pi->ports_htable_entry);
- hurd_ihash_locp_remove (&pi->bucket->htable, pi->hentry);
- pthread_rwlock_unlock (&_ports_htable_lock);
-+
- err = mach_port_mod_refs (mach_task_self (), pi->port_right,
- MACH_PORT_RIGHT_RECEIVE, -1);
- assert_perror (err);
-
-- pi->port_right = MACH_PORT_NULL;
--
- if (pi->flags & PORT_HAS_SENDRIGHTS)
- {
- /* There are outstanding send rights, so we might get a
-@@ -67,8 +66,6 @@ ports_destroy_right (void *portstruct)
- reference here, but defer that instead. */
- defer_dereferencing (pi);
- }
-- else
-- hurd_ihash_locp_remove (&pi->bucket->htable, pi->hentry);
-
- pi->port_right = MACH_PORT_DEAD;
- }
-@@ -117,20 +114,17 @@ gc_loop (void *arg)
- while (d != NULL)
- {
- struct deferred_dereference *next = d->next;
-- int references;
-+ struct references refs;
-
-- pthread_mutex_lock (&_ports_lock);
-- references = d->pi->refcnt;
-- pthread_mutex_unlock (&_ports_lock);
-+ refcounts_references (&d->pi->refcounts, &refs);
-
-- assert (references <= 2 || !"reference to destroyed right leaked");
-+ // XXX: Need to think more about this.
-+ assert (refs.hard <= 2 || !"reference to destroyed right leaked");
-
-- if (references == 2)
-+ if (refs.hard == 2)
- {
-+ /* XXX: does this actually happen? if so, why?? */
- /* Get rid of the hash table reference. */
-- pthread_mutex_lock (&_ports_lock);
-- hurd_ihash_locp_remove (&d->pi->bucket->htable, d->pi->hentry);
-- pthread_mutex_unlock (&_ports_lock);
- ports_port_deref (d->pi);
- }
-
-@@ -177,15 +171,13 @@ defer_dereferencing (struct port_info *pi)
-
- pthread_once (&once, start_gc);
-
-- /* XXX we hold _ports_lock, so we cannot do
-- ports_port_ref (pi); */
-- pi->refcnt += 1;
-+ ports_port_ref (pi);
- d->pi = pi;
-
-+ retry:
- /* Append to the current generation. */
- g = __atomic_load_n (&generation, __ATOMIC_RELAXED);
-
-- retry:
- d->next = __atomic_load_n (&generations[g], __ATOMIC_RELAXED);
- if (! __atomic_compare_exchange_n (&generations[g], &d->next, d,
- 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED))
---
-2.1.3
-