From 0384aa34437fe39626c9087984c8840d176e22e8 Mon Sep 17 00:00:00 2001 From: daniel-k Date: Fri, 24 Jun 2016 20:45:21 +0200 Subject: [PATCH 1/4] kernel/clone_task: also destroy interrupt stack on failure --- hermit/kernel/tasks.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hermit/kernel/tasks.c b/hermit/kernel/tasks.c index 9aae78185..f75037c88 100644 --- a/hermit/kernel/tasks.c +++ b/hermit/kernel/tasks.c @@ -409,8 +409,10 @@ int clone_task(tid_t* id, entry_point_t ep, void* arg, uint8_t prio) kprintf("start new thread %d on core %d with stack address %p\n", i, core_id, stack); out: - if (ret) + if (ret) { destroy_stack(stack, DEFAULT_STACK_SIZE); + destroy_stack(ist, KERNEL_STACK_SIZE); + } #if 0 if (core_id != CORE_ID) From 74c3d4f0ba60373dfa7bd7c8a64ea9aa948a3ea2 Mon Sep 17 00:00:00 2001 From: daniel-k Date: Fri, 24 Jun 2016 21:06:50 +0200 Subject: [PATCH 2/4] kernel/create_task: also destroy interrupt stack on failure --- hermit/kernel/tasks.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hermit/kernel/tasks.c b/hermit/kernel/tasks.c index f75037c88..fe45ba017 100644 --- a/hermit/kernel/tasks.c +++ b/hermit/kernel/tasks.c @@ -512,6 +512,7 @@ out: if (ret) { destroy_stack(stack, DEFAULT_STACK_SIZE); + destroy_stack(ist, KERNEL_STACK_SIZE); kfree(counter); } From 995d88d7e406f4a5eed0c53c4a9dcd0318ca3409 Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Sat, 25 Jun 2016 14:36:55 +0200 Subject: [PATCH 3/4] remove obsolete macro LIBOS --- hermit/include/hermit/config.h | 1 - 1 file changed, 1 deletion(-) diff --git a/hermit/include/hermit/config.h b/hermit/include/hermit/config.h index 45dc326ab..52371672a 100644 --- a/hermit/include/hermit/config.h +++ b/hermit/include/hermit/config.h @@ -50,7 +50,6 @@ extern "C" { #define BYTE_ORDER LITTLE_ENDIAN -#define LIBOS #define DYNAMIC_TICKS #define BUILTIN_EXPECT(exp, b) __builtin_expect((exp), (b)) From 5782edd4ebeb3e657736a567e93ab86f7603ea5f Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Sat, 25 Jun 2016 14:45:24 +0200 Subject: [PATCH 4/4] set MAX_APIC_CORES to MAX_CORES - a separation of both values isn't meaningful --- hermit/arch/x86/kernel/apic.c | 2 +- hermit/include/hermit/config.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hermit/arch/x86/kernel/apic.c b/hermit/arch/x86/kernel/apic.c index fa6d77c87..9e583235c 100644 --- a/hermit/arch/x86/kernel/apic.c +++ b/hermit/arch/x86/kernel/apic.c @@ -50,7 +50,7 @@ extern const void kernel_start; #define IOAPIC_ADDR ((size_t) &kernel_start - 2*PAGE_SIZE) #define LAPIC_ADDR ((size_t) &kernel_start - 1*PAGE_SIZE) -#define MAX_APIC_CORES 128 +#define MAX_APIC_CORES MAX_CORES // IO APIC MMIO structure: write reg, then read or write data. typedef struct { diff --git a/hermit/include/hermit/config.h b/hermit/include/hermit/config.h index 52371672a..09a589b06 100644 --- a/hermit/include/hermit/config.h +++ b/hermit/include/hermit/config.h @@ -32,7 +32,7 @@ extern "C" { #endif -#define MAX_CORES 64 +#define MAX_CORES 128 #define MAX_TASKS (MAX_CORES*2+2) #define MAX_ISLE 8 #define MAX_FNAME 128