diff packages/kernel/current/cdl/thread.cdl @ 143:6b5f480c6929 ecos-sw-2000-12-08

Merge from eCos master repository on 2000-12-08-02:09:36-GMT
author jlarmour
date Fri, 08 Dec 2000 03:30:06 +0000
parents 6ed91473a1cd
children 2e9a636d9de9
line wrap: on
line diff
--- a/packages/kernel/current/cdl/thread.cdl
+++ b/packages/kernel/current/cdl/thread.cdl
@@ -82,6 +82,44 @@ cdl_option CYGFUN_KERNEL_THREADS_STACK_L
         does not imply any form of run-time stack overflow checking."
 }
 
+cdl_component CYGFUN_KERNEL_THREADS_STACK_CHECKING {
+    display       "Check thread stacks for overflows"
+    active_if     CYGPKG_INFRA_DEBUG
+    active_if     CYGDBG_USE_ASSERTS
+    default_value 1
+    description   "
+        This option enables a variety of checks for stack overflow
+        including signatures at the top and base of thread stacks,
+        which are asserted for correctness whenever a thread switches."
+
+    cdl_option CYGFUN_KERNEL_ALL_THREADS_STACK_CHECKING {
+	display   "Check all threads whenever possible"
+	active_if  CYGVAR_KERNEL_THREADS_LIST
+	default_value 0
+	description "
+	This option enables more active checking of all threads for
+	wrongdoing.  In theory, checking threads other than the old and new
+	executing threads in a thread-switch is pointless, because no other
+	thread has run, so no other stack can be exceeded.  But errors such
+	as memory scribbling, dangling pointers, overlapping use of store
+	or errors accessing objects adjacent to a stack which can be very
+	hard to find can be detected this way, saving debug time."
+    }
+
+    cdl_option CYGNUM_KERNEL_THREADS_STACK_CHECK_DATA_SIZE {
+	display   "Signature size in bytes, at stack top and bottom"
+	flavor data
+	default_value 32
+	legal_values 8 to 512
+	description "
+	This is the size of the area reserved for a signature at the top
+	and bottom of all stacks.  It also provides a buffer zone for
+	detecting overflow before external objects are corrupted, hence the
+	ability to vary it here.  But if you are short of stack, increasing
+	this value will make the overflow more, not less likely, of course."
+    }
+}
+
 cdl_component CYGVAR_KERNEL_THREADS_DATA {
     display            "Support for per-thread data"
     requires           CYGFUN_KERNEL_THREADS_STACK_LIMIT
@@ -223,3 +261,4 @@ cdl_option CYGIMP_IDLE_THREAD_YIELD {
         If the scheduler configuration only has a single priority
         level, then the idle thread must yield each time around its loop."
 }
+