Basic debugger support over serial
This commit is contained in:
parent
dd0e90c84d
commit
c9750e4834
@ -11,6 +11,7 @@ src_amd64 = [
|
||||
"amd64/multiboot.S",
|
||||
"amd64/mbentry.c",
|
||||
# AMD64
|
||||
"amd64/debug.c",
|
||||
"amd64/trap.c",
|
||||
"amd64/trapentry.S",
|
||||
"amd64/machine.c",
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
#include <kassert.h>
|
||||
#include <kconfig.h>
|
||||
//#include <kdebug.h>
|
||||
#include <kdebug.h>
|
||||
#include <mp.h>
|
||||
|
||||
#include "trap.h"
|
||||
|
@ -29,9 +29,31 @@ Console_LateInit()
|
||||
Serial_LateInit();
|
||||
}
|
||||
|
||||
void
|
||||
Console_Getc(char ch)
|
||||
char
|
||||
Console_Getc()
|
||||
{
|
||||
return Serial_Getc();
|
||||
}
|
||||
|
||||
void
|
||||
Console_Gets(char *str, size_t n)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < (n - 1); i++)
|
||||
{
|
||||
char ch = Console_Getc();
|
||||
if (ch == '\r')
|
||||
{
|
||||
Console_Putc('\n');
|
||||
str[i] = '\0';
|
||||
return;
|
||||
}
|
||||
Console_Putc(ch);
|
||||
str[i] = ch;
|
||||
}
|
||||
|
||||
str[i+1] = '\0';
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -3,6 +3,8 @@
|
||||
#define __CONSOLE_H__
|
||||
|
||||
void Console_Init();
|
||||
char Console_Getc();
|
||||
void Console_Gets(char *str, size_t n);
|
||||
void Console_Putc(char ch);
|
||||
void Console_Puts(const char *str);
|
||||
|
||||
|
13
sys/include/kdebug.h
Normal file
13
sys/include/kdebug.h
Normal file
@ -0,0 +1,13 @@
|
||||
|
||||
#ifndef __KDEBUG_H__
|
||||
#define __KDEBUG_H__
|
||||
|
||||
// Platform Functions
|
||||
void Debug_Registers(int argc, const char *argv[]);
|
||||
|
||||
// Generic Functions
|
||||
void Debug_Dump(int argc, const char *argv[]);
|
||||
void Debug_Prompt();
|
||||
|
||||
#endif /* __KDEBUG_H__ */
|
||||
|
@ -18,6 +18,9 @@
|
||||
#include <stdint.h>
|
||||
|
||||
#include <kassert.h>
|
||||
#include <kdebug.h>
|
||||
|
||||
#include "../dev/console.h"
|
||||
|
||||
void
|
||||
Debug_PrintHex(const char *data, size_t length, off_t off, size_t limit)
|
||||
@ -75,16 +78,23 @@ Debug_Dump(int argc, const char *argv[])
|
||||
{
|
||||
}
|
||||
|
||||
#define DEBUG_MAX_LINE 128
|
||||
|
||||
void
|
||||
Debug_Prompt()
|
||||
{
|
||||
char buf[DEBUG_MAX_LINE];
|
||||
kprintf("Entered Debugger!\n");
|
||||
|
||||
kprintf("> ");
|
||||
// read input
|
||||
while (1) {
|
||||
kprintf("> ");
|
||||
|
||||
// parse input
|
||||
// read input
|
||||
Console_Gets(&buf, DEBUG_MAX_LINE);
|
||||
|
||||
// execute command
|
||||
// parse input
|
||||
|
||||
// execute command
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user