On Wed, August 8, 2007 15:06, Jan Kiszka wrote:

>>>> trying to send data via rtnet without ip on raw socket I have a
>>>> problem.
>>>> Using the native API it doesn't work at all, using the posix API it
>>>> works
>>>> exactly once.
>>> If your native example doesn't create a real-time context for the
>>> sender
>>> (rt_task_shadow etc.), that would be expected: -ENOSYS. The POSIX skin
>>> does so automatically for the main thread, thus sending works in
>>> principle.
>> Ah ok, I overlooked that.
>>>> Since I tried everything I tried to rewrite the raw-ethernet example
>>>> in
>>>> my
>>>> project (my source code is attached). The first call of that program
>>>> sends
>>>> the buffer as it should (checking via wireshark). All further calls do
>>>> not
>>>> send anything. All functions return without any error, send function
>>>> returns with 36, the amount of bytes to be sent.
>>>> I have no more idea where my mistake is.
>>>> the raw-ethernet example works fine.
>>>> sorry for chatoical code, it changed a lot of time for testing
>>>> purpose.
>>> What is your setup? TDMA or plain RTnet? What happens when you issue
>>> those frames over rtlo? I only have a virtual box at hand right now,
>>> but
>>> the loopback path works fine for me with your code (with some additions
>>> to make it compile): on each invocation of the program, RTcap collects
>>> one frame on rtlo.
>> It's TDMA...attached my rtnet start script. In rtlo it's exactly the
>> same,
>> the firt invocation creates a frame on rtlo, the further ones not.
> So TDMA/RTmac is not involved here, as rtlo is free of this. Also, the
> NIC driver or the hardware cannot make a difference.
>> What additions to compile did you do, except includes and constants.
> Only includes and constants:
> #include <stdio.h>
> #include <signal.h>
> #include <sys/socket.h>
> #include <sys/mman.h>
> #include <string.h>
> #include <stdlib.h>
> #include <unistd.h>
> #include <errno.h>
> #include <netpacket/packet.h>
>
> #include <net/ethernet.h>
>
> #include <sys/ioctl.h>
>
> #include <net/if.h>
>
> #include <arpa/inet.h>
>
> #define MAXNETWORKFRAMESIZE   1400
> #define SINT16                        short
> #define ETH_TYPE_RTDATA               0x4567
> #define NETWORK_DEVICE                "rtlo"
> #define ETH_PROTOCOL          0x4567
> #define UINT8                 unsigned char
> void catch_signal(int s) { }
> And then:
> # gcc -o <target> source.c -Wall \
>       `.../xeno-config --posix-ldflags --posix-cflags`
> Note that I checked over Xenomai 2.4-rc1 which has different
> device/socket cleanup code. But I don't think this should make a
> difference, because a stalled socket should cause visible errors on the
> second invocation. Still, what is the state of
> /proc/xenomai/rtdm/open_fildes after the first run?
> Well, then low-level debugging would be next: You could start with
> taking an I-pipe trace by putting xntrace_user_freeze(0, 0) right before
> the return of main(). You will also need "#include <nucleus/trace.h>"
> then. The tracer (with appropriately large backtrace_points, see Xenomai
> homepage) should show what kernel functions were called around send()
> and then close(). May give some hints, specifically when comparing run
> #1 and #2. You are welcome to post the traces as well (compressed or
> privately).

I tried it with native API and rt_task_shadow etc....and it works. Since
I'm running out of time, I will use the native API, which was my first
intend anyway.
If it's important for you, I could do those tests after I finished my
project (in september there will be time :) ). If not, I will leave it as
it is.

Tx and greets,

Nadym


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
RTnet-users mailing list
RTnet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rtnet-users

Reply via email to