RTR0DECL(void) RTR0AssertPanicSystem(void) { const char *psz = &g_szRTAssertMsg2[0]; const char *pszEnd = &g_szRTAssertMsg2[sizeof(g_szRTAssertMsg2)]; while (psz < pszEnd && (*psz == ' ' || *psz == '\t' || *psz == '\n' || *psz == '\r')) psz++; if (psz < pszEnd && *psz) assfail(psz, g_pszRTAssertFile, g_u32RTAssertLine); else assfail(g_szRTAssertMsg1, g_pszRTAssertFile, g_u32RTAssertLine); g_szRTAssertMsg2[0] = '\0'; }
/* * Add a new node to an AVL tree. */ void avl_add(avl_tree_t *tree, void *new_node) { avl_index_t where; /* * This is unfortunate. We want to call panic() here, even for * non-DEBUG kernels. In userland, however, we can't depend on anything * in libc or else the rtld build process gets confused. * Thankfully, rtld provides us with its own assfail() so we can use * that here. We use assfail() directly to get a nice error message * in the core - much like what panic() does for crashdumps. */ if (avl_find(tree, new_node, &where) != NULL) #ifdef _KERNEL panic("avl_find() succeeded inside avl_add()"); #else (void) assfail("avl_find() succeeded inside avl_add()", __FILE__, __LINE__); #endif avl_insert(tree, new_node, where); }