Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/dev/acpica/Osd/OsdDebug.c
39537 views
1
/*-
2
* Copyright (c) 2000 Michael Smith
3
* Copyright (c) 2000 BSDi
4
* All rights reserved.
5
*
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions
8
* are met:
9
* 1. Redistributions of source code must retain the above copyright
10
* notice, this list of conditions and the following disclaimer.
11
* 2. Redistributions in binary form must reproduce the above copyright
12
* notice, this list of conditions and the following disclaimer in the
13
* documentation and/or other materials provided with the distribution.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25
* SUCH DAMAGE.
26
*/
27
28
/*
29
* 6.8 : Debugging support
30
*/
31
32
#include <sys/cdefs.h>
33
#include "opt_ddb.h"
34
#include <sys/param.h>
35
#include <sys/kdb.h>
36
#include <sys/kernel.h>
37
#include <sys/bus.h>
38
#include <machine/bus.h>
39
#include <ddb/ddb.h>
40
#include <ddb/db_output.h>
41
42
#include <contrib/dev/acpica/include/acpi.h>
43
#include <contrib/dev/acpica/include/accommon.h>
44
#include <contrib/dev/acpica/include/acdebug.h>
45
46
#include <dev/acpica/acpivar.h>
47
48
ACPI_STATUS
49
AcpiOsGetLine(char *Buffer, UINT32 BufferLength, UINT32 *BytesRead)
50
{
51
#ifdef DDB
52
char *cp;
53
54
cp = Buffer;
55
if (db_readline(Buffer, BufferLength) > 0)
56
while (*cp != '\0' && *cp != '\n' && *cp != '\r')
57
cp++;
58
*cp = '\0';
59
if (BytesRead != NULL)
60
*BytesRead = cp - Buffer;
61
return (AE_OK);
62
#else
63
printf("AcpiOsGetLine called but no input support");
64
return (AE_NOT_EXIST);
65
#endif /* DDB */
66
}
67
68
ACPI_STATUS
69
AcpiOsSignal(UINT32 Function, void *Info)
70
{
71
ACPI_SIGNAL_FATAL_INFO *fatal;
72
73
switch (Function) {
74
case ACPI_SIGNAL_FATAL:
75
fatal = (ACPI_SIGNAL_FATAL_INFO *)Info;
76
printf("ACPI fatal signal, type 0x%x code 0x%x argument 0x%x",
77
fatal->Type, fatal->Code, fatal->Argument);
78
#ifdef ACPI_DEBUG
79
kdb_enter(KDB_WHY_ACPI, "AcpiOsSignal");
80
#endif
81
break;
82
83
case ACPI_SIGNAL_BREAKPOINT:
84
#ifdef ACPI_DEBUG
85
kdb_enter(KDB_WHY_ACPI, (char *)Info);
86
#endif
87
break;
88
89
default:
90
return (AE_BAD_PARAMETER);
91
}
92
93
return (AE_OK);
94
}
95
96
#ifdef ACPI_DEBUGGER
97
void
98
acpi_EnterDebugger(void)
99
{
100
static int initted = 0;
101
102
if (!initted) {
103
printf("Initialising ACPICA debugger...\n");
104
AcpiInitializeDebugger();
105
initted = 1;
106
}
107
108
printf("Entering ACPICA debugger...\n");
109
AcpiDbUserCommands();
110
}
111
#endif /* ACPI_DEBUGGER */
112
113