Hi, Looking at the code in uipc_socket.c and udp_usrreq.c I am a bit confused as to how the locking mechanism works between the sockets and the protocols. The socket calls all occur under Giant, which the protocols do not deal with, and the protocols all lock on the inp mutex, which the socket calls do not deal with. Furthermore the sblock/sbunlock calls are only use by the socket layer. I'm reading udp_input() as it's simpler to follow. Have I missed something? What prevents a protocol from writing to a socket buffer at the wrong time or the socket code from tweaking it at the wrong time? Is this handled simply because of the priority of the threads doing the work?
Thanks, George _______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "[EMAIL PROTECTED]"