From: Philippe Gerum <rpm@xenomai.org>
To: Filip Van Rillaer <Filip.VanRillaer@domain.hid>
Cc: xenomai@xenomai.org
Subject: Re: [Xenomai-help] uClinux write to pipe returning -ENOMEM
Date: Wed, 20 Aug 2008 12:16:49 +0200 [thread overview]
Message-ID: <48ABEF11.6060307@domain.hid> (raw)
In-Reply-To: <406CC9939904F143B9D42CEEA3E56E56431FCD@oab1mx1.oneaccess.intra>
Filip Van Rillaer wrote:
> Hello,
>
> My current test-setup is as follows:
> 1) user-program reads test-samples from a file in non-RT and does a blocking write to the Xenomai-pipe
> 2) a RT-program that implements a V34 modem is listening to the Xenomai-pipe and will send the data over a telephone line.
> ---> so it is the intention that at startup the Xenomai-pipe buffer gets filled up and from than in stationary state the data should stream at the speed of the V34 modem connection.
>
A typical work-around to emulate blocking Linux -> Xenomai pipe I/O would be:
RT_SEM bsync;
int pipe_i_handler(RT_PIPE *pipe, int event)
{
if (event == P_EVENT_INPUT && buffer_filled_up_p)
/* Hold userland until buffer drains. */
rt_sem_p(&bsync, TM_INFINITE);
...
}
void drain_buffer(void)
{
send_v34();
rt_sem_v(&bsync);
}
void init_kernel_code(void)
{
rt_sem_create(&bsync, "bsync", 0, S_PULSE);
}
===
void userland(void)
{
/* Make this regular Linux thread a non-RT Xenomai task, so it may block on
Xenomai synchronization objects. */
rt_task_shadow(NULL, __FUNCTION__, 0, 0);
for (;;) {
/* This may hang in pipe_i_handler() due to flow control. */
write(pipefd, buf, len);
...
}
}
--
Philippe.
next prev parent reply other threads:[~2008-08-20 10:16 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-19 16:21 [Xenomai-help] uClinux write to pipe returning -ENOMEM Filip Van Rillaer
2008-08-19 16:31 ` Philippe Gerum
[not found] ` <406CC9939904F143B9D42CEEA3E56E56431FCD@oab1mx1.oneaccess.intra>
2008-08-20 9:47 ` Philippe Gerum
2008-08-20 10:16 ` Philippe Gerum [this message]
2008-08-20 15:04 ` Filip Van Rillaer
2008-08-20 17:00 ` Philippe Gerum
2008-08-20 17:06 ` Philippe Gerum
2008-08-20 19:08 ` Philippe Gerum
2008-08-21 11:08 ` Filip Van Rillaer
2008-08-22 18:20 ` Philippe Gerum
2008-08-25 6:30 ` Filip Van Rillaer
2008-08-22 18:21 ` Philippe Gerum
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=48ABEF11.6060307@domain.hid \
--to=rpm@xenomai.org \
--cc=Filip.VanRillaer@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.