From: Philippe Gerum <rpm@xenomai.org>
To: Petr Cervenka <grugh@domain.hid>
Cc: xenomai@xenomai.org
Subject: Re: [Xenomai-help] rt_queue_delete returns -EBUSY
Date: Mon, 25 Aug 2008 18:51:47 +0200 [thread overview]
Message-ID: <48B2E323.1060600@domain.hid> (raw)
In-Reply-To: <200808251743.26012@domain.hid>
Petr Cervenka wrote:
> Hello,
> I tried xenomai 2.4.5, hoping that my problems with real-time queue will disappear. But there is another (perhaps very trivial) error.
> Function call rt_queue_delete always returns -EBUSY (at least for me). You don't have to bind it from another task or use it at all.
> I hope that I have used it in the right way.
Actually, if your code still creates and deletes queues dynamically during the
normal operations, this is clearly not the best approach. Those calls are VERY
costly, and very much prone to unbounded latency.
I.e. They switch to secondary mode, allocate/deallocate ranges of kernel memory,
create/delete internal Xenomai heap objects, and eventually map/unmap those
memory ranges to/from your user-space process.
> Petr Cervenka
>
> Simple example:
>
> #include <stdlib.h>
>
> #include <sys/mman.h> // mlockall
> #include <native/task.h>
> #include <native/queue.h>
>
> RT_TASK main_task;
> RT_QUEUE queue;
>
> int main(int argc, char** argv) {
> int res;
>
> mlockall(MCL_CURRENT | MCL_FUTURE);
>
> res = rt_task_shadow(&main_task, "MAIN_TASK", 5, T_FPU);
> if (res < 0) {
> fprintf(stderr, "rt_task_shadow() failed: %d (%s)\n", res, strerror(-res));
> goto cleanup_end;
> }
>
> res = rt_queue_create(&queue, "QUEUE", 1024, Q_UNLIMITED, Q_FIFO | Q_SHARED);
> if (res < 0) {
> fprintf(stderr, "rt_queue_create() failed: %d (%s)\n", res, strerror(-res));
> goto cleanup_task;
> }
>
> cleanup_queue:
> res = rt_queue_delete(&queue);
> if (res < 0) {
> fprintf(stderr, "rt_queue_delete() failed: %d (%s)\n", res, strerror(-res));
> }
> cleanup_task:
> cleanup_end:
> return res;
> }
>
>
> _______________________________________________
> Xenomai-help mailing list
> Xenomai-help@domain.hid
> https://mail.gna.org/listinfo/xenomai-help
>
--
Philippe.
next prev parent reply other threads:[~2008-08-25 16:51 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-25 15:43 [Xenomai-help] rt_queue_delete returns -EBUSY Petr Cervenka
2008-08-25 16:24 ` Philippe Gerum
2008-09-04 16:04 ` Petr Cervenka
2008-09-04 21:46 ` Mark Saiia
2008-09-05 8:46 ` Gilles Chanteperdrix
2008-09-08 10:34 ` Philippe Gerum
2008-09-15 13:04 ` Petr Cervenka
2008-09-15 17:29 ` Philippe Gerum
2008-09-20 10:19 ` Paul
2008-09-20 13:54 ` Philippe Gerum
2008-09-21 9:09 ` Gilles Chanteperdrix
2008-08-25 16:51 ` Philippe Gerum [this message]
[not found] ` <200808260929.2847@domain.hid>
[not found] ` <200808260935.5720@domain.hid>
2008-08-26 8:07 ` Petr Cervenka
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=48B2E323.1060600@domain.hid \
--to=rpm@xenomai.org \
--cc=grugh@domain.hid \
--cc=xenomai@xenomai.org \
/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.