/** * \file * * * \brief Monitor to check for stack overflows * * * \author Giovanni Bajo * * $WIZ$ module_name = "monitor" * $WIZ$ module_depends = "kernel" * $WIZ$ module_configuration = "bertos/cfg/cfg_monitor.h" */ #ifndef KERN_MONITOR_H #define KERN_MONITOR_H #include "cfg/cfg_monitor.h" #include /** * Start the kernel monitor. It is a special process which checks every second the stacks of the * running processes trying to detect stack overflows. * * \param stacksize Size of stack in chars * \param stack Pointer to the stack that will be used by the monitor * * \note The stack is provided by the caller so that there is no wasted space if the monitor * is not used. */ void monitor_start(size_t stacksize, cpu_stack_t *stack); /** * Manually check if a given stack has overflown. This is used to check for stacks * of processes handled externally form the kernel, or for other stacks (for instance * the interrupt supervisor stack). * * \note For this function to work, the stack must have been filled at startup with * CONFIG_KERN_STACKFILLCODE. */ size_t monitor_checkStack(cpu_stack_t *stack_base, size_t stack_size); /** Print a report of the stack status through kdebug */ void monitor_report(void); #endif /* KERN_MONITOR_H */