Jan Kiszka wrote:
> Hi,
> 
> no, this is not the fix for the issue I described earlier. This just
> improves the behaviour of rt_task_delete in case the target is blocking
> at a cancellation point (tested with standard sem_wait). With the
> current version, rt_task_deletes the rt-shadow and just wakes up the
> linux pthread even if the target is cancellable at that moment. With the
> reordering, this is fixed and the target is actually terminated. No
> major issue, though.
> 
> Jan
> 
> 
> ------------------------------------------------------------------------
> 
> Index: src/skins/native/task.c
> ===================================================================
> --- src/skins/native/task.c   (revision 243)
> +++ src/skins/native/task.c   (working copy)
> @@ -203,12 +203,18 @@
>  int rt_task_delete (RT_TASK *task)
>  
>  {
> -    int err = XENOMAI_SKINCALL1(__native_muxid,
> -                             __native_task_delete,
> -                             task);
> -    if (!err)
> -     pthread_cancel((pthread_t)task->opaque2);
> +    int err;
>  
> +    err = pthread_cancel((pthread_t)task->opaque2)
> +    if (err)
> +        return -err;
> +
> +    err = XENOMAI_SKINCALL1(__native_muxid,
> +                         __native_task_delete,
> +                         task);
> +    if (err == -ESRCH)
> +     return 0;
> +
>      return err;
>  }
>  

Oops, fix for my patch:

--- ../src/skins/native/task.c  (Revision 251)
+++ ../src/skins/native/task.c  (Arbeitskopie)
@@ -206,7 +206,7 @@
 {
     int err;

-    err = pthread_cancel((pthread_t)task->opaque2)
+    err = pthread_cancel((pthread_t)task->opaque2);
     if (err)
         return -err;


I reorganised the code without a compiler run before posting.

Jan

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to