On Thu, 2011-09-01 at 22:27 +0200, Philippe Gerum wrote:
> On Thu, 2011-09-01 at 17:25 +0200, Sambasiva Rao Manchili wrote:
> > Hi,
> > It is reduced piece which explains the problem.
> > If it is much more then I will see what I can do.
>
> User-space needs this, or something alike (not tested, not even
> compiled actually):
Keep in mind that the following hack bypasses the safe lock mechanism
totally, a complete and sane fix would need a bit more thought, and
maybe an ABI breakage. Normally we should not throw pthread_cancel() at
a task denying deletion from within a taskSafe() section, unless we pair
this with proper cancellation deferral.
>
> diff --git a/src/skins/vxworks/taskLib.c b/src/skins/vxworks/taskLib.c
> index f751788..70f33aa 100644
> --- a/src/skins/vxworks/taskLib.c
> +++ b/src/skins/vxworks/taskLib.c
> @@ -267,10 +267,34 @@ STATUS taskDeleteForce(TASK_ID task_id)
>
> STATUS taskDelete(TASK_ID task_id)
> {
> + TASK_DESC desc;
> + pthread_t tid;
> int err;
>
> - err =
> - XENOMAI_SKINCALL1(__vxworks_muxid, __vxworks_task_delete, task_id);
> + err = XENOMAI_SKINCALL2(__vxworks_muxid,
> + __vxworks_taskinfo_get, task_id, &desc);
> + if (err) {
> + errno = abs(err);
> + return ERROR;
> + }
> +
> + tid = (pthread_t)desc->td_opaque;
> + if (tid == pthread_self()) {
> + /* Silently migrate to avoid raising SIGXCPU. */
> + XENOMAI_SYSCALL1(__xn_sys_migrate, XENOMAI_LINUX_DOMAIN);
> + pthread_exit(NULL);
> + }
> +
> + if (tid) {
> + err = pthread_cancel(tid);
> + if (err)
> + return -err;
> + }
> +
> + err = XENOMAI_SKINCALL1(__vxworks_muxid, __vxworks_task_delete,
> task_id);
> + if (err == S_objLib_OBJ_ID_ERROR)
> + return OK; /* Used to be valid, but has exited. */
> +
> if (err) {
> errno = abs(err);
> return ERROR;
>
> > Samba.
> >
> > -----Original Message-----
> > From: Gilles Chanteperdrix [mailto:[email protected]]
> > Sent: Thursday, 01. September, 2011 17:08
> > To: Sambasiva Rao Manchili
> > Cc: [email protected]
> > Subject: Re: [Xenomai-help] taskDelete(tid) on VxWorks Skin ?
> >
> > On 09/01/2011 04:51 PM, Sambasiva Rao Manchili wrote:
> > > Hi,
> > > The reason that I have not given this piece of code was because it is not
> > > written by me oflate but was code that exists since several years which
> > > is running on VxWorks on different versions.
> > > I just ported this with very very minimal effort to Linux over Xenomai.
> > >
> >
> > I do not ask you to send your code, I ask you to send a reduced,
> > self-contained test case, which demonstrates the issue you have, for
> > reasons explained on the page I directed you to.
> >
> > --
> > Gilles.
> >
> >
> > This email and any attachment may contain confidential information which is
> > intended for use only by the addressee(s) named above. If you received this
> > email by mistake, please notify the sender immediately, and delete the
> > email from your system. You are prohibited from copying, disseminating or
> > otherwise using the email or any attachment.
> >
> >
> > _______________________________________________
> > Xenomai-help mailing list
> > [email protected]
> > https://mail.gna.org/listinfo/xenomai-help
>
--
Philippe.
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help