Another question on locking...
George V. Neville-Neil
gnn at neville-neil.com
Sun Jun 29 16:36:05 PDT 2003
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
More information about the freebsd-net
mailing list