[EMAIL PROTECTED] wrote:
> Jan Kiszka wrote:
>> Tom Panis wrote:
>>> Hi,
>>>
>>> I'm trying to send raw ethernet packages on Xenomai, I'm also working
>>> with the trunk version of RTnet. I looked at the example
>>> \"raw-ethernet.c\" and I'm wondering why the functions like socket_rt,
>>> send_rt ,.. aren't used.  Is it still real-time? I tried to use the
>> It is, but only when you link against Xenomai's POSIX skin (xeno-config
>> --posix-ldflags). This step will wrap all POSIX calls like socket, send,
>> bind to RTDM services, finally invoking RTnet if it is installed
>> (otherwise you will end up in Linux again).
>>
>>> real-time functions like socket_rt,... but then I can't send or receive
>>> raw ethernet packages anymore: the function send_rt returns -1.
>> All _rt services are deprecated now (we should mark them...). They were
>> replaced by RTDM's rt_dev_XXX. But only the name changed here.
>>
>> The difference between rt_dev_XXX (or old XXX_rt) services and the true
>> POSIX calls are the way error codes are returned. For POSIX services you
>> have to check errno, for the RTDM API you get the error directly via the
>> return code. Thus, one time -1 only means some error occurred, the other
>> it means -EPERM (here: RT context required).
>>
>>> I attached the program code. Running the program (I use rtlo as
>>> interface) results in the following output:
>>>
>>>    Socket created: socket id: 0
>>>    Got interface: index: 0
>>>    Sending frames...
>>>    Cannot send: Success
>>>    Length: -1
>>>    shutting down
>> How did you compile that program? It doesn't map itself to RT context
>> unless you compiled it against the POSIX skin (which does so
>> automatically for main).
> I didn't compiled it against the POSIX skin. Now I just edited 
> raw-ethertnet.c and kept it in the same directory. I compile it with makefile 
> that's already there. When I do this I can send messages, but I can't receive 
> any.  When rt_dev_recv() is called, the program hangs, he keeps waiting for a 
> package to arrive. When I send messages to my computer without this program 
> running dmesg results :
>     [4299353.146000] RTnet: no one cared for packet with layer 3 protocol 
> type 0x1234
>     [4299354.150000] RTnet: no one cared for packet with layer 3 protocol 
> type 0x1234
>     ....
> When my program runs, these messages aren't given anymore, so the packages 
> are taking care of I guess...
> I added the source. The output of the program is:
> 
>     Socket created: socket id: 1
>     Got interface: index: 0
>     Receiving
> 
> After stopping the program with ctrl+c the following is added:
> 
>     Length: -9
>     shutting down

Your test case looks sane on first sight. You ran it against the
original raw-ethernet example as sender? Over a cable or also via local
loopback? Does loopback also fail?

I cannot promise when I'll have time to look at this. Meanwhile you
could try to track a bit down what happens in the core, from the stack
manager to the af_packet code, by adding printks.

Jan

Attachment: signature.asc
Description: OpenPGP digital signature

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
RTnet-users mailing list
RTnet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rtnet-users

Reply via email to