Import in DevLib.
[bertos.git] / kern / monitor.h
1 /*!
2  * \file
3  * <!--
4  * Copyright 2004 Develer S.r.l. (http://www.develer.com/)
5  * This file is part of DevLib - See devlib/README for information.
6  * -->
7  *
8  * \brief Monitor to check for stack overflows
9  *
10  * \version $Id$
11  *
12  * \author Giovanni Bajo <rasky@develer.com>
13  */
14
15 /*#*
16  *#* $Log$
17  *#* Revision 1.1  2004/10/03 20:39:03  bernie
18  *#* Import in DevLib.
19  *#*
20  *#* Revision 1.1  2004/09/30 23:19:30  rasky
21  *#* Estratto il monitor degli stack da proc.c in due file a parte: monitor.c/h
22  *#* Rinominata monitor_debug_stacks in monitor_report
23  *#*
24  *#*/
25
26 #ifndef KERN_MONITOR_H
27 #define KERN_MONITOR_H
28
29 #include <cpu.h>
30 #include <config_kern.h>
31
32 #if CONFIG_KERN_MONITOR
33
34 /*!
35  * Start the kernel monitor. It is a special process which checks every second the stacks of the
36  * running processes trying to detect stack overflows.
37  *
38  * \param stacksize Size of stack in chars
39  * \param stack Pointer to the stack that will be used by the monitor
40  *
41  * \note The stack is provided by the caller so that there is no wasted space if the monitor
42  * is not used.
43  */
44 void monitor_start(size_t stacksize, cpustack_t *stack);
45
46
47 /*!
48  * Manually check if a given stack has overflown. This is used to check for stacks
49  * of processes handled externally form the kernel, or for other stacks (for instance
50  * the interrupt supervisor stack).
51  *
52  * \note For this function to work, the stack must have been filled at startup with
53  * CONFIG_KERN_STACKFILLCODE.
54  */
55 size_t monitor_check_stack(cpustack_t* stack_base, size_t stack_size);
56
57
58 /*! Print a report of the stack status through kdebug */
59 void monitor_report(void);
60
61
62 #endif /* CONFIG_KERN_MONITOR */
63 #endif /* KERN_MONITOR_H */