diff options
| author | Linus Nielsen Feltzing <linus@haxx.se> | 2002-07-01 21:14:20 +0000 |
|---|---|---|
| committer | Linus Nielsen Feltzing <linus@haxx.se> | 2002-07-01 21:14:20 +0000 |
| commit | 9f690b8cf81a8eaafa43c30bf7e076b3be85f4c1 (patch) | |
| tree | 68d28dab1392dac1ac3307b0d86373173dc046dd /firmware/thread.c | |
| parent | 6bb93847a400f0bc032bcb4a8d51b7199eee29e5 (diff) | |
| download | rockbox-9f690b8cf81a8eaafa43c30bf7e076b3be85f4c1.zip rockbox-9f690b8cf81a8eaafa43c30bf7e076b3be85f4c1.tar.gz rockbox-9f690b8cf81a8eaafa43c30bf7e076b3be85f4c1.tar.bz2 rockbox-9f690b8cf81a8eaafa43c30bf7e076b3be85f4c1.tar.xz | |
Now fills the stack with 0xdeadbeef
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1290 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/thread.c')
| -rw-r--r-- | firmware/thread.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/firmware/thread.c b/firmware/thread.c index fc8370b..d1cd8da 100644 --- a/firmware/thread.c +++ b/firmware/thread.c @@ -99,10 +99,22 @@ void switch_thread(void) */ int create_thread(void* function, void* stack, int stack_size) { + unsigned int i; + unsigned int stacklen; + unsigned int *stackptr; + if (num_threads >= MAXTHREADS) return -1; else { + /* Munge the stack to make it easy to spot stack overflows */ + stacklen = stack_size / 4; + stackptr = stack; + for(i = 0;i < stacklen;i++) + { + stackptr[i] = 0xdeadbeef; + } + struct regs* regs = &thread_contexts[num_threads++]; store_context(regs); /* Subtract 4 to leave room for the PR push in ldctx() |