8#include <sys/syscall.h>
12#define SHELL_MAX_ARGS 5
13#define SHELL_MAX_LINE 256
18main(
int argc,
const char *argv[])
35 printf(
"bkpt Trigger a kernel breakpoint\n");
36 printf(
"exit Exit shell\n");
37 printf(
"help Display the list of commands\n");
45 if (argc != 1 && argc != 2) {
46 printf(
"Invalid number of arguments\n");
80 status =
OSStat(path, &sb);
87 status =
spawn(path, &argv[0]);
88 if (status > 100000) {
93 printf(
"Process result: %d\n", status);
98 printf(
"Unknown command '%s'\n", argv[0]);
110 for (i = 0;
buf[i] != 0; i++) {
111 if (
buf[i] ==
'\n') {
123 argv[argc] = nextArg;
128 if (
strcmp(argv[0],
"help") == 0) {
129 Cmd_Help(argc, (
const char **)argv);
130 }
else if (
strcmp(argv[0],
"bkpt") == 0) {
131 asm volatile(
"int3");
132 }
else if (
strcmp(argv[0],
"exit") == 0) {
133 Cmd_Exit(argc, (
const char **)argv);
134 }
else if (
strcmp(argv[0],
"#") == 0) {
136 }
else if (
buf[0] ==
'\0') {
139 Cmd_Run(argc, (
const char **)argv);
uint64_t OSWait(uint64_t pid)
int OSStat(const char *path, struct stat *sb)
void Cmd_Run(int argc, const char *argv[])
void Cmd_Exit(int argc, const char *argv[])
const char * searchpath[]
void Cmd_Help(int argc, const char *argv[])
int main(int argc, const char *argv[])
void DispatchCommand(char *buf)
char * fgets(char *str, int size, FILE *fh)
int printf(const char *fmt,...)
int fputs(const char *str, FILE *fh)
int atoi(const char *nptr)
int strcmp(const char *s1, const char *s2)
char * strcpy(char *to, const char *from)
char * strtok(char *str, const char *delim)
char * strcat(char *s, const char *append)
pid_t spawn(const char *path, const char *argv[])