From ed869aa3867d134fb37f586f1db029006677cebb Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Thu, 13 Jul 2017 09:06:53 +0200 Subject: separated C library implementations with an OS_ABAOS define (for now), we cannot test stdio and memory management in the hosted environment yet this way --- src/Makefile | 2 +- src/kernel/kernel.c | 2 ++ src/libc/stdio.h | 4 ++++ src/libc/stdlib.c | 9 ++++++++- src/libc/stdlib.h | 4 ++++ 5 files changed, 19 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/Makefile b/src/Makefile index 7b173cd..4192fd1 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,5 +1,5 @@ CC := gcc -INCLUDES = -I. -Ilibc -Ihardware -Idrivers -Idrivers/hdi -Idrivers/hdi/ps2 -Idrivers/video -Ikernel -Igui +INCLUDES = -DOS_ABAOS -I. -Ilibc -Ihardware -Idrivers -Idrivers/hdi -Idrivers/hdi/ps2 -Idrivers/video -Ikernel -Igui CFLAGS := -std=c99 -m32 -march=i486 -ffreestanding -O0 -g -Werror $(INCLUDES) LD := ld NASMFLAGS := -f elf32 diff --git a/src/kernel/kernel.c b/src/kernel/kernel.c index dc2f7eb..3be8758 100644 --- a/src/kernel/kernel.c +++ b/src/kernel/kernel.c @@ -13,6 +13,8 @@ #include "keyboard.h" #include "mouse.h" #include "pci.h" +#include "memorymanagement.h" + #include "setjmp.h" #include "kernel.h" diff --git a/src/libc/stdio.h b/src/libc/stdio.h index dbf7ac7..24632f6 100644 --- a/src/libc/stdio.h +++ b/src/libc/stdio.h @@ -5,7 +5,9 @@ #include "stddef.h" +#ifdef OS_ABAOS #include "console.h" +#endif #define EOF (-1) @@ -13,6 +15,8 @@ int puts( const char *s ); int printf( const char *format, ... ); int vprintf( const char *format, va_list args ); +#ifdef OS_ABAOS void __stdio_set_console( console_t *console ); +#endif #endif //STDIO_H diff --git a/src/libc/stdlib.c b/src/libc/stdlib.c index 9150431..d6bb8b2 100644 --- a/src/libc/stdlib.c +++ b/src/libc/stdlib.c @@ -46,22 +46,29 @@ char *itoa( int v, char *s, int base ) return s; } +#ifdef OS_ABAOS // TODO: we should have a global memory manager and one per // user process later static memory_manager_t *stdlib_memory_manager = NULL; +#endif void *malloc( size_t size ) { +#ifdef OS_ABAOS return memory_manager_allocate( stdlib_memory_manager, size ); +#endif } void free( void *p ) { +#ifdef OS_ABAOS memory_manager_deallocate( stdlib_memory_manager, &p ); +#endif } +#ifdef OS_ABAOS void __stdlib_set_memory_manager( memory_manager_t *memory_manager ) { stdlib_memory_manager = memory_manager; } - +#endif diff --git a/src/libc/stdlib.h b/src/libc/stdlib.h index ff6b67f..9507fa3 100644 --- a/src/libc/stdlib.h +++ b/src/libc/stdlib.h @@ -3,13 +3,17 @@ #include "stddef.h" +#ifdef OS_ABAOS #include "memorymanagement.h" +#endif char *itoa( int v, char *s, int base ); void *malloc( size_t size ); void free( void *p ); +#ifdef OS_ABAOS void __stdlib_set_memory_manager( memory_manager_t *memory_manager ); +#endif #endif // STDLIB_H -- cgit v1.2.3-54-g00ecf