svn commit: r220495 - in stable/8/sys: kern net
Bjoern A. Zeeb
bz at FreeBSD.org
Sat Apr 9 13:45:13 UTC 2011
Author: bz
Date: Sat Apr 9 13:45:13 2011
New Revision: 220495
URL: http://svn.freebsd.org/changeset/base/220495
Log:
MFC r218559:
Mfp4 CH=177255:
Make VNET_ASSERT() available with either VNET_DEBUG or INVARIANTS.
Change the syntax to match KASSERT() to allow more flexible panic
messages rather than having a printf with hardcoded arguments
before panic.
Adjust the few assertions we have to the new format (and enhance
the output).
Sponsored by: The FreeBSD Foundation
Sponsored by: CK Software GmbH
Reviewed by: jhb
Modified:
stable/8/sys/kern/uipc_socket.c
stable/8/sys/net/if.c
stable/8/sys/net/netisr.c
stable/8/sys/net/vnet.h
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
Modified: stable/8/sys/kern/uipc_socket.c
==============================================================================
--- stable/8/sys/kern/uipc_socket.c Sat Apr 9 13:19:44 2011 (r220494)
+++ stable/8/sys/kern/uipc_socket.c Sat Apr 9 13:45:13 2011 (r220495)
@@ -428,7 +428,8 @@ sonewconn(struct socket *head, int conns
if (over)
#endif
return (NULL);
- VNET_ASSERT(head->so_vnet);
+ VNET_ASSERT(head->so_vnet != NULL, ("%s:%d so_vnet is NULL, head=%p",
+ __func__, __LINE__, head));
so = soalloc(head->so_vnet);
if (so == NULL)
return (NULL);
Modified: stable/8/sys/net/if.c
==============================================================================
--- stable/8/sys/net/if.c Sat Apr 9 13:19:44 2011 (r220494)
+++ stable/8/sys/net/if.c Sat Apr 9 13:45:13 2011 (r220495)
@@ -387,8 +387,10 @@ static void
vnet_if_uninit(const void *unused __unused)
{
- VNET_ASSERT(TAILQ_EMPTY(&V_ifnet));
- VNET_ASSERT(TAILQ_EMPTY(&V_ifg_head));
+ VNET_ASSERT(TAILQ_EMPTY(&V_ifnet), ("%s:%d tailq &V_ifnet=%p "
+ "not empty", __func__, __LINE__, &V_ifnet));
+ VNET_ASSERT(TAILQ_EMPTY(&V_ifg_head), ("%s:%d tailq &V_ifg_head=%p "
+ "not empty", __func__, __LINE__, &V_ifg_head));
free((caddr_t)V_ifindex_table, M_IFNET);
}
Modified: stable/8/sys/net/netisr.c
==============================================================================
--- stable/8/sys/net/netisr.c Sat Apr 9 13:19:44 2011 (r220494)
+++ stable/8/sys/net/netisr.c Sat Apr 9 13:45:13 2011 (r220495)
@@ -647,7 +647,8 @@ netisr_process_workstream_proto(struct n
if (local_npw.nw_head == NULL)
local_npw.nw_tail = NULL;
local_npw.nw_len--;
- VNET_ASSERT(m->m_pkthdr.rcvif != NULL);
+ VNET_ASSERT(m->m_pkthdr.rcvif != NULL,
+ ("%s:%d rcvif == NULL: m=%p", __func__, __LINE__, m));
CURVNET_SET(m->m_pkthdr.rcvif->if_vnet);
netisr_proto[proto].np_handler(m);
CURVNET_RESTORE();
Modified: stable/8/sys/net/vnet.h
==============================================================================
--- stable/8/sys/net/vnet.h Sat Apr 9 13:19:44 2011 (r220494)
+++ stable/8/sys/net/vnet.h Sat Apr 9 13:45:13 2011 (r220495)
@@ -116,18 +116,23 @@ void vnet_destroy(struct vnet *vnet);
* Various macros -- get and set the current network stack, but also
* assertions.
*/
+#if defined(INVARIANTS) || defined(VNET_DEBUG)
+#define VNET_ASSERT(exp, msg) do { \
+ if (!(exp)) \
+ panic msg; \
+} while (0)
+#else
+#define VNET_ASSERT(exp, msg) do { \
+} while (0)
+#endif
+
#ifdef VNET_DEBUG
void vnet_log_recursion(struct vnet *, const char *, int);
-#define VNET_ASSERT(condition) \
- if (!(condition)) { \
- printf("VNET_ASSERT @ %s:%d %s():\n", \
- __FILE__, __LINE__, __func__); \
- panic(#condition); \
- }
-
#define CURVNET_SET_QUIET(arg) \
- VNET_ASSERT((arg)->vnet_magic_n == VNET_MAGIC_N); \
+ VNET_ASSERT((arg) != NULL && (arg)->vnet_magic_n == VNET_MAGIC_N, \
+ ("CURVNET_SET at %s:%d %s() curvnet=%p vnet=%p", \
+ __FILE__, __LINE__, __func__, curvnet, (arg))); \
struct vnet *saved_vnet = curvnet; \
const char *saved_vnet_lpush = curthread->td_vnet_lpush; \
curvnet = arg; \
@@ -141,12 +146,13 @@ void vnet_log_recursion(struct vnet *, c
#define CURVNET_SET(arg) CURVNET_SET_VERBOSE(arg)
#define CURVNET_RESTORE() \
- VNET_ASSERT(saved_vnet == NULL || \
- saved_vnet->vnet_magic_n == VNET_MAGIC_N); \
+ VNET_ASSERT(curvnet != NULL && (saved_vnet == NULL || \
+ saved_vnet->vnet_magic_n == VNET_MAGIC_N), \
+ ("CURVNET_RESTORE at %s:%d %s() curvnet=%p saved_vnet=%p", \
+ __FILE__, __LINE__, __func__, curvnet, saved_vnet)); \
curvnet = saved_vnet; \
curthread->td_vnet_lpush = saved_vnet_lpush;
#else /* !VNET_DEBUG */
-#define VNET_ASSERT(condition)
#define CURVNET_SET(arg) \
struct vnet *saved_vnet = curvnet; \
@@ -348,7 +354,7 @@ do { \
*/
#define curvnet NULL
-#define VNET_ASSERT(condition)
+#define VNET_ASSERT(exp, msg)
#define CURVNET_SET(arg)
#define CURVNET_SET_QUIET(arg)
#define CURVNET_RESTORE()
More information about the svn-src-stable-8
mailing list