Bruno Carlus a écrit :
> Jan Kiszka a écrit :
>> Bruno Carlus wrote:
>>> Hi,
>>>
>>> to test my multicast patch I tried the following piece of code, 
>>> simplier than the ptp soft, to validate the modifications.
>>> The problem is that the packets are correctly sent and seemed to be 
>>> received by the rtnet udp layer at the other side, but never get to 
>>> the socket layer receiving ...
>>
>> You can
>>  - instrument the receiver side to find out what is happening (printk)
>>  - use some tracer (i-pipe tracer or lttng)
>>  - run the whole thing under qemu
>>
>> I recently did the latter before releasing 0.9.10-rc2. Works nicely 
>> these days as qemu now provides several of the network adapters that 
>> RTnet supports. Of course, timing is not reliable, BUT... you can 
>> debug the targets without any kernel patch or additional hardware 
>> support! And if something crashes, you don't have to leave your seat 
>> and walk to some reset switch. ;)
>>
> my first analysis shows that everything works fine reception-side till 
> the rtnet udp layer: the socket coresponding to the multicast @ is 
> found by rt_udp_v4_lookup function. But I don't know what happens 
> afterwards or where to put trace or debug printouts...
>
> By the way, a version of the code compiled without wrapping with 
> xenomai/posix works fine...
>>>
>>> Other thing maybe in touch when ^c the little program rtdm 
>>> complains: "closing device in real-time mode while creation ran in 
>>> non real time - this is not supported! " maybe related to my problem.
>>>
>>> something i did not understand about the xenomai/rtnet posix wrap?
>>
>> Your problem is sock_lock. It forces shutalldown into primary (=RT) 
>> mode before invoking close(). That neither makes sense nor works if 
>> socket() was invoked in secondary (=Non-RT) mode. Just gid rid of it.
>>
> I don't understantd something here, because I thought everything was 
> RT since I was compiling with the xeno-config posix flags ...
> Does sock_lock also force sendto to run in RT ?
>> Jan
>>
>
> Thanks,
> Bruno.
>
I just found out the problem, my both points above were actually linked: 
as the sockets weren't closing properly, a binding was still existing 
for rtnet; so when receiving the packets it was picking the first good 
binding in the list and relaying them to this old rt_sock, which wasn't 
linked to anything anymore "above"...
I restarted everything properly (got rid of sock_lock...) and it is 
working with the first opened socket !

Anyway, if anyone (Jan ? ;-) )  could answer my last mail questions 
about RT/non RT it would still help ... !

Bruno.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
RTnet-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rtnet-developers

Reply via email to