Module Name:    src
Committed By:   knakahara
Date:           Thu Oct 12 09:53:55 UTC 2017

Modified Files:
        src/sys/net: if_spppvar.h

Log Message:
Add a locking notes for if_spppsubr


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/sys/net/if_spppvar.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/net/if_spppvar.h
diff -u src/sys/net/if_spppvar.h:1.21 src/sys/net/if_spppvar.h:1.22
--- src/sys/net/if_spppvar.h:1.21	Thu Oct 12 09:49:43 2017
+++ src/sys/net/if_spppvar.h	Thu Oct 12 09:53:55 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_spppvar.h,v 1.21 2017/10/12 09:49:43 knakahara Exp $	*/
+/*	$NetBSD: if_spppvar.h,v 1.22 2017/10/12 09:53:55 knakahara Exp $	*/
 
 #ifndef _NET_IF_SPPPVAR_H_
 #define _NET_IF_SPPPVAR_H_
@@ -182,4 +182,25 @@ struct mbuf *sppp_dequeue (struct ifnet 
 int sppp_isempty (struct ifnet *);
 void sppp_flush (struct ifnet *);
 #endif
+
+/*
+ * Locking notes:
+ * + spppq is protected by spppq_lock (an adaptive mutex)
+ *     spppq is a list of all struct sppps, and it is used for
+ *     sending keepalive packets.
+ * + struct sppp is protected by sppp->pp_lock (an rwlock)
+ *     sppp holds configuration parameters for line,
+ *     authentication and addresses. It also has pointers
+ *     of functions to notify events to lower layer.
+ *     When notify events, sppp->pp_lock must be released.
+ *     Because the event handler implemented in a lower
+ *     layer often call functions implemented in
+ *     if_spppsubr.c.
+ *
+ * Locking order:
+ *    - spppq_lock => struct sppp->pp_lock
+ *
+ * NOTICE
+ * - Lower layers must not acquire sppp->pp_lock
+ */
 #endif /* !_NET_IF_SPPPVAR_H_ */

Reply via email to