On Mon, 15 May 2006 16:17:48 -0700 Rick Jones <[EMAIL PROTECTED]> wrote:
> David S. Miller wrote: > > From: Mark A Smith <[EMAIL PROTECTED]> > > Date: Mon, 15 May 2006 14:39:06 -0700 > > > > > >>I discovered that in some cases, send(), sendmsg(), and sendto() are not > >>thread-safe. Although the man page for these functions does not specify > >>whether these functions are supposed to be thread-safe, my reading of the > >>POSIX/SUSv3 specification tells me that they should be. I traced the > >>problem to tcp_sendmsg(). I was very curious about this issue, so I wrote > >>up a small page to describe in more detail my findings. You can find it at: > >>http://www.almaden.ibm.com/cs/people/marksmith/sendmsg.html . > > > # ./sendmsgclient localhost > ERROR! We should have all 0! We don't! > buff[16384]=1 > buff[16385]=1 > buff[16386]=1 > buff[16387]=1 > buff[16388]=1 > buff[16389]=1 > buff[16390]=1 > buff[16391]=1 > buff[16392]=1 > buff[16393]=1 > That's 10/32768 bad bytes > # uname -a > HP-UX tarry B.11.23 U ia64 2397028692 unlimited-user license > > Given that the URL above asserts that HP-UX claims atomicity, either > there is a bug in the UX stack, or perhaps the test? I took a quick > look at the HP-UX 11iv2 (aka 11.23) manpage for sendmsg and didn't see > anything about atomicity there - on which manpage(s) or docs was the > assertion of HP-UX atomicity made? > > I presume this is only for "blocking" sockets? I cannot at least off > the top of my head see how a stack could offer it on non-blocking sockets. The test seems to be based on sending a big message. In this case, on non-blocking sockets, the send call will return partial status. The return from the system call will be less than the number of bytes requested. > > > And frankly, BSD defines BSD socket semantics here not some wording in > > the POSIX standards. > > Have BSD socket semantics ever been updated/clarified any any > quasi-official manner since the popular presence of threads? Or > are/were Posix/Xopen filling a gap? > > rick jones > - > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to [EMAIL PROTECTED] > More majordomo info at http://vger.kernel.org/majordomo-info.html - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html