[Xenomai-git] Philippe Gerum : segfault latency
Module: xenomai-gch Branch: for-forge-rtdm-rework Commit: 2382ec33e73437579e73ed80d298c11fdfab1bcb URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=2382ec33e73437579e73ed80d298c11fdfab1bcb Author: Philippe Gerum r...@xenomai.org Date: Sun Mar 9 11:00:11 2014 +0100 segfault latency On 03/08/2014 08:34 PM, Gilles Chanteperdrix wrote: On 03/08/2014 08:25 PM, Gilles Chanteperdrix wrote: Rere, j'ai une segfault de latency quand il essaie d'afficher le message disant qu'il ne trouve pas le registry daemon. J'ai pensé à la taille de la stack, que j'ai donc agrandie à 128K, et j'ai toujours la segfault. D'autre part, je vois que le paramètre name de la fonction printout est 0x60. Je suppute que c'est le nom du thread? À+. Le patch suivant corrige: diff --git a/lib/copperplate/init.c b/lib/copperplate/init.c index 19036e6..62abf3c 100644 --- a/lib/copperplate/init.c +++ b/lib/copperplate/init.c @@ -539,13 +539,14 @@ void copperplate_init(int *argcp, char *const **argvp) goto fail; } + threadobj_pkg_init(); + if (__node_info.no_registry == 0) { ret = registry_pkg_init(uargv[0]); if (ret) goto fail; } - threadobj_pkg_init(); ret = timerobj_pkg_init(); if (ret) { warning(failed to initialize timer support); Mais je ne pense pas que ce soit suffisant: threadobj_pkg_init doit avoir été appelé avant tout appel à warning histoire que la clé de TSD utilisée par threadobj_current() soit valide. Sinon 0 est pris comme clé et threadobj_current() retourne n'importe quoi (0xc dans mon cas). Je voudrais éviter que l'overlay de la main thread et tous les autres préparatifs aient lieu avant de forker le registry. Et puis en théorie, il faudrait que le tsd soit dispo dès le début des inits complexes qui sont susceptibles de paniquer ou faire un warning. Est-ce que ce truc marche pour toi ? --- include/boilerplate/ancillaries.h |4 include/copperplate/threadobj.h |2 ++ lib/boilerplate/ancillaries.c | 12 lib/copperplate/init.c|2 ++ lib/copperplate/threadobj.c |6 ++ 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/include/boilerplate/ancillaries.h b/include/boilerplate/ancillaries.h index fc04f2f..da1e827 100644 --- a/include/boilerplate/ancillaries.h +++ b/include/boilerplate/ancillaries.h @@ -55,11 +55,15 @@ void __printout(const char *name, void __panic(const char *name, const char *fmt, va_list ap); +void early_panic(const char *fmt, ...); + void panic(const char *fmt, ...); void __warning(const char *name, const char *fmt, va_list ap); +void early_warning(const char *fmt, ...); + void warning(const char *fmt, ...); const char *symerror(int errnum); diff --git a/include/copperplate/threadobj.h b/include/copperplate/threadobj.h index d5e4591..7e5f7de 100644 --- a/include/copperplate/threadobj.h +++ b/include/copperplate/threadobj.h @@ -355,6 +355,8 @@ static inline int threadobj_local_p(struct threadobj *thobj) #endif /* !CONFIG_XENO_PSHARED */ +void threadobj_init_key(void); + void threadobj_pkg_init(void); #ifdef __cplusplus diff --git a/lib/boilerplate/ancillaries.c b/lib/boilerplate/ancillaries.c index 59d49c3..35bd401 100644 --- a/lib/boilerplate/ancillaries.c +++ b/lib/boilerplate/ancillaries.c @@ -150,8 +150,7 @@ void __run_cleanup_block(struct cleanup_block *cb) cb-handler(cb-arg); } -__attribute__ ((weak)) -void panic(const char *fmt, ...) +void early_panic(const char *fmt, ...) { va_list ap; @@ -160,8 +159,10 @@ void panic(const char *fmt, ...) va_end(ap); } -__attribute__ ((weak)) -void warning(const char *fmt, ...) +void panic(const char *fmt, ...) +__attribute__((alias(early_panic), weak)); + +void early_warning(const char *fmt, ...) { va_list ap; @@ -170,6 +171,9 @@ void warning(const char *fmt, ...) va_end(ap); } +void warning(const char *fmt, ...) +__attribute__((alias(early_warning), weak)); + char *generate_name(char *buf, const char *radix, struct name_generator *ngen) { diff --git a/lib/copperplate/init.c b/lib/copperplate/init.c index 19036e6..58e5dc1 100644 --- a/lib/copperplate/init.c +++ b/lib/copperplate/init.c @@ -487,6 +487,8 @@ void copperplate_init(int *argcp, char *const **argvp) boilerplate_init(); + threadobj_init_key(); + /* Our node id. is the tid of the main thread. */ __node_id = copperplate_get_tid(); diff --git a/lib/copperplate/threadobj.c b/lib/copperplate/threadobj.c index b75d331..79fcdb2 100644 --- a/lib/copperplate/threadobj.c +++ b/lib/copperplate/threadobj.c @@ -77,10 +77,10 @@ struct threadobj *__threadobj_current; */ pthread_key_t threadobj_tskey; -static inline void threadobj_init_key(void) +void threadobj_init_key(void) {
[Xenomai-git] Gilles Chanteperdrix : arm: fix context switch for 3.11+
Module: xenomai-gch Branch: for-forge Commit: a829a62f75e216c5509c89f14570bae5365c4447 URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=a829a62f75e216c5509c89f14570bae5365c4447 Author: Gilles Chanteperdrix gilles.chanteperd...@xenomai.org Date: Fri Apr 25 21:29:26 2014 +0200 arm: fix context switch for 3.11+ --- kernel/cobalt/arch/arm/switch.S |4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/cobalt/arch/arm/switch.S b/kernel/cobalt/arch/arm/switch.S index 5a4ecbc..6258a15 100644 --- a/kernel/cobalt/arch/arm/switch.S +++ b/kernel/cobalt/arch/arm/switch.S @@ -141,11 +141,11 @@ ENTRY(__asm_thread_switch) THUMB(stmia ip!, {r4 - sl, fp} )@ Store most regs on stack THUMB(str sp, [ip], #4 ) THUMB(str lr, [ip], #4 ) - load_tls r2, r4, r5 + load_tls r1, r4, r5 #ifdef CONFIG_CPU_USE_DOMAINS ldr r6, [r1, #TI_CPU_DOMAIN] #endif - switch_tls r1, r4, r5, r3, r7 + switch_tls r0, r4, r5, r3, r7 #ifdef CONFIG_CPU_USE_DOMAINS mcr p15, 0, r6, c3, c0, 0 @ Set domain register #endif ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Gilles Chanteperdrix : cobalt/trace: fix compilation error
Module: xenomai-gch Branch: for-forge Commit: 61a9234133669ac7ea27b631667e6c5f3dd83c14 URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=61a9234133669ac7ea27b631667e6c5f3dd83c14 Author: Gilles Chanteperdrix gilles.chanteperd...@xenomai.org Date: Fri Apr 25 21:34:05 2014 +0200 cobalt/trace: fix compilation error --- kernel/cobalt/thread.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/cobalt/thread.c b/kernel/cobalt/thread.c index 1bff44d..c2abd7c 100644 --- a/kernel/cobalt/thread.c +++ b/kernel/cobalt/thread.c @@ -1625,7 +1625,7 @@ EXPORT_SYMBOL_GPL(xnthread_migrate); void xnthread_migrate_passive(struct xnthread *thread, struct xnsched *sched) { /* nklocked, IRQs off */ - trace_cobalt_thread_migrate_passive(thread, cpu); + trace_cobalt_thread_migrate_passive(thread, xnsched_cpu(sched)); if (thread-sched == sched) return; ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Gilles Chanteperdrix : cobalt/shadow: do not use xnsched_current_thread()
Module: xenomai-gch Branch: for-forge Commit: a4b8e90560b52abe29962fd3f10ed768d3b24a54 URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=a4b8e90560b52abe29962fd3f10ed768d3b24a54 Author: Gilles Chanteperdrix gilles.chanteperd...@xenomai.org Date: Fri Apr 25 21:32:33 2014 +0200 cobalt/shadow: do not use xnsched_current_thread() for the implementation of per personality private data. --- kernel/cobalt/shadow.c | 40 +--- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/kernel/cobalt/shadow.c b/kernel/cobalt/shadow.c index 04652bf..c107dc4 100644 --- a/kernel/cobalt/shadow.c +++ b/kernel/cobalt/shadow.c @@ -82,6 +82,7 @@ static void *mayday_page; static struct xnsynch yield_sync; static struct hlist_head *process_hash; +static DEFINE_XNLOCK(process_hash_lock); #define PROCESS_HASH_SIZE 13 static int enter_personality(struct xnshadow_process *process, @@ -114,8 +115,13 @@ static unsigned __attribute__((pure)) process_hash_crunch(struct mm_struct *mm) static struct xnshadow_process *__process_hash_search(struct mm_struct *mm) { - unsigned bucket = process_hash_crunch(mm); struct xnshadow_process *p; + unsigned bucket; + + if (mm == NULL) + return NULL; + + bucket = process_hash_crunch(mm); atomic_only(); @@ -131,9 +137,9 @@ static struct xnshadow_process *process_hash_search(struct mm_struct *mm) struct xnshadow_process *process; spl_t s; - xnlock_get_irqsave(nklock, s); + xnlock_get_irqsave(process_hash_lock, s); process = __process_hash_search(mm); - xnlock_put_irqrestore(nklock, s); + xnlock_put_irqrestore(process_hash_lock, s); return process; } @@ -145,7 +151,7 @@ static int process_hash_enter(struct xnshadow_process *p) int err; spl_t s; - xnlock_get_irqsave(nklock, s); + xnlock_get_irqsave(process_hash_lock, s); if (__process_hash_search(mm)) { err = -EBUSY; goto out; @@ -155,7 +161,7 @@ static int process_hash_enter(struct xnshadow_process *p) hlist_add_head(p-hlink, process_hash[bucket]); err = 0; out: - xnlock_put_irqrestore(nklock, s); + xnlock_put_irqrestore(process_hash_lock, s); return err; } @@ -163,10 +169,10 @@ static void process_hash_remove(struct xnshadow_process *p) { spl_t s; - xnlock_get_irqsave(nklock, s); + xnlock_get_irqsave(process_hash_lock, s); if (p-mm) hlist_del(p-hlink); - xnlock_put_irqrestore(nklock, s); + xnlock_put_irqrestore(process_hash_lock, s); } /* nklock locked, irqs off. */ @@ -175,7 +181,7 @@ static void *private_lookup(unsigned int muxid) struct xnshadow_process *p = xnshadow_current_process(); if (p == NULL) { - p = __process_hash_search(current-mm); + p = process_hash_search(current-mm); if (p == NULL) return NULL; } @@ -1327,10 +1333,10 @@ static int xnshadow_sys_bind(unsigned int magic, return -ESRCH; do_bind: - xnlock_get_irqsave(nklock, s); + xnlock_get_irqsave(process_hash_lock, s); process = __process_hash_search(current-mm); priv = private_lookup(muxid); - xnlock_put_irqrestore(nklock, s); + xnlock_put_irqrestore(process_hash_lock, s); /* * Protect from the same process binding to the same interface @@ -1753,19 +1759,7 @@ EXPORT_SYMBOL_GPL(xnshadow_unregister_personality); */ void *xnshadow_get_context(unsigned int muxid) { - struct xnthread *curr; - void *context = NULL; - spl_t s; - - xnlock_get_irqsave(nklock, s); - - curr = xnsched_current_thread(); - if (likely(xnthread_test_state(curr, XNROOT|XNUSER))) - context = private_lookup(muxid); - - xnlock_put_irqrestore(nklock, s); - - return context; + return private_lookup(muxid); } EXPORT_SYMBOL_GPL(xnshadow_get_context); ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Gilles Chanteperdrix : cobalt/shadow: do not use xnsched_current_thread()
Module: xenomai-gch Branch: for-forge Commit: a622d84783ee8d4d536a316e950008cd51c373fc URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=a622d84783ee8d4d536a316e950008cd51c373fc Author: Gilles Chanteperdrix gilles.chanteperd...@xenomai.org Date: Fri Apr 25 21:32:33 2014 +0200 cobalt/shadow: do not use xnsched_current_thread() for the implementation of per personality private data. --- kernel/cobalt/shadow.c | 40 +--- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/kernel/cobalt/shadow.c b/kernel/cobalt/shadow.c index 04652bf..c107dc4 100644 --- a/kernel/cobalt/shadow.c +++ b/kernel/cobalt/shadow.c @@ -82,6 +82,7 @@ static void *mayday_page; static struct xnsynch yield_sync; static struct hlist_head *process_hash; +static DEFINE_XNLOCK(process_hash_lock); #define PROCESS_HASH_SIZE 13 static int enter_personality(struct xnshadow_process *process, @@ -114,8 +115,13 @@ static unsigned __attribute__((pure)) process_hash_crunch(struct mm_struct *mm) static struct xnshadow_process *__process_hash_search(struct mm_struct *mm) { - unsigned bucket = process_hash_crunch(mm); struct xnshadow_process *p; + unsigned bucket; + + if (mm == NULL) + return NULL; + + bucket = process_hash_crunch(mm); atomic_only(); @@ -131,9 +137,9 @@ static struct xnshadow_process *process_hash_search(struct mm_struct *mm) struct xnshadow_process *process; spl_t s; - xnlock_get_irqsave(nklock, s); + xnlock_get_irqsave(process_hash_lock, s); process = __process_hash_search(mm); - xnlock_put_irqrestore(nklock, s); + xnlock_put_irqrestore(process_hash_lock, s); return process; } @@ -145,7 +151,7 @@ static int process_hash_enter(struct xnshadow_process *p) int err; spl_t s; - xnlock_get_irqsave(nklock, s); + xnlock_get_irqsave(process_hash_lock, s); if (__process_hash_search(mm)) { err = -EBUSY; goto out; @@ -155,7 +161,7 @@ static int process_hash_enter(struct xnshadow_process *p) hlist_add_head(p-hlink, process_hash[bucket]); err = 0; out: - xnlock_put_irqrestore(nklock, s); + xnlock_put_irqrestore(process_hash_lock, s); return err; } @@ -163,10 +169,10 @@ static void process_hash_remove(struct xnshadow_process *p) { spl_t s; - xnlock_get_irqsave(nklock, s); + xnlock_get_irqsave(process_hash_lock, s); if (p-mm) hlist_del(p-hlink); - xnlock_put_irqrestore(nklock, s); + xnlock_put_irqrestore(process_hash_lock, s); } /* nklock locked, irqs off. */ @@ -175,7 +181,7 @@ static void *private_lookup(unsigned int muxid) struct xnshadow_process *p = xnshadow_current_process(); if (p == NULL) { - p = __process_hash_search(current-mm); + p = process_hash_search(current-mm); if (p == NULL) return NULL; } @@ -1327,10 +1333,10 @@ static int xnshadow_sys_bind(unsigned int magic, return -ESRCH; do_bind: - xnlock_get_irqsave(nklock, s); + xnlock_get_irqsave(process_hash_lock, s); process = __process_hash_search(current-mm); priv = private_lookup(muxid); - xnlock_put_irqrestore(nklock, s); + xnlock_put_irqrestore(process_hash_lock, s); /* * Protect from the same process binding to the same interface @@ -1753,19 +1759,7 @@ EXPORT_SYMBOL_GPL(xnshadow_unregister_personality); */ void *xnshadow_get_context(unsigned int muxid) { - struct xnthread *curr; - void *context = NULL; - spl_t s; - - xnlock_get_irqsave(nklock, s); - - curr = xnsched_current_thread(); - if (likely(xnthread_test_state(curr, XNROOT|XNUSER))) - context = private_lookup(muxid); - - xnlock_put_irqrestore(nklock, s); - - return context; + return private_lookup(muxid); } EXPORT_SYMBOL_GPL(xnshadow_get_context); ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Gilles Chanteperdrix : cobalt/arm: fix context switch for 3.11+
Module: xenomai-gch Branch: for-forge Commit: 6ca967023d0f36941d1648777dbf03d819c8fbbb URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=6ca967023d0f36941d1648777dbf03d819c8fbbb Author: Gilles Chanteperdrix gilles.chanteperd...@xenomai.org Date: Fri Apr 25 21:29:26 2014 +0200 cobalt/arm: fix context switch for 3.11+ --- kernel/cobalt/arch/arm/switch.S |4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/cobalt/arch/arm/switch.S b/kernel/cobalt/arch/arm/switch.S index 5a4ecbc..6258a15 100644 --- a/kernel/cobalt/arch/arm/switch.S +++ b/kernel/cobalt/arch/arm/switch.S @@ -141,11 +141,11 @@ ENTRY(__asm_thread_switch) THUMB(stmia ip!, {r4 - sl, fp} )@ Store most regs on stack THUMB(str sp, [ip], #4 ) THUMB(str lr, [ip], #4 ) - load_tls r2, r4, r5 + load_tls r1, r4, r5 #ifdef CONFIG_CPU_USE_DOMAINS ldr r6, [r1, #TI_CPU_DOMAIN] #endif - switch_tls r1, r4, r5, r3, r7 + switch_tls r0, r4, r5, r3, r7 #ifdef CONFIG_CPU_USE_DOMAINS mcr p15, 0, r6, c3, c0, 0 @ Set domain register #endif ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Gilles Chanteperdrix : cobalt/trace: fix compilation error
Module: xenomai-gch Branch: for-forge Commit: 6992d9b1e5a7bf176ded16c8e6f99472e1d424b6 URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=6992d9b1e5a7bf176ded16c8e6f99472e1d424b6 Author: Gilles Chanteperdrix gilles.chanteperd...@xenomai.org Date: Fri Apr 25 21:34:05 2014 +0200 cobalt/trace: fix compilation error --- kernel/cobalt/thread.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/cobalt/thread.c b/kernel/cobalt/thread.c index 1bff44d..c2abd7c 100644 --- a/kernel/cobalt/thread.c +++ b/kernel/cobalt/thread.c @@ -1625,7 +1625,7 @@ EXPORT_SYMBOL_GPL(xnthread_migrate); void xnthread_migrate_passive(struct xnthread *thread, struct xnsched *sched) { /* nklocked, IRQs off */ - trace_cobalt_thread_migrate_passive(thread, cpu); + trace_cobalt_thread_migrate_passive(thread, xnsched_cpu(sched)); if (thread-sched == sched) return; ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Gilles Chanteperdrix : cobalt/shadow: do not use xnsched_current_thread()
Module: xenomai-gch Branch: for-forge Commit: 4e337713391eefe63ccd204b9ce2f564e29d4de6 URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=4e337713391eefe63ccd204b9ce2f564e29d4de6 Author: Gilles Chanteperdrix gilles.chanteperd...@xenomai.org Date: Fri Apr 25 21:32:33 2014 +0200 cobalt/shadow: do not use xnsched_current_thread() for the implementation of per personality private data. --- kernel/cobalt/shadow.c | 42 +++--- 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/kernel/cobalt/shadow.c b/kernel/cobalt/shadow.c index 04652bf..d5052b7 100644 --- a/kernel/cobalt/shadow.c +++ b/kernel/cobalt/shadow.c @@ -82,6 +82,7 @@ static void *mayday_page; static struct xnsynch yield_sync; static struct hlist_head *process_hash; +static DEFINE_XNLOCK(process_hash_lock); #define PROCESS_HASH_SIZE 13 static int enter_personality(struct xnshadow_process *process, @@ -116,7 +117,7 @@ static struct xnshadow_process *__process_hash_search(struct mm_struct *mm) { unsigned bucket = process_hash_crunch(mm); struct xnshadow_process *p; - + atomic_only(); hlist_for_each_entry(p, process_hash[bucket], hlink) @@ -131,9 +132,9 @@ static struct xnshadow_process *process_hash_search(struct mm_struct *mm) struct xnshadow_process *process; spl_t s; - xnlock_get_irqsave(nklock, s); + xnlock_get_irqsave(process_hash_lock, s); process = __process_hash_search(mm); - xnlock_put_irqrestore(nklock, s); + xnlock_put_irqrestore(process_hash_lock, s); return process; } @@ -145,7 +146,7 @@ static int process_hash_enter(struct xnshadow_process *p) int err; spl_t s; - xnlock_get_irqsave(nklock, s); + xnlock_get_irqsave(process_hash_lock, s); if (__process_hash_search(mm)) { err = -EBUSY; goto out; @@ -155,7 +156,7 @@ static int process_hash_enter(struct xnshadow_process *p) hlist_add_head(p-hlink, process_hash[bucket]); err = 0; out: - xnlock_put_irqrestore(nklock, s); + xnlock_put_irqrestore(process_hash_lock, s); return err; } @@ -163,10 +164,10 @@ static void process_hash_remove(struct xnshadow_process *p) { spl_t s; - xnlock_get_irqsave(nklock, s); + xnlock_get_irqsave(process_hash_lock, s); if (p-mm) hlist_del(p-hlink); - xnlock_put_irqrestore(nklock, s); + xnlock_put_irqrestore(process_hash_lock, s); } /* nklock locked, irqs off. */ @@ -174,11 +175,10 @@ static void *private_lookup(unsigned int muxid) { struct xnshadow_process *p = xnshadow_current_process(); - if (p == NULL) { - p = __process_hash_search(current-mm); - if (p == NULL) - return NULL; - } + if (p == NULL current-mm) + p = process_hash_search(current-mm); + if (p == NULL) + return NULL; return p-priv[muxid]; } @@ -1327,10 +1327,10 @@ static int xnshadow_sys_bind(unsigned int magic, return -ESRCH; do_bind: - xnlock_get_irqsave(nklock, s); + xnlock_get_irqsave(process_hash_lock, s); process = __process_hash_search(current-mm); priv = private_lookup(muxid); - xnlock_put_irqrestore(nklock, s); + xnlock_put_irqrestore(process_hash_lock, s); /* * Protect from the same process binding to the same interface @@ -1753,19 +1753,7 @@ EXPORT_SYMBOL_GPL(xnshadow_unregister_personality); */ void *xnshadow_get_context(unsigned int muxid) { - struct xnthread *curr; - void *context = NULL; - spl_t s; - - xnlock_get_irqsave(nklock, s); - - curr = xnsched_current_thread(); - if (likely(xnthread_test_state(curr, XNROOT|XNUSER))) - context = private_lookup(muxid); - - xnlock_put_irqrestore(nklock, s); - - return context; + return private_lookup(muxid); } EXPORT_SYMBOL_GPL(xnshadow_get_context); ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Gilles Chanteperdrix : cobalt/trace: fix compilation error
Module: xenomai-gch Branch: for-forge Commit: 2e0a5d0f96d46dec141040a65a83713c40e9dfb8 URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=2e0a5d0f96d46dec141040a65a83713c40e9dfb8 Author: Gilles Chanteperdrix gilles.chanteperd...@xenomai.org Date: Fri Apr 25 21:34:05 2014 +0200 cobalt/trace: fix compilation error --- kernel/cobalt/thread.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/cobalt/thread.c b/kernel/cobalt/thread.c index 1bff44d..c2abd7c 100644 --- a/kernel/cobalt/thread.c +++ b/kernel/cobalt/thread.c @@ -1625,7 +1625,7 @@ EXPORT_SYMBOL_GPL(xnthread_migrate); void xnthread_migrate_passive(struct xnthread *thread, struct xnsched *sched) { /* nklocked, IRQs off */ - trace_cobalt_thread_migrate_passive(thread, cpu); + trace_cobalt_thread_migrate_passive(thread, xnsched_cpu(sched)); if (thread-sched == sched) return; ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git