toaruos/base/usr/include/kernel/mod/shell.h
2018-03-19 11:38:11 +09:00

35 lines
998 B
C

#ifndef KERNEL_MOD_SHELL_H
#define KERNEL_MOD_SHELL_H
#include <kernel/fs.h>
/*
* We're going to have a list of shell commands.
* We'll search through it linearly because I don't
* care to write a hashmap right now. Maybe later.
*/
struct shell_command {
char * name;
int (*function) (fs_node_t * tty, int argc, char * argv[]);
char * description;
};
extern void debug_shell_install(struct shell_command * sh);
extern int debug_shell_readline(fs_node_t * dev, char * linebuf, int max);
extern void tty_set_buffered(fs_node_t * dev);
extern void tty_set_unbuffered(fs_node_t * dev);
#define DEFINE_SHELL_FUNCTION(n, desc) \
static int shell_ ## n (fs_node_t * tty, int argc, char * argv[]); \
static struct shell_command shell_ ## n ## _desc = { \
.name = #n , \
.function = &shell_ ## n , \
.description = desc \
}; \
static int shell_ ## n (fs_node_t * tty, int argc, char * argv[])
#define BIND_SHELL_FUNCTION(name) \
debug_shell_install(&shell_ ## name ## _desc);
#endif