On 18/05/2009, Jan Kiszka <[email protected]> wrote:
> Gilles Chanteperdrix wrote:
>> Jan Kiszka wrote:
>>> Gilles Chanteperdrix wrote:
>>>> Steve wrote:
>>>>> First, thank you for the help on my previous query.
>>>>>
>>>>> I am still working on porting a c++ application from RTAI to Xenomai,
>>>>> and have encountered a problem with sockets, specifically the select
>>>>> function.
>>>>>
>>>>> When Xenomai is not being used the code runs as expected.  Once the
>>>>> Xenomai headers, compile options, etc, are used the select function
>>>>> fails with the error EFAULT.  I have reproduced the error (works
>>>>> without Xenomai, EFAULTs with Xenomai) using the following program:
>>>>>
>>>>> #include <stdio.h>
>>>>> #include <arpa/inet.h>
>>>>> #include <errno.h>
>>>>>
>>>>> int handleError(char *msg, int err);
>>>>>
>>>>> int main(void)
>>>>> {
>>>>>    int sfd;
>>>>>    struct sockaddr_in sai;
>>>>>    fd_set SockSet;
>>>>>    struct timeval tv;
>>>>>    tv.tv_sec = 2;
>>>>>    tv.tv_usec = 0;
>>>>>
>>>>>    sai.sin_family = AF_INET;
>>>>>    sai.sin_port = htons(1025);
>>>>>    sai.sin_addr.s_addr = htonl(INADDR_ANY);
>>>>>
>>>>>    if((sfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
>>>>>    { return handleError("creation error", errno); }
>>>>>
>>>>>    if(bind(sfd, (struct sockaddr*)&sai, sizeof(sai)) == -1)
>>>>>    { return handleError("bind error", errno); }
>>>>>
>>>>>    if(listen(sfd, 5) == -1)
>>>>>    { return handleError("listen error", errno); }
>>>>>
>>>>>    FD_ZERO(&SockSet);
>>>>>    FD_SET(sfd, &SockSet);
>>>>>
>>>>>    if(select(sfd+1, &SockSet, 0, 0, &tv) == -1)
>>>>>    { return handleError("select error", errno); }
>>>>>
>>>>>    printf("success\n");
>>>>>
>>>>>    return 0;
>>>>> }
>>>>>
>>>>> I am using Xenomai 2.4.6.1 on a vanilla 2.6.24.6 Linux kernel, and
>>>>> running on Ubuntu 8.04.
>>>> Could you try 2.4.7, to see if you are not having a bug which has
>>>> already been fixed?
>>>>
>>>> What you are trying should work, even though you are not really using
>>>> Xenomai's select but Linux plain select.
>>> This should have been fixed in 2.4.x.git - if my patch were applied. See
>>> git://git.xenomai.org/xenomai-jki.git for-2.4.x
>>>
>>> Did I missed to post some correction of that version, or what delays
>>> this? Sorry, lost track of it.
>>
>> Sorry, I do not see what patch you are refering to. Is it:
>> http://git.xenomai.org/?p=xenomai-jki.git;a=commitdiff;h=86333965a4362f8439822ec9d22b0a84b5701141;hp=a219c4a71b381f4662df45bac5508c3ae64ab924
>>
>> In this commit, I only see things which should return more -EFAULT. Or
>> did I miss something?
>
> I mean
> http://git.xenomai.org/?p=xenomai-jki.git;a=commitdiff;h=8542b9dc56b9edd16dab69e930699bcee17fa6ac
>
> That should be...
> http://permalink.gmane.org/gmane.linux.real-time.xenomai.devel/6237
>
> Jan
>
> --
> Siemens AG, Corporate Technology, CT SE 2
> Corporate Competence Center Embedded Linux
>

I am in the process of re-compiling the kernel with the 2.4.7, and I
have just checked the fault number of my example; it is definitely
giving +14, not -14 (so EFAULT, not -EFAULT).  Might this be an issue
with my kernel config options rather than anthing else?

Steve

_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to