* [Xenomai-core] [PATCH 3/3] native: Silent migration before self-deletion
@ 2009-02-26 14:16 Jan Kiszka
0 siblings, 0 replies; only message in thread
From: Jan Kiszka @ 2009-02-26 14:16 UTC (permalink / raw)
To: xenomai-core
Silently migrate to Linux domain before starting a task self-deletion so
that we don't raise SIGXCPU during tear-down if T_WARNSW is set.
Signed-off-by: Jan Kiszka <jan.kiszka@domain.hid>
---
src/skins/native/task.c | 15 ++++++++++++---
1 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/src/skins/native/task.c b/src/skins/native/task.c
index 24da8ef..f590b79 100644
--- a/src/skins/native/task.c
+++ b/src/skins/native/task.c
@@ -121,6 +121,9 @@ static void *rt_task_trampoline(void *cookie)
if (!err)
entry(cookie);
+ /* Silently migrate to avoid raising SIGXCPU on regular exit. */
+ XENOMAI_SYSCALL1(__xn_sys_migrate, XENOMAI_LINUX_DOMAIN);
+
fail:
pthread_exit((void *)err);
@@ -265,12 +268,18 @@ int rt_task_delete(RT_TASK *task)
{
int err;
- if (task && task->opaque2) {
+ if (!task || task->opaque == rt_task_self()->opaque) {
+ /* Silently migrate to avoid raising SIGXCPU. */
+ XENOMAI_SYSCALL1(__xn_sys_migrate, XENOMAI_LINUX_DOMAIN);
+
+ pthread_exit(NULL);
+ }
+
+ if (task->opaque2) {
err = pthread_cancel((pthread_t)task->opaque2);
if (err)
return -err;
- } else if (!task)
- pthread_exit(NULL);
+ }
err = XENOMAI_SKINCALL1(__native_muxid, __native_task_delete, task);
if (err == -ESRCH)
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2009-02-26 14:16 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-02-26 14:16 [Xenomai-core] [PATCH 3/3] native: Silent migration before self-deletion Jan Kiszka
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.