All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.