X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=config_kern.h;h=c703b4def2006b2d058d81fa395e9c0a1e48af6b;hb=07382ad480794063a2d5be63547eb288034d9832;hp=4089128938dde5bc98ae8ceb450a78a4a0225c1e;hpb=1f818f125f386b09b0f6d7de1128b49592c30e35;p=bertos.git diff --git a/config_kern.h b/config_kern.h old mode 100755 new mode 100644 index 40891289..c703b4de --- a/config_kern.h +++ b/config_kern.h @@ -1,9 +1,34 @@ -/*! +/** * \file * * * \brief Kernel configuration parameters @@ -13,28 +38,46 @@ * \author Bernardo Innocenti */ -/* - * $Log$ - * Revision 1.4 2004/08/24 16:19:38 bernie - * Add missing header. - * - * Revision 1.3 2004/07/30 14:24:16 rasky - * Task switching con salvataggio perfetto stato di interrupt (SR) - * Kernel monitor per dump informazioni su stack dei processi - * - * Revision 1.2 2004/06/03 11:27:09 bernie - * Add dual-license information. - * - * Revision 1.1 2004/05/23 17:48:35 bernie - * Add top-level files. - * - */ +/*#* + *#* $Log$ + *#* Revision 1.8 2006/07/19 12:56:24 bernie + *#* Convert to new Doxygen style. + *#* + *#* Revision 1.7 2006/02/21 16:05:53 bernie + *#* Move from cfg/ to top-level. + *#* + *#* Revision 1.3 2005/11/04 16:20:01 bernie + *#* Fix reference to README.devlib in header. + *#* + *#* Revision 1.2 2005/04/11 19:10:27 bernie + *#* Include top-level headers from cfg/ subdir. + *#* + *#* Revision 1.1 2005/04/11 19:04:13 bernie + *#* Move top-level headers to cfg/ subdir. + *#* + *#* Revision 1.5 2004/08/25 14:12:08 rasky + *#* Aggiornato il comment block dei log RCS + *#* + *#* Revision 1.4 2004/08/24 16:19:38 bernie + *#* Add missing header. + *#* + *#* Revision 1.3 2004/07/30 14:24:16 rasky + *#* Task switching con salvataggio perfetto stato di interrupt (SR) + *#* Kernel monitor per dump informazioni su stack dei processi + *#* + *#* Revision 1.2 2004/06/03 11:27:09 bernie + *#* Add dual-license information. + *#* + *#* Revision 1.1 2004/05/23 17:48:35 bernie + *#* Add top-level files. + *#* + *#*/ #ifndef CONFIG_KERN_H #define CONFIG_KERN_H -#include /* ARCH_EMUL */ +#include /* ARCH_EMUL */ -/*! +/** * \name Modules activation * * \{ @@ -51,20 +94,61 @@ /* EXPERIMENTAL */ #define CONFIG_KERN_PREEMPTIVE (0 && CONFIG_KERN_SCHED && CONFIG_KERN_TIMER) - -#define CONFIG_KERN_HEAPSIZE 0x4000 /*!< Heap size (16KB) */ -#define CONFIG_KERN_QUANTUM 50 /*!< Scheduler time sharing quantum in ticks */ +#define CONFIG_KERN_QUANTUM 50 /**< Time sharing quantum in timer ticks. */ #if (ARCH & ARCH_EMUL) - #define CONFIG_KERN_DEFSTACKSIZE 65536 + /* We need a large stack because system libraries are bloated */ + #define CONFIG_PROC_DEFSTACKSIZE 65536 #else - #define CONFIG_KERN_DEFSTACKSIZE 128 /*!< Default stack size for each thread */ + /** + * Default stack size for each thread, in bytes. + * + * The goal here is to allow a minimal task to save all of its + * registers twice, plus push a maximum of 32 variables on the + * stack. + * + * The actual size computed by the default formula is: + * AVR: 102 + * i386: 156 + * ARM: 164 + * x86_64: 184 + * + * Note that on most 16bit architectures, interrupts will also + * run on the stack of the currently running process. Nested + * interrupts will greatly increases the amount of stack space + * required per process. Use irqmanager to minimize stack + * usage. + */ + #define CONFIG_PROC_DEFSTACKSIZE \ + (CPU_SAVED_REGS_CNT * 2 * sizeof(cpustack_t) \ + + 32 * sizeof(int)) #endif +/* OBSOLETE */ +#define CONFIG_KERN_DEFSTACKSIZE CONFIG_PROC_DEFSTACKSIZE + /* Memory fill codes to help debugging */ #if CONFIG_KERN_MONITOR - #define CONFIG_KERN_STACKFILLCODE 0xA5A5 - #define CONFIG_KERN_MEMFILLCODE 0xDBDB + #include + #if (SIZEOF_CPUSTACK_T == 1) + /* 8bit cpustack_t */ + #define CONFIG_KERN_STACKFILLCODE 0xA5 + #define CONFIG_KERN_MEMFILLCODE 0xDB + #elif (SIZEOF_CPUSTACK_T == 2) + /* 16bit cpustack_t */ + #define CONFIG_KERN_STACKFILLCODE 0xA5A5 + #define CONFIG_KERN_MEMFILLCODE 0xDBDB + #elif (SIZEOF_CPUSTACK_T == 4) + /* 16bit cpustack_t */ + #define CONFIG_KERN_STACKFILLCODE 0xA5A5A5A5UL + #define CONFIG_KERN_MEMFILLCODE 0xDBDBDBDBUL + #elif (SIZEOF_CPUSTACK_T == 8) + /* 16bit cpustack_t */ + #define CONFIG_KERN_STACKFILLCODE 0xA5A5A5A5A5A5A5A5UL + #define CONFIG_KERN_MEMFILLCODE 0xDBDBDBDBDBDBDBDBUL + #else + #error No cpustack_t size supported! + #endif #endif