assert-r0drv-linux.c revision 6fffd38c4ef918b4aaa702d0768422e0be119ba7
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync/* $Id$ */
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync/** @file
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync * IPRT - Assertion Workers, Ring-0 Drivers, Linux.
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync */
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync/*
c7814cf6e1240a519cbec0441e033d0e2470ed00vboxsync * Copyright (C) 2007 Sun Microsystems, Inc.
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync *
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync * available from http://www.virtualbox.org. This file is free software;
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync * you can redistribute it and/or modify it under the terms of the GNU
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync * General Public License (GPL) as published by the Free Software
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync *
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync * The contents of this file may alternatively be used under the terms
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync * of the Common Development and Distribution License Version 1.0
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync * VirtualBox OSE distribution, in which case the provisions of the
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync * CDDL are applicable instead of those of the GPL.
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync *
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsync * You may elect to license modified versions of this file under the
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync * terms and conditions of either the GPL or the CDDL or both.
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync *
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync * additional information or have any questions.
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync */
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync/*******************************************************************************
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync* Header Files *
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync*******************************************************************************/
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync#include "the-linux-kernel.h"
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync#include "internal/iprt.h"
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync#include <iprt/assert.h>
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync#include <iprt/log.h>
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync#include <iprt/string.h>
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync#include <iprt/stdarg.h>
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync#include <iprt/asm.h>
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync#include "internal/assert.h"
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsyncvoid rtR0AssertNativeMsg1(const char *pszExpr, unsigned uLine, const char *pszFile, const char *pszFunction)
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync{
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync printk(KERN_EMERG
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync "\r\n!!Assertion Failed!!\r\n"
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync "Expression: %s\r\n"
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync "Location : %s(%d) %s\r\n",
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync pszExpr, pszFile, uLine, pszFunction);
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync}
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync
86d53e7a618e7b32825a61870af99e2b43b9fe38vboxsync
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsyncvoid rtR0AssertNativeMsg2V(bool fInitial, const char *pszFormat, va_list va)
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync{
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync char szMsg[256];
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync RTStrPrintfV(szMsg, sizeof(szMsg) - 1, pszFormat, va);
c28fa006ba669ad8f26ae31d00a338379c04ea1bvboxsync szMsg[sizeof(szMsg) - 1] = '\0';
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync printk(KERN_EMERG "%s", szMsg);
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync NOREF(fInitial);
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync}
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync
86d53e7a618e7b32825a61870af99e2b43b9fe38vboxsync
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsyncRTR0DECL(void) RTR0AssertPanicSystem(void)
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync{
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync panic("%s%s", g_szRTAssertMsg1, g_szRTAssertMsg2);
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync}
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsyncRT_EXPORT_SYMBOL(RTR0AssertPanicSystem);
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync
092bb00450e1167c5e6dc99102ac381f942dfdd3vboxsync