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
