Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Nov 2012 22:10:10 +0000 (UTC)
From:      Andre Oppermann <andre@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r243416 - user/andre/tcp_workqueue/sys/net
Message-ID:  <201211222210.qAMMAAq3074310@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: andre
Date: Thu Nov 22 22:10:10 2012
New Revision: 243416
URL: http://svnweb.freebsd.org/changeset/base/243416

Log:
  Rename PFIL_LIST_[UN]LOCK() to PFIL_HEADLIST_[UN]LOCK() to avoid
  confusion with the pfil_head locking macros.
  
  Shuffle around and group definitions and function prototypes by
  purpose to improve readability and restyle in various places.

Modified:
  user/andre/tcp_workqueue/sys/net/pfil.c
  user/andre/tcp_workqueue/sys/net/pfil.h

Modified: user/andre/tcp_workqueue/sys/net/pfil.c
==============================================================================
--- user/andre/tcp_workqueue/sys/net/pfil.c	Thu Nov 22 21:47:21 2012	(r243415)
+++ user/andre/tcp_workqueue/sys/net/pfil.c	Thu Nov 22 22:10:10 2012	(r243416)
@@ -182,11 +182,11 @@ pfil_head_register(struct pfil_head *ph)
 {
 	struct pfil_head *lph;
 
-	PFIL_LIST_LOCK();
+	PFIL_HEADLIST_LOCK();
 	LIST_FOREACH(lph, &V_pfil_head_list, ph_list) {
 		if (ph->ph_type == lph->ph_type &&
 		    ph->ph_un.phu_val == lph->ph_un.phu_val) {
-			PFIL_LIST_UNLOCK();
+			PFIL_HEADLIST_UNLOCK();
 			return (EEXIST);
 		}
 	}
@@ -195,7 +195,7 @@ pfil_head_register(struct pfil_head *ph)
 	TAILQ_INIT(&ph->ph_in);
 	TAILQ_INIT(&ph->ph_out);
 	LIST_INSERT_HEAD(&V_pfil_head_list, ph, ph_list);
-	PFIL_LIST_UNLOCK();
+	PFIL_HEADLIST_UNLOCK();
 	return (0);
 }
 
@@ -209,9 +209,9 @@ pfil_head_unregister(struct pfil_head *p
 {
 	struct packet_filter_hook *pfh, *pfnext;
 		
-	PFIL_LIST_LOCK();
+	PFIL_HEADLIST_LOCK();
 	LIST_REMOVE(ph, ph_list);
-	PFIL_LIST_UNLOCK();
+	PFIL_HEADLIST_UNLOCK();
 	TAILQ_FOREACH_SAFE(pfh, &ph->ph_in, pfil_chain, pfnext)
 		free(pfh, M_IFADDR);
 	TAILQ_FOREACH_SAFE(pfh, &ph->ph_out, pfil_chain, pfnext)
@@ -228,11 +228,11 @@ pfil_head_get(int type, u_long val)
 {
 	struct pfil_head *ph;
 
-	PFIL_LIST_LOCK();
+	PFIL_HEADLIST_LOCK();
 	LIST_FOREACH(ph, &V_pfil_head_list, ph_list)
 		if (ph->ph_type == type && ph->ph_un.phu_val == val)
 			break;
-	PFIL_LIST_UNLOCK();
+	PFIL_HEADLIST_UNLOCK();
 	return (ph);
 }
 

Modified: user/andre/tcp_workqueue/sys/net/pfil.h
==============================================================================
--- user/andre/tcp_workqueue/sys/net/pfil.h	Thu Nov 22 21:47:21 2012	(r243415)
+++ user/andre/tcp_workqueue/sys/net/pfil.h	Thu Nov 22 22:10:10 2012	(r243416)
@@ -53,11 +53,11 @@ typedef	int	(*pfil_func_t)(void *, struc
  */
 struct packet_filter_hook {
         TAILQ_ENTRY(packet_filter_hook) pfil_chain;
-	pfil_func_t	pfil_func;
-	void	*pfil_arg;
-	int	 pfil_cookie;
-	uint8_t	 pfil_order;
-	char	*pfil_name;
+	pfil_func_t	 pfil_func;
+	void		*pfil_arg;
+	int		 pfil_cookie;
+	uint8_t		 pfil_order;
+	char		*pfil_name;
 };
 
 #define	PFIL_ORDER_FIRST	  0
@@ -81,15 +81,15 @@ typedef	TAILQ_HEAD(pfil_chain, packet_fi
  * For packet is then run through the hook chain for inspection.
  */
 struct pfil_head {
-	pfil_chain_t	ph_in;
-	pfil_chain_t	ph_out;
-	int		ph_type;
-	int		ph_nhooks;
+	pfil_chain_t	 ph_in;
+	pfil_chain_t	 ph_out;
+	int		 ph_type;
+	int		 ph_nhooks;
+	int		 flags;
 	struct rmlock	*ph_plock;	/* Pointer to the used lock */
-	struct rmlock	ph_lock;	/* Private lock storage */
-	int		flags;
+	struct rmlock	 ph_lock;	/* Private lock storage */
 	union {
-		u_long		phu_val;
+		u_long		 phu_val;
 		void		*phu_ptr;
 	} ph_un;
 #define	ph_af		ph_un.phu_val
@@ -98,11 +98,17 @@ struct pfil_head {
 };
 
 /* Public functions for pfil head management by protocols. */
+struct	pfil_head *pfil_head_get(int, u_long);
+int	pfil_head_register(struct pfil_head *);
+int	pfil_head_unregister(struct pfil_head *);
+
+/* Public functions for pfil hook management by protocols. */
 int	pfil_add_hook(pfil_func_t, void *, int, struct pfil_head *);
 int	pfil_add_hook_order(pfil_func_t, void *, char *, int, uint8_t,
 	    struct pfil_head *);
 int	pfil_get_cookie(pfil_func_t, void *, int, struct pfil_head *);
 int	pfil_remove_hook(pfil_func_t, void *, int, struct pfil_head *);
+#define	PFIL_HOOKED(p) ((p)->ph_nhooks > 0)
 
 /* Public functions to run the packet inspection by protocols. */
 int	pfil_run_hooks(struct pfil_head *, struct mbuf **, struct ifnet *,
@@ -110,7 +116,8 @@ int	pfil_run_hooks(struct pfil_head *, s
 int	pfil_run_inject(struct pfil_head *, struct mbuf **, struct ifnet *,
 	    int, struct inpcb *inp, int cookie);
 
-struct rm_priotracker;	/* Do not require including rmlock header */
+/* Locking functions for pfil_head to run the hook chain. */
+struct	rm_priotracker;	/* Do not require including rmlock header */
 int	pfil_try_rlock(struct pfil_head *, struct rm_priotracker *);
 void	pfil_rlock(struct pfil_head *, struct rm_priotracker *);
 void	pfil_runlock(struct pfil_head *, struct rm_priotracker *);
@@ -118,15 +125,16 @@ void	pfil_wlock(struct pfil_head *);
 void	pfil_wunlock(struct pfil_head *);
 int	pfil_wowned(struct pfil_head *ph);
 
-int	pfil_head_register(struct pfil_head *);
-int	pfil_head_unregister(struct pfil_head *);
-
-struct	pfil_head *pfil_head_get(int, u_long);
+#define PFIL_TRY_RLOCK(p, t)	rm_try_rlock((p)->ph_plock, (t))
+#define PFIL_RLOCK(p, t)	rm_rlock((p)->ph_plock, (t))
+#define PFIL_WLOCK(p)		rm_wlock((p)->ph_plock)
+#define PFIL_RUNLOCK(p, t)	rm_runlock((p)->ph_plock, (t))
+#define PFIL_WUNLOCK(p)		rm_wunlock((p)->ph_plock)
+#define PFIL_WOWNED(p)		rm_wowned((p)->ph_plock)
 
-#define	PFIL_HOOKED(p) ((p)->ph_nhooks > 0)
-#define	PFIL_LOCK_INIT_REAL(l, t)	\
+#define	PFIL_LOCK_INIT_REAL(l, t)			\
 	rm_init_flags(l, "PFil " t " rmlock", RM_RECURSE)
-#define	PFIL_LOCK_DESTROY_REAL(l)	\
+#define	PFIL_LOCK_DESTROY_REAL(l)			\
 	rm_destroy(l)
 #define	PFIL_LOCK_INIT(p)	do {			\
 	if ((p)->flags & PFIL_FLAG_PRIVATE_LOCK) {	\
@@ -139,13 +147,9 @@ struct	pfil_head *pfil_head_get(int, u_l
 	if ((p)->flags & PFIL_FLAG_PRIVATE_LOCK)	\
 		PFIL_LOCK_DESTROY_REAL((p)->ph_plock);	\
 } while (0)
-#define PFIL_TRY_RLOCK(p, t)	rm_try_rlock((p)->ph_plock, (t))
-#define PFIL_RLOCK(p, t)	rm_rlock((p)->ph_plock, (t))
-#define PFIL_WLOCK(p)		rm_wlock((p)->ph_plock)
-#define PFIL_RUNLOCK(p, t)	rm_runlock((p)->ph_plock, (t))
-#define PFIL_WUNLOCK(p)		rm_wunlock((p)->ph_plock)
-#define PFIL_WOWNED(p)		rm_wowned((p)->ph_plock)
-#define PFIL_LIST_LOCK()	mtx_lock(&pfil_global_lock)
-#define PFIL_LIST_UNLOCK()	mtx_unlock(&pfil_global_lock)
+
+/* Internal locking macros for global/vnet pfil_head_list. */
+#define PFIL_HEADLIST_LOCK()	mtx_lock(&pfil_global_lock)
+#define PFIL_HEADLIST_UNLOCK()	mtx_unlock(&pfil_global_lock)
 
 #endif /* _NET_PFIL_H_ */



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