Module: xenomai-3 Branch: master Commit: aa24133acbe4298443c5a040309382030aac05db URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=aa24133acbe4298443c5a040309382030aac05db
Author: Philippe Gerum <r...@xenomai.org> Date: Tue Mar 17 17:06:39 2015 +0100 cobalt/posix/process: move global thread list out of kqueue container --- kernel/cobalt/posix/init.c | 3 ++- kernel/cobalt/posix/process.c | 1 - kernel/cobalt/posix/process.h | 3 ++- kernel/cobalt/posix/thread.c | 7 +++---- kernel/cobalt/posix/thread.h | 7 ++----- 5 files changed, 9 insertions(+), 12 deletions(-) diff --git a/kernel/cobalt/posix/init.c b/kernel/cobalt/posix/init.c index e97f96f..e955a3f 100644 --- a/kernel/cobalt/posix/init.c +++ b/kernel/cobalt/posix/init.c @@ -30,6 +30,8 @@ #include "monitor.h" #include "event.h" +LIST_HEAD(cobalt_thread_list); + struct cobalt_kqueues cobalt_global_kqueues; void cobalt_cleanup(void) @@ -49,7 +51,6 @@ int __init cobalt_init(void) { int ret; - INIT_LIST_HEAD(&cobalt_global_kqueues.threadq); cobalt_time_slice = CONFIG_XENO_OPT_RR_QUANTUM * 1000; ret = cobalt_process_init(); diff --git a/kernel/cobalt/posix/process.c b/kernel/cobalt/posix/process.c index dfcce4c..1ae494f 100644 --- a/kernel/cobalt/posix/process.c +++ b/kernel/cobalt/posix/process.c @@ -1323,7 +1323,6 @@ static void *cobalt_process_attach(void) INIT_LIST_HEAD(&process->kqueues.condq); INIT_LIST_HEAD(&process->kqueues.mutexq); INIT_LIST_HEAD(&process->kqueues.semq); - INIT_LIST_HEAD(&process->kqueues.threadq); INIT_LIST_HEAD(&process->kqueues.monitorq); INIT_LIST_HEAD(&process->kqueues.eventq); INIT_LIST_HEAD(&process->kqueues.schedq); diff --git a/kernel/cobalt/posix/process.h b/kernel/cobalt/posix/process.h index 7f78345..7c9ab2f 100644 --- a/kernel/cobalt/posix/process.h +++ b/kernel/cobalt/posix/process.h @@ -38,7 +38,6 @@ struct cobalt_kqueues { struct list_head condq; struct list_head mutexq; struct list_head semq; - struct list_head threadq; struct list_head monitorq; struct list_head eventq; struct list_head schedq; @@ -57,6 +56,8 @@ struct cobalt_process { void *priv[NR_PERSONALITIES]; }; +extern struct list_head cobalt_thread_list; + extern struct cobalt_kqueues cobalt_global_kqueues; int cobalt_register_personality(struct xnthread_personality *personality); diff --git a/kernel/cobalt/posix/thread.c b/kernel/cobalt/posix/thread.c index cc47c10..c122cf6 100644 --- a/kernel/cobalt/posix/thread.c +++ b/kernel/cobalt/posix/thread.c @@ -220,7 +220,7 @@ struct xnthread_personality *cobalt_thread_exit(struct xnthread *curr) thread_unhash(&thread->hkey); xnlock_get_irqsave(&nklock, s); cobalt_mark_deleted(thread); - list_del(&thread->link); + list_del(&thread->next); xnlock_put_irqrestore(&nklock, s); cobalt_signal_flush(thread); xnsynch_destroy(&thread->monitor_synch); @@ -404,8 +404,7 @@ static int pthread_create(struct cobalt_thread **thread_p, } xnlock_get_irqsave(&nklock, s); - thread->container = &cobalt_kqueues(0)->threadq; - list_add_tail(&thread->link, thread->container); + list_add_tail(&thread->next, &cobalt_thread_list); xnlock_put_irqrestore(&nklock, s); thread->hkey.u_pth = 0; @@ -424,7 +423,7 @@ static void pthread_discard(struct cobalt_thread *thread) xnsynch_destroy(&thread->sigwait); xnlock_get_irqsave(&nklock, s); - list_del(&thread->link); + list_del(&thread->next); xnlock_put_irqrestore(&nklock, s); __xnthread_discard(&thread->threadbase); xnfree(thread); diff --git a/kernel/cobalt/posix/thread.h b/kernel/cobalt/posix/thread.h index d00879f..ffdf612 100644 --- a/kernel/cobalt/posix/thread.h +++ b/kernel/cobalt/posix/thread.h @@ -91,14 +91,11 @@ struct cobalt_thread { struct xnthread threadbase; struct cobalt_extref extref; struct cobalt_process *process; - - /** cobalt_threadq */ - struct list_head link; - struct list_head *container; + struct list_head next; /* in cobalt_thread_list */ /** Signal management. */ sigset_t sigpending; - struct list_head sigqueues[_NSIG]; /* cobalt_sigpending */ + struct list_head sigqueues[_NSIG]; /* in cobalt_sigpending */ struct xnsynch sigwait; struct list_head signext; _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git