diff options
Diffstat (limited to 'debian/patches/0004-renamed-stuff.patch')
| -rw-r--r-- | debian/patches/0004-renamed-stuff.patch | 280 |
1 files changed, 0 insertions, 280 deletions
diff --git a/debian/patches/0004-renamed-stuff.patch b/debian/patches/0004-renamed-stuff.patch deleted file mode 100644 index e74633ed..00000000 --- a/debian/patches/0004-renamed-stuff.patch +++ /dev/null @@ -1,280 +0,0 @@ -From f18e34a4a6cd93bad8af6e720f52c71b020c3f69 Mon Sep 17 00:00:00 2001 -From: Justus Winter <4winter@informatik.uni-hamburg.de> -Date: Sat, 4 Apr 2015 13:57:30 +0200 -Subject: [PATCH hurd 4/4] renamed stuff - ---- - libports/create-bucket.c | 2 +- - libports/port-deref-deferred.c | 139 ++++++++++++++++++++++------------------- - libports/port-deref-deferred.h | 16 ++--- - libports/ports.h | 2 +- - 4 files changed, 82 insertions(+), 77 deletions(-) - -diff --git a/libports/create-bucket.c b/libports/create-bucket.c -index 32b2b76..82c00a4 100644 ---- a/libports/create-bucket.c -+++ b/libports/create-bucket.c -@@ -48,6 +48,6 @@ ports_create_bucket () - - hurd_ihash_init (&ret->htable, offsetof (struct port_info, hentry)); - ret->rpcs = ret->flags = ret->count = 0; -- _ports_sync_init (&ret->sync); -+ _ports_threadpool_init (&ret->threadpool); - return ret; - } -diff --git a/libports/port-deref-deferred.c b/libports/port-deref-deferred.c -index 27604c5..06b57f8 100644 ---- a/libports/port-deref-deferred.c -+++ b/libports/port-deref-deferred.c -@@ -3,101 +3,112 @@ - - #include <pthread.h> - --#define COLOR_VALID(X) ((X) == COLOR_BLACK || (X) == COLOR_WHITE) -+/* -+ * A threadpool has a color indicating which threads belong to the old -+ * generation. -+ */ -+#define COLOR_BLACK 0 -+#define COLOR_WHITE 1 -+#define COLOR_INVALID ~0U -+ -+static inline int -+valid_color (unsigned int c) -+{ -+ return c == COLOR_BLACK || c == COLOR_WHITE; -+} - --void --_ports_sync_init (struct ports_sync *s) -+static inline unsigned int -+flip_color (unsigned int c) - { -- pthread_spin_init (&s->lock, PTHREAD_PROCESS_PRIVATE); -- s->color = COLOR_BLACK; -- s->old_threads = 0; -- s->old_objects = NULL; -- s->young_threads = 0; -- s->young_objects = NULL; -+ assert (valid_color (c)); -+ return ! c; - } - --static inline enum def_color --flip_color (enum def_color c) -+void -+_ports_threadpool_init (struct ports_threadpool *pool) - { -- switch (c) -- { -- case COLOR_BLACK: -- return COLOR_WHITE; -- case COLOR_WHITE: -- return COLOR_BLACK; -- default: -- assert (! "invalid color"); -- } -+ pthread_spin_init (&pool->lock, PTHREAD_PROCESS_PRIVATE); -+ pool->color = COLOR_BLACK; -+ pool->old_threads = 0; -+ pool->old_objects = NULL; -+ pool->young_threads = 0; -+ pool->young_objects = NULL; - } - - static inline void --flip_generations (struct ports_sync *s) -+flip_generations (struct ports_threadpool *pool) - { -- assert (s->old_threads == 0); -- s->old_threads = s->young_threads; -- s->old_objects = s->young_objects; -- s->young_threads = 0; -- s->young_objects = NULL; -- s->color = flip_color (s->color); -+ assert (pool->old_threads == 0); -+ pool->old_threads = pool->young_threads; -+ pool->old_objects = pool->young_objects; -+ pool->young_threads = 0; -+ pool->young_objects = NULL; -+ pool->color = flip_color (pool->color); - } - -+struct pi_list -+{ -+ struct pi_list *next; -+ struct port_info *pi; -+}; -+ - void - _ports_port_deref_deferred (struct port_info *pi) - { -- struct ports_sync *s = &pi->bucket->sync; -+ struct ports_threadpool *pool = &pi->bucket->threadpool; - - struct pi_list *pl = malloc (sizeof *pl); - if (pl == NULL) - return; - pl->pi = pi; - -- pthread_spin_lock (&s->lock); -- pl->next = s->young_objects; -- s->young_objects = pl; -- if (s->old_threads == 0) -+ pthread_spin_lock (&pool->lock); -+ pl->next = pool->young_objects; -+ pool->young_objects = pl; -+ if (pool->old_threads == 0) - { -- assert (s->old_objects == NULL); -- flip_generations (s); -+ assert (pool->old_objects == NULL); -+ flip_generations (pool); - } -- pthread_spin_unlock (&s->lock); -+ pthread_spin_unlock (&pool->lock); - } - - void - _ports_thread_online (struct port_bucket *bucket, -- struct ports_thread *t) -+ struct ports_thread *thread) - { -- struct ports_sync *s = &bucket->sync; -- pthread_spin_lock (&s->lock); -- t->color = flip_color (s->color); -- s->young_threads += 1; -- pthread_spin_unlock (&s->lock); -+ struct ports_threadpool *pool = &bucket->threadpool; -+ pthread_spin_lock (&pool->lock); -+ thread->color = flip_color (pool->color); -+ pool->young_threads += 1; -+ pthread_spin_unlock (&pool->lock); - } - - void - _ports_thread_quiescent (struct port_bucket *bucket, -- struct ports_thread *t) -+ struct ports_thread *thread) - { -- struct ports_sync *s = &bucket->sync; -+ struct ports_threadpool *pool = &bucket->threadpool; - struct pi_list *free_list = NULL, *p; -- assert (COLOR_VALID (t->color)); -+ assert (valid_color (thread->color)); - -- pthread_spin_lock (&s->lock); -- if (t->color == s->color) -+ pthread_spin_lock (&pool->lock); -+ if (thread->color == pool->color) - { -- s->old_threads -= 1; -- s->young_threads += 1; -- t->color = flip_color (t->color); -+ pool->old_threads -= 1; -+ pool->young_threads += 1; -+ thread->color = flip_color (thread->color); - -- if (s->old_threads == 0) -+ if (pool->old_threads == 0) - { -- free_list = s->old_objects; -- flip_generations (s); -+ free_list = pool->old_objects; -+ flip_generations (pool); - } - } -- pthread_spin_unlock (&s->lock); -+ pthread_spin_unlock (&pool->lock); - - if (free_list) -- error (0, 0, "dereferencing %p, my color is %d", free_list, t->color); -+ error (0, 0, "dereferencing %p, my color is %d", free_list, thread->color); - - for (p = free_list; p;) - { -@@ -111,19 +122,19 @@ _ports_thread_quiescent (struct port_bucket *bucket, - - void - _ports_thread_offline (struct port_bucket *bucket, -- struct ports_thread *t) -+ struct ports_thread *thread) - { -- struct ports_sync *s = &bucket->sync; -- assert (COLOR_VALID (t->color)); -+ struct ports_threadpool *pool = &bucket->threadpool; -+ assert (valid_color (thread->color)); - retry: -- pthread_spin_lock (&s->lock); -- if (t->color == s->color) -+ pthread_spin_lock (&pool->lock); -+ if (thread->color == pool->color) - { -- pthread_spin_unlock (&s->lock); -- _ports_thread_quiescent (bucket, t); -+ pthread_spin_unlock (&pool->lock); -+ _ports_thread_quiescent (bucket, thread); - goto retry; - } -- t->color = COLOR_NONE; -- s->young_threads -= 1; -- pthread_spin_unlock (&s->lock); -+ thread->color = COLOR_INVALID; -+ pool->young_threads -= 1; -+ pthread_spin_unlock (&pool->lock); - } -diff --git a/libports/port-deref-deferred.h b/libports/port-deref-deferred.h -index 6586c81..6c208fd 100644 ---- a/libports/port-deref-deferred.h -+++ b/libports/port-deref-deferred.h -@@ -1,19 +1,13 @@ - #ifndef _HURD_PORTS_DEREF_DEFERRED_ - #define _HURD_PORTS_DEREF_DEFERRED_ - --enum def_color { COLOR_NONE, COLOR_BLACK, COLOR_WHITE }; -+struct pi_list; - --struct pi_list --{ -- struct pi_list *next; -- struct port_info *pi; --}; -- --struct ports_sync -+struct ports_threadpool - { - pthread_spinlock_t lock; - -- enum def_color color; -+ unsigned int color; - - size_t old_threads; - struct pi_list *old_objects; -@@ -24,9 +18,9 @@ struct ports_sync - - struct ports_thread - { -- enum def_color color; -+ unsigned int color; - }; - --void _ports_sync_init (struct ports_sync *s); -+void _ports_threadpool_init (struct ports_threadpool *); - - #endif /* _HURD_PORTS_DEREF_DEFERRED_ */ -diff --git a/libports/ports.h b/libports/ports.h -index c047a1a..dd396f2 100644 ---- a/libports/ports.h -+++ b/libports/ports.h -@@ -75,7 +75,7 @@ struct port_bucket - int rpcs; - int flags; - int count; -- struct ports_sync sync; -+ struct ports_threadpool threadpool; - }; - /* FLAGS above are the following: */ - #define PORT_BUCKET_INHIBITED PORTS_INHIBITED --- -2.1.4 - |
