]>
Commit | Line | Data |
---|---|---|
056a1eb7 SF |
1 | /* $Id: assert-r0drv-linux.c $ */ |
2 | /** @file | |
3 | * IPRT - Assertion Workers, Ring-0 Drivers, Linux. | |
4 | */ | |
5 | ||
6 | /* | |
7 | * Copyright (C) 2007-2016 Oracle Corporation | |
8 | * | |
9 | * This file is part of VirtualBox Open Source Edition (OSE), as | |
10 | * available from http://www.virtualbox.org. This file is free software; | |
11 | * you can redistribute it and/or modify it under the terms of the GNU | |
12 | * General Public License (GPL) as published by the Free Software | |
13 | * Foundation, in version 2 as it comes in the "COPYING" file of the | |
14 | * VirtualBox OSE distribution. VirtualBox OSE is distributed in the | |
15 | * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. | |
16 | * | |
17 | * The contents of this file may alternatively be used under the terms | |
18 | * of the Common Development and Distribution License Version 1.0 | |
19 | * (CDDL) only, as it comes in the "COPYING.CDDL" file of the | |
20 | * VirtualBox OSE distribution, in which case the provisions of the | |
21 | * CDDL are applicable instead of those of the GPL. | |
22 | * | |
23 | * You may elect to license modified versions of this file under the | |
24 | * terms and conditions of either the GPL or the CDDL or both. | |
25 | */ | |
26 | ||
27 | ||
28 | /********************************************************************************************************************************* | |
29 | * Header Files * | |
30 | *********************************************************************************************************************************/ | |
31 | #include "the-linux-kernel.h" | |
32 | #include "internal/iprt.h" | |
33 | ||
34 | #include <iprt/assert.h> | |
35 | #include <iprt/log.h> | |
36 | #include <iprt/string.h> | |
37 | #include <iprt/stdarg.h> | |
38 | #include <iprt/asm.h> | |
39 | ||
40 | #include "internal/assert.h" | |
41 | ||
42 | ||
43 | DECLHIDDEN(void) rtR0AssertNativeMsg1(const char *pszExpr, unsigned uLine, const char *pszFile, const char *pszFunction) | |
44 | { | |
45 | IPRT_LINUX_SAVE_EFL_AC(); | |
46 | printk(KERN_EMERG | |
47 | "\r\n!!Assertion Failed!!\r\n" | |
48 | "Expression: %s\r\n" | |
49 | "Location : %s(%d) %s\r\n", | |
50 | pszExpr, pszFile, uLine, pszFunction); | |
51 | IPRT_LINUX_RESTORE_EFL_AC(); | |
52 | } | |
53 | ||
54 | ||
55 | DECLHIDDEN(void) rtR0AssertNativeMsg2V(bool fInitial, const char *pszFormat, va_list va) | |
56 | { | |
57 | char szMsg[256]; | |
58 | IPRT_LINUX_SAVE_EFL_AC(); | |
59 | ||
60 | RTStrPrintfV(szMsg, sizeof(szMsg) - 1, pszFormat, va); | |
61 | szMsg[sizeof(szMsg) - 1] = '\0'; | |
62 | printk(KERN_EMERG "%s", szMsg); | |
63 | ||
64 | NOREF(fInitial); | |
65 | IPRT_LINUX_RESTORE_EFL_AC(); | |
66 | } | |
67 | ||
68 | ||
69 | RTR0DECL(void) RTR0AssertPanicSystem(void) | |
70 | { | |
71 | panic("%s%s", g_szRTAssertMsg1, g_szRTAssertMsg2); | |
72 | } | |
73 | RT_EXPORT_SYMBOL(RTR0AssertPanicSystem); | |
74 |