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