Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 27 Aug 2005 20:37:14 -0600 (MDT)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        rwatson@freebsd.org
Cc:        bzeeb-lists@lists.zabbadoz.net, freebsd-current@freebsd.org, dandee@volny.cz
Subject:   Re: LOR route vr0
Message-ID:  <20050827.203714.93196510.imp@bsdimp.com>
In-Reply-To: <20050828025721.X43518@fledge.watson.org>
References:  <20050827184153.A24510@fledge.watson.org> <20050827.124941.14976142.imp@bsdimp.com> <20050828025721.X43518@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20050828025721.X43518@fledge.watson.org>
            Robert Watson <rwatson@FreeBSD.org> writes:
: 
: On Sat, 27 Aug 2005, M. Warner Losh wrote:
: 
: > : You need to add an entry to subr_witness.c creating a graph edge between
: > : the softc lock and the routing lock.  An example of an entry in
: > : subr_witness.c:
: > :
: > :          /*
: > :           * TCP/IP
: > :           */
: > :          { "tcp", &lock_class_mtx_sleep },
: > :          { "tcpinp", &lock_class_mtx_sleep },
: > :          { "so_snd", &lock_class_mtx_sleep },
: > :          { NULL, NULL },
: > :
: > : Note that sets of ordered entries are terminated with a double-null.  This
: > : declares that locks of type "tcp" preceed "tcpinp" which preceed
: > : "so_snd".
: >
: > So you have to have locks of type tcp BEFORE you take out tcpinp type 
: > locks?
: 
: Correct.  'tcp' reflects the global TCP state tables (pcbinfo) locks, and 
: 'tcpinp' is for individual PCBs.  If you acquire first a tcpinp and then 
: tcp, the above settings should cause WITNESS to generate a lock order 
: warning.  Likewise, both tcp and tcpinp preceed so_snd, so if you acquire 
: a protocol lock after a socket lock, it will get unhappy.  WITNESS handles 
: transitive relationships, so it gets connected up to the rest of the lock 
: graph, explicit and implicit, so indirect violations of orders are fully 
: handled.


So I should make entries like:

	/*
	 * Network driver
	 */
	{ "network driver", &lock_class_mtx_sleep },
	{ "if_addr_mtx", &lock_class_mtx_sleep },
	{ NULL, NULL },

somewhere in the list?

Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050827.203714.93196510.imp>