From: Philippe Gerum <rpm@xenomai.org>
To: Drew <pythondrew@gmail.com>
Cc: "Xenomai@xenomai.org" <Xenomai@xenomai.org>
Subject: Re: [Xenomai] gdb / threads on beaglebone black
Date: Wed, 28 May 2014 16:24:16 +0200 [thread overview]
Message-ID: <5385F190.7050303@xenomai.org> (raw)
In-Reply-To: <CAO0fa7YGSCmPducStbh7sM=HJtPYq86iO1e2ZAaKyjUjzPMEUA@mail.gmail.com>
On 05/28/2014 04:08 PM, Drew wrote:
> Yes, my guess was correct.
> The do - while loop in trampoline is exiting with error -38 (-ENOSYS?)
> If I change line 110 of skins/native/task.c:
>
> - while(err == -EINTR)
> + while(err == -EINTR || err == -ENOSYS)
>
> then I'm able to single-step in gdb. :-)
>
> Is my change a hack, or is it the correct thing to do?
No Xenomai call should ever return ENOSYS. Something is definitely wrong
with the current setup.
> It looks like rt_task_trampoline is only expecting EINTR to occur. Is
> some other bug causing ENOSYS?
This means that the 'barrier' syscall did not get to Xenomai core, but
was rejected as undefined.
Could any of the hints mentioned here apply in your case?
http://www.xenomai.org/documentation/xenomai-2.6/html/TROUBLESHOOTING/#_any_xenomai_service_fails_with_code_38_enosys
Or are there a few other valid errors
> that may be returned while waiting on the barrier? (the comment above
> the loop says "to process Linux signals" but the code only checks for
> one thing.) Should rt_task_trampoline somehow warn a user if the
> do-while encounters an error it doesn't expect? (or does it already,
> through another debug mechanism I'm not using?)
The loop only cares for non-restartable syscalls, which receive EINTR
when interrupted by a signal handler.
>
> As an aside, another question is why rt_task_trampoline at all? Why fire
> up the new thread when it doesn't yet know what it will be executing?
> I'm guessing it is for speed, so that when rt_task_start actually does
> execute, it will execute immediately...
>
Correct, rt_task_create() does all the resource reservation, all the
lengthy stuff. When successful, we know that we'll be able to start the
task code upon rt_task_start(), provided the task descriptor is valid.
rt_task_start() is only about unleashing a ready-to-run thread context.
--
Philippe.
next prev parent reply other threads:[~2014-05-28 14:24 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-26 1:49 [Xenomai] gdb / threads on beaglebone black Drew
2014-05-26 7:09 ` Philippe Gerum
[not found] ` <CAO0fa7YQ0TxiAhbmFmt+41o+rugoLXKjXxtHygpthNOiu8gd9w@mail.gmail.com>
2014-05-26 13:23 ` Philippe Gerum
2014-05-27 12:05 ` Drew
2014-05-27 22:21 ` Drew
2014-05-28 14:08 ` Drew
2014-05-28 14:24 ` Philippe Gerum [this message]
2014-05-28 14:45 ` Michael Haberler
2014-05-28 17:54 ` Gilles Chanteperdrix
2014-05-28 19:19 ` Drew
2014-05-28 19:28 ` Philippe Gerum
2014-05-28 20:06 ` Gilles Chanteperdrix
2014-05-28 20:24 ` Gilles Chanteperdrix
2014-05-28 20:31 ` Michael Haberler
2014-05-28 20:36 ` Philippe Gerum
2014-05-28 21:01 ` Drew
2014-05-28 21:08 ` Gilles Chanteperdrix
2014-05-28 22:27 ` Gilles Chanteperdrix
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5385F190.7050303@xenomai.org \
--to=rpm@xenomai.org \
--cc=Xenomai@xenomai.org \
--cc=pythondrew@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.