Target: Windows Mobile 6.0 Compiler: cegcc (both 0.51.0 and SVN (updated 2008-06-14))
I'm having issues getting select() to work on my target; note that I have yet to try testing other targets. When I tried to run the sample code included in the glibc man-page, I found that it would segfault on the select() call. I then compiled it as static and ran it remotely under gdb, and found that it was crashing at newlib/libc/src/wince/msnet.c:175 (in the __MS_select): return( (*select)(nfds, rfds, wfds, efds, timeout)); The problem appears to be that __msnet_init() is never called, and so the select function pointer is NULL. I added a call to __msnet_init() to the sample code below and tried running it again; this time it didn't crash, but unfortunately it returned the following error (via perror()): select(): Bad file number Does anyone have any idea what the problem might be? Is this, perhaps, an issue with WM6? Sample code follows: #include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <sys/types.h> #include <unistd.h> int main(void) { fd_set rfds; struct timeval tv; int retval; /* __msnet_init(); */ /* Watch stdin (fd 0) to see when it has input. */ FD_ZERO(&rfds); FD_SET(0, &rfds); /* Wait up to five seconds. */ tv.tv_sec = 5; tv.tv_usec = 0; retval = select(1, &rfds, NULL, NULL, &tv); /* Dont rely on the value of tv now! */ if (retval == -1) perror("select()"); else if (retval) printf("Data is available now.\n"); /* FD_ISSET(0, &rfds) will be true. */ else printf("No data within five seconds.\n"); exit(EXIT_SUCCESS); } Cheers, -- Lance Fetters Ogaki, Gifu, Japan ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ Cegcc-devel mailing list Cegcc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/cegcc-devel