On Tue, Mar 13, 2012 at 01:46:39AM -0400, Mike Frysinger wrote: > treating EINTR/EAGAIN as unrecoverable is bad behavior for an app. there are > valid ways an app could receive either signal and have it be normal behavior.
Receiving a signal does not result in EINTR. Running a signal handler that was installed (intentionally) without SA_RESTART is what causes EINTR. > having that handling be done in uClibc is not required by POSIX, but it's > better imo for uClibc to carry a little bit more code there to provide better > reliability to higher layers rather than forcing every userspace app to > implement their own retry-on-eagain macros. Retrying on EAGAIN is simply *wrong*. It makes you consume 100% cpu. If the file descriptor is set as EAGAIN, it means whoever set it up wants to ensure that blocking does not happen; emulating blocking with 100% cpu load is the worst possible way to handle this situation! For stdio, EAGAIN must be treated as a hard error. Rich _______________________________________________ uClibc mailing list uClibc@uclibc.org http://lists.busybox.net/mailman/listinfo/uclibc