From: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
To: alex alex <duch.alexandre@gmail.com>
Cc: Xenomai <xenomai@xenomai.org>
Subject: Re: [Xenomai] [Posix] I/O multiplexing with select
Date: Wed, 08 May 2013 16:19:56 +0200 [thread overview]
Message-ID: <518A5F0C.50403@xenomai.org> (raw)
In-Reply-To: <CAPpP=rOMJi4u7sm9+a79aJ2GhhtJY7B5QD0+tVxsN7KoFMqxCw@mail.gmail.com>
On 05/08/2013 03:53 PM, alex alex wrote:
> xenomai = 2.6.2.1
> linux kernel = 3.5.7
> arch = x86
>
> Hello everyone,
>
> I'm working on a program that uses both a TCP with linux socket and a
> real-time communication module based on rtnet using rtdm.
> My requirement is to use the select function with this 2 types of
> communication.
> To make this works, I created a wrap on select that is calling a function ("
> wrap_select") to create two threads in detached mode: the first for linux
> descriptors and the second for rtdm descriptors.
> After the creation of threads, the "wrap_select" function that waits
> for a semaphore.
> This semaphore is posted by the thread which select is released.
> Then the function "wrap_select" destroy the two functions with
> pthread_cancel.
This defeats the purpose of having a select service which works in
primary mode: your select service switches to secondary mode by calling
pthread_create. Instead of doing this, I would advise using a message
queue, and select from it from the xenomai thread. Besides, creating
threads every time is a bit bad for latencies.
>
> This mechanisme works fine but after a certain number of calls, creating
> thread with pthread_create fails with the following error: errno = EAGAIN,
> Insufficient memory exists in the system heap to create a new thread,
> Increase.
> It seems there was a limit to the thread creation...
>
> 1 - Have you any idea about how to work around this problem?
You do not want to work around the problem, you want to fix it. There
is probably some bit missing somewhere to get the thread control block
destroyed when a detached thread dies.
>
> 2 - A solution would be to create two threads to handle rtdm select and
> linux without destroying them each time.
> But in this case I have to report to the select which thread is still blocking
> its release and I dont know how I can do that.
>
> 3- Maybe there is a better solution or maybe this problem has already been
> encountered and solved by one of you?
Yes, I have already done that, and tried and describe it in the
following text:
http://www.xenomai.org/index.php/Porting_POSIX_applications_to_Xenomai#I.2FO_multiplexing_with_select
The posix binding for Xenomai real-time pipes has been created in the
mean-time: it is the xddp sockets.
--
Gilles.
next prev parent reply other threads:[~2013-05-08 14:19 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-08 13:53 [Xenomai] [Posix] I/O multiplexing with select alex alex
2013-05-08 14:19 ` Gilles Chanteperdrix [this message]
2013-05-08 20:34 ` alex alex
2013-05-08 20:49 ` Gilles Chanteperdrix
2013-05-08 21:30 ` alex alex
2013-05-09 9:30 ` alex alex
2013-05-09 11:45 ` Gilles Chanteperdrix
2013-05-09 13:13 ` alex alex
2013-05-09 13:26 ` Gilles Chanteperdrix
2013-05-09 14:09 ` alex alex
2013-05-09 14:14 ` Gilles Chanteperdrix
[not found] ` <CAPpP=rMLPeRAVCpdKQkLVD29pFUj8zPL5JRmTbrJkKEetJJbew@mail.gmail.com>
2013-05-09 14:51 ` alex alex
2013-05-09 14:54 ` Gilles Chanteperdrix
[not found] ` <CAPpP=rNFf4qH0JPpR57i5qp1tmHbLb2k8X9qYjn+6dmZb_ckvA@mail.gmail.com>
[not found] ` <518BBFDC.7060102@xenomai.org>
2013-05-09 15:35 ` alex alex
2013-05-09 15:37 ` Gilles Chanteperdrix
2013-05-09 15:46 ` alex alex
2013-05-09 15:49 ` Gilles Chanteperdrix
[not found] ` <CAPpP=rPFd3h_aTBKoL6bUwAqbLT5yDp0G057h1PssUo8MVKxDg@mail.gmail.com>
[not found] ` <518BCB6B.5070908@xenomai.org>
[not found] ` <CAPpP=rNs37xZRsJRd3JvS4Pf16jhRWmxsS+Y6gVR=R9RQ6SWjQ@mail.gmail.com>
[not found] ` <518BCD6C.8060501@xenomai.org>
[not found] ` <CAPpP=rODvDuVjP+CfE=6jYTRP5nD5smumnAV3mj51YQm8mzw0Q@mail.gmail.com>
2013-05-09 16:44 ` alex alex
2013-05-09 16:45 ` Gilles Chanteperdrix
2013-05-09 16:56 ` alex alex
2013-05-09 17:15 ` Gilles Chanteperdrix
2013-05-09 17:52 ` Gilles Chanteperdrix
2013-05-11 13:11 ` alex alex
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=518A5F0C.50403@xenomai.org \
--to=gilles.chanteperdrix@xenomai.org \
--cc=duch.alexandre@gmail.com \
--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.