-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On 16.09.2014 16:22, Valentin Hauner wrote:
Hi,
On 09/16/2014 03:54 PM, Björn Döbel wrote:
Just to be sure: How large is this per-thread stack? Are you properly aligning it to page boundaries?
Adam suggested to give it a size of 2000 * l4_umword_t (THREAD_STACK_SIZE is set to 2000) in his mail from September 3th, so I'm using the following code:
thread_stack[count] = malloc(THREAD_STACK_SIZE * sizeof(l4_umword_t)); // For x86-32, the arguments of functions are passed via the stack thread_stack[count][THREAD_STACK_SIZE - 1] = (l4_umword_t)t->arg; thread_stack[count][THREAD_STACK_SIZE - 2] = 0; // ... l4_touch_rw(thread_stack[count], sizeof(thread_stack[count])); // ... l4_thread_ex_regs(t->cap, (l4_umword_t)t->func,
(l4_umword_t)&thread_stack[count][THREAD_STACK_SIZE - 2], 0);
How is thread_stack declared?
What call are you using to map the actual stack to the task?
Header of the thread function:
void thread_func(l4_umword_t data) { /* ... */ }
That's the whole stack-relevant code in my library. With one task for all threads only, everything works.
Can you please clarify what you mean with the last sentence?
Bjoern - -- Dipl.-Inf. Bjoern Doebel Mail: doebel@tudos.org TU Dresden, OS Chair Phone: +49 351 463 38 799 Noethnitzer Str. 46 Fax: +49 351 463 38 284 01187 Dresden, Germany WWW: http://www.tudos.org/~doebel - -- "When the seagulls follow the trawler, it's because they think sardines will be thrown into the sea." (Eric Cantona)