URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [libmisc/] [stackchk/] [README] - Rev 173
Compare with Previous | Blame | View Log
## $Id: README,v 1.2 2001-09-27 12:01:46 chris Exp $#Introduction============This directory contains a stack bounds checker. It provides twoprimary features:+ check for stack overflow at each context switch+ provides an educated guess at each task's stack usageEnabling========Add the stack checker extension to the initial user extension set.If using confdefs.h to build your configuration table, this isas simple as adding -DSTACK_CHECK_ON to the gcc command line whichcompiles the file defining the configuration table. In the RTEMStest suites and samples, this is always init.cBackground==========The stack overflow check at context switch works by looking fora 16 byte pattern at the logical end of the stack to be corrupted.The "guesser" assumes that the entire stack was prefilled with a knownpattern and assumes that the pattern is still in place if the memoryhas not been used as a stack.Both of these can be fooled by pushing large holes onto the stackand not writing to them... or (much more unlikely) writing themagic patterns into memory.This code has not been extensively tested. It is provided as a toolfor RTEMS users to catch the most common mistake in multitaskingsystems ... too little stack space. Suggestions and comments are appreciated.NOTES:1. Stack usage information is questionable on CPUs which pushlarge holes on stack.2. The stack checker has a tendency to generate a fault whentrying to print the helpful diagnostic message. If it comesout, congratulations. If not, then the variable Stack_check_Blown_taskcontains a pointer to the TCB of the offending task. Thisis usually enough to go on.FUTURE:1. Determine how/if gcc will generate stack probe calls and support that.2. Get accurate stack usage numbers on i960.. it pushes very largeholes on the stack.
