From d00adcfcb853b77a8e4dc2be7fcdcc4153050537 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Thu, 19 Oct 2017 21:03:02 +0100 Subject: [PATCH] kernel: API changes for realloc Set the basics out for coping with split I/D binaries and rearranging things so chmem can mean "stack space". Dummies for now so we can change the API --- Kernel/bank16k.c | 4 +++- Kernel/bank32k.c | 4 +++- Kernel/bank65c816.c | 7 +++++-- Kernel/bank8k.c | 4 +++- Kernel/bankfixed.c | 3 ++- Kernel/simple.c | 3 ++- Kernel/single.c | 3 ++- 7 files changed, 20 insertions(+), 8 deletions(-) diff --git a/Kernel/bank16k.c b/Kernel/bank16k.c index 4dd178df..e4299f28 100644 --- a/Kernel/bank16k.c +++ b/Kernel/bank16k.c @@ -116,8 +116,10 @@ int pagemap_alloc( ptptr p ){ /* * Reallocate the maps for a process + * + * FIXME: this is a quick hack for non split I/D old style chmem */ -int pagemap_realloc(usize_t size) +int pagemap_realloc(usize_t code, usize_data size, usize_t stack) { int8_t have = maps_needed(udata.u_top); int8_t want = maps_needed(size); diff --git a/Kernel/bank32k.c b/Kernel/bank32k.c index 13fb15f6..39833463 100644 --- a/Kernel/bank32k.c +++ b/Kernel/bank32k.c @@ -115,8 +115,10 @@ int pagemap_alloc(ptptr p) * to worry about this in the 32K + common case because we'll switchin * at one size, and switchout at the other and the udata will just get * saved/restored to the right places. + * + * FIXME: needs fixing as we update memory management */ -int pagemap_realloc(usize_t size) { +int pagemap_realloc(usize_t code, usize_t size, usize_t stack) { int have = maps_needed(udata.u_top); int want = maps_needed(size); uint8_t *ptr = (uint8_t *) & udata.u_page; diff --git a/Kernel/bank65c816.c b/Kernel/bank65c816.c index 1ef53fcd..e15af867 100644 --- a/Kernel/bank65c816.c +++ b/Kernel/bank65c816.c @@ -57,8 +57,11 @@ int pagemap_alloc(ptptr p) return 0; } -/* Realloc is trivial - we can't do anything useful */ -int pagemap_realloc(usize_t size) +/* Realloc is trivial - we can't do anything useful + + FIXME: when we redo the loader this will need to handle split I/D + and new stack model */ +int pagemap_realloc(usize_t csize, usize_t size, usize_t stack) { if (size > MAP_SIZE) return ENOMEM; diff --git a/Kernel/bank8k.c b/Kernel/bank8k.c index 7d307700..95877da0 100644 --- a/Kernel/bank8k.c +++ b/Kernel/bank8k.c @@ -160,8 +160,10 @@ int pagemap_alloc(ptptr p) * * Currently only called on execve and we rely on this in the * specific case of bank8k + * + * FIXME: needs updating once we have all the new sizes/stack etc right */ -int pagemap_realloc(usize_t size) +int pagemap_realloc(usize_t code, usize_t size, usize_t stack) { int8_t have = maps_needed(udata.u_top); int8_t want = maps_needed(size); diff --git a/Kernel/bankfixed.c b/Kernel/bankfixed.c index 1429d535..962bc13c 100644 --- a/Kernel/bankfixed.c +++ b/Kernel/bankfixed.c @@ -69,7 +69,8 @@ int pagemap_alloc(ptptr p) } /* Realloc is trivial - we can't do anything useful */ -int pagemap_realloc(usize_t size) +/* FIXME: update when new model is ready */ +int pagemap_realloc(usize_t code, usize_t size, usize_t stack) { if (size > MAP_SIZE) return ENOMEM; diff --git a/Kernel/simple.c b/Kernel/simple.c index c2c23d06..44e98168 100644 --- a/Kernel/simple.c +++ b/Kernel/simple.c @@ -38,7 +38,8 @@ int pagemap_alloc(ptptr p) return 0; } -int pagemap_realloc(usize_t size) +/* FIXME: update once we have the new mm logic in place */ +int pagemap_realloc(usize_t code, usize_t size, usize_t stack) { if (size >= ramtop) return ENOMEM; diff --git a/Kernel/single.c b/Kernel/single.c index 09cacb7e..445404cf 100644 --- a/Kernel/single.c +++ b/Kernel/single.c @@ -48,7 +48,8 @@ int pagemap_alloc(ptptr p) return 0; } -int pagemap_realloc(usize_t size) +/* FIXME: update once the new mmu logic is done */ +int pagemap_realloc(usize_t code, usize_t size, usize_t stack) { if (size >= (usize_t) ramtop) return ENOMEM; -- 2.34.1