Date: Wed, 24 Apr 2002 20:08:56 +0900 From: Seigo Tanimura <tanimura@r.dl.itc.u-tokyo.ac.jp> To: current@FreeBSD.org, smp@FreeBSD.org Cc: Seigo Tanimura <tanimura@nkth.carrots.uucp.r.dl.itc.u-tokyo.ac.jp> Subject: Locking down a socket, milestone 1 Message-ID: <200204241110.g3OB8u8t006194@bunko>
next in thread | raw e-mail | index | archive | help
I am now working on locking down a socket. (I have heard that Jeffrey Hsu is also doing that, but I have never seen his patch. Has anyone seen that?) My first milestone patch is now available at: http://people.FreeBSD.org/~tanimura/patches/socket_milestone1.diff.gz The works I have done so far are: - Determine the lock required to protect each of the members in struct socket. - Add mutexes to each of the sockbufs in a socket as BSD/OS does. - Lock down so_count, so_options, so_linger and so_state. - Add a global mutex socq_lock to protect the connection queues of a listening socket. Lock socq_lock to lock two sockets at once, followed by enqueuing or dequeuing a socket, or moving a socket across queues. socq_lock is not an sx lock because we usually have to lock two sockets to modify them. - Add a global sx sigio_lock to protect the pointer to the sigio object of a socket. This is to avoid lock order reversal caused by locking a process in pgsigio(). This lock should be applicable to a pipe as well. Although there are still lots of works to do, the patch has grown up quite a lot. so_options is the most notorious member in struct socket so far because it is used in almost all of the protocol stacks. I would therefore like to test, fix and merge the patch before it blows up. Comments are welcome. Thanks. -- Seigo Tanimura <tanimura@r.dl.itc.u-tokyo.ac.jp> <tanimura@FreeBSD.org> To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-smp" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200204241110.g3OB8u8t006194>