From 35d3421dc5886faaf8eeaa7fa888f7d5ed416236 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 17 Nov 2006 15:42:42 +0000 Subject: [PATCH] Greatly enlarged the number of possible kernel_arg ranges as we were already pretty close, and the number of loaded modules have a direct influence on this (even though we're currently loading the symbols by default). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19320 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/kernel/boot/kernel_args.h | 4 ++-- src/system/boot/loader/kernel_args.cpp | 14 ++++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/headers/private/kernel/boot/kernel_args.h b/headers/private/kernel/boot/kernel_args.h index 6ae660e6a1..24aa866772 100644 --- a/headers/private/kernel/boot/kernel_args.h +++ b/headers/private/kernel/boot/kernel_args.h @@ -1,5 +1,5 @@ /* - * Copyright 2002-2005, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2002-2006, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. * * Copyright 2001-2002, Travis Geiselbrecht. All rights reserved. @@ -20,7 +20,7 @@ #define CURRENT_KERNEL_ARGS_VERSION 1 -#define MAX_KERNEL_ARGS_RANGE 8 +#define MAX_KERNEL_ARGS_RANGE 16 typedef struct kernel_args { uint32 kernel_args_size; diff --git a/src/system/boot/loader/kernel_args.cpp b/src/system/boot/loader/kernel_args.cpp index 8212959b2f..6007fec2bd 100644 --- a/src/system/boot/loader/kernel_args.cpp +++ b/src/system/boot/loader/kernel_args.cpp @@ -1,7 +1,7 @@ /* -** Copyright 2004, Axel Dörfler, axeld@pinc-software.de. All rights reserved. -** Distributed under the terms of the Haiku License. -*/ + * Copyright 2004-2006, Axel Dörfler, axeld@pinc-software.de. All rights reserved. + * Distributed under the terms of the MIT License. + */ #include @@ -13,7 +13,7 @@ #include -static const size_t kChunkSize = 16384; +static const size_t kChunkSize = 4 * B_PAGE_SIZE; kernel_args gKernelArgs; @@ -126,8 +126,8 @@ static status_t add_kernel_args_range(void *start, uint32 size) { return insert_address_range(gKernelArgs.kernel_args_range, - &gKernelArgs.num_kernel_args_ranges, MAX_KERNEL_ARGS_RANGE, - (addr_t)start, size); + &gKernelArgs.num_kernel_args_ranges, MAX_KERNEL_ARGS_RANGE, + (addr_t)start, size); } @@ -140,6 +140,8 @@ add_kernel_args_range(void *start, uint32 size) extern "C" void * kernel_args_malloc(size_t size) { + //dprintf("kernel_args_malloc(): %ld bytes (%ld bytes left)\n", size, sFree); + if (sFirstFree != NULL && size <= sFree) { // there is enough space in the current buffer void *address = sFirstFree;