From ebeba4c6f0a7ba3a149bb1b9ea451c29366c1c6f Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Sun, 26 Jul 2015 18:50:32 +0200 Subject: [PATCH] allocate memory outside the critical section --- hermit/kernel/tasks.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/hermit/kernel/tasks.c b/hermit/kernel/tasks.c index 328f28ebc..96634da9b 100644 --- a/hermit/kernel/tasks.c +++ b/hermit/kernel/tasks.c @@ -249,6 +249,7 @@ int create_task(tid_t* id, entry_point_t ep, void* arg, uint8_t prio, uint32_t c { int ret = -ENOMEM; uint32_t i; + void* stack = NULL; if (BUILTIN_EXPECT(!ep, 0)) return -EINVAL; @@ -261,6 +262,10 @@ int create_task(tid_t* id, entry_point_t ep, void* arg, uint8_t prio, uint32_t c if (BUILTIN_EXPECT(!readyqueues[core_id].idle, 0)) return -EINVAL; + stack = kmalloc(KERNEL_STACK_SIZE); + if (BUILTIN_EXPECT(!stack, 0)) + return -ENOMEM; + spinlock_irqsave_lock(&table_lock); for(i=0; i