From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <4FF367D7.1080102@xenomai.org> Date: Tue, 03 Jul 2012 23:44:55 +0200 From: Gilles Chanteperdrix MIME-Version: 1.0 References: <4FEC13B1.3040609@xenomai.org> In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [Xenomai] How setup receive-timeout for rt_dev_recvfrom? List-Id: Discussions about the Xenomai project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Henri Roosen Cc: xenomai@xenomai.org On 07/03/2012 08:08 PM, Henri Roosen wrote: > On Thu, Jun 28, 2012 at 10:20 AM, Gilles Chanteperdrix > wrote: >> On 06/28/2012 10:05 AM, Henri Roosen wrote: >>> Hi Xenomai-list, >>> >>> I am using the native API and RTDM to read from a RTNet realtime interface. >>> This all works, however, I need a timeout on the rt_dev_recvfrom. >>> >>> As there is no rt_dev_select function, I tried to setup a receive >>> timeout, similar to how the XDDP examples do: >> >> The posix skin has select, which can be used by native skin threads. You >> have to use the result of socket, and not rt_dev_socket as the fd to put >> in the fd_set, but apart from that, it should work. > > Thanks Gilles for your reply! However, I didn't try your suggestion, > because we cannot easily bind the posix skin to our application. > > But I found out that RTNet supports setting a timeout on a socket that > is used by rt_dev_recvfrom(). So for the case that anyone is looking > for how to setup a receive timeout, here is what worked for me: > > #include > nanosecs_rel_t timeout = 1000000000LL; > ... > ret = rt_dev_ioctl(s, RTNET_RTIOC_TIMEOUT, &timeout); I agree that it is simpler than using select. But just to answer your remark about the posix skin, you can actually use xenomai posix skin without the "--wrap" trick, and so avoid the posix skin functions called without wanting it. What you have to do is use the xenomai posix skin services you want to use with the __wrap_ prefix. For instance __wrap_socket, __wrap_select. The simply link with libpthread_rt.so, and do not use the --wrap flag provided by xeno-config. -- Gilles.