#ifndef _KERN_MONITOR_H_
#define _KERN_MONITOR_H_

#include "kern/pmap.h"

struct Trapframe;

// Activate the kernel monitor,
// optionally providing a trap frame indicating the current state
// (NULL if none).
void monitor(struct Trapframe *tf);

// Functions implementing monitor commands.
void mon_help(int argc, char **argv);
void mon_kerninfo(int argc, char **argv);
void mon_backtrace(int argc, char **argv);
void mon_showmappings(int argc, char **argv);
void mon_pageperm(int argc, char **argv);
void mon_dumpmem(int argc, char **argv);
void mon_allocpage(int argc, char **argv);
void mon_freepage(int argc, char **argv);
void mon_pagestatus(int argc, char **argv);

// From pmap.c
extern Pde *boot_pgdir;

// From entry.s
struct sym_table_entry {
   u_long addr;
   char *name;
};

extern struct sym_table_entry symtable[];

#endif	// not _KERN_MONITOR_H_
