From 3e310ac309a3d61c5d2b651e200a625f71d9faa4 Mon Sep 17 00:00:00 2001 From: Mark Whitley Date: Fri, 20 Apr 2001 17:40:33 +0000 Subject: [PATCH] Applied patch from Larry Doolittle to give users the third option of putting buffers in BSS (in addition to stack and heap). --- Config.h | 5 +++++ busybox.h | 5 +++++ include/busybox.h | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/Config.h b/Config.h index 8c80f8e87..4c0a33256 100644 --- a/Config.h +++ b/Config.h @@ -144,6 +144,11 @@ // them put on the stack. For some very small machines with limited stack // space, this can be deadly. For most folks, this works just fine... //#define BB_FEATURE_BUFFERS_GO_ON_STACK +// The third alternative for buffer allocation is to use BSS. This works +// beautifully for computers with a real MMU (and OS support), but wastes +// runtime RAM for uCLinux. This behavior was the only one available for +// BusyBox versions 0.48 and earlier. +//#define BB_FEATURE_BUFFERS_GO_IN_BSS // // Turn this on to use Erik's very cool devps, and devmtab kernel drivers, // thereby eliminating the need for the /proc filesystem and thereby saving diff --git a/busybox.h b/busybox.h index ebbe759e2..8905b0dbd 100644 --- a/busybox.h +++ b/busybox.h @@ -72,9 +72,14 @@ extern const char *applet_name; #define RESERVE_BB_BUFFER(buffer,len) char buffer[len] #define RESERVE_BB_UBUFFER(buffer,len) unsigned char buffer[len] #else +#ifdef BB_FEATURE_BUFFERS_GO_IN_BSS +#define RESERVE_BB_BUFFER(buffer,len) static char buffer[len] +#define RESERVE_BB_UBUFFER(buffer,len) static unsigned char buffer[len] +#else #define RESERVE_BB_BUFFER(buffer,len) char *buffer=xmalloc(len) #define RESERVE_BB_UBUFFER(buffer,len) unsigned char *buffer=xmalloc(len) #endif +#endif /* Bit map related macros -- libc5 doens't provide these... sigh. */ diff --git a/include/busybox.h b/include/busybox.h index ebbe759e2..8905b0dbd 100644 --- a/include/busybox.h +++ b/include/busybox.h @@ -72,9 +72,14 @@ extern const char *applet_name; #define RESERVE_BB_BUFFER(buffer,len) char buffer[len] #define RESERVE_BB_UBUFFER(buffer,len) unsigned char buffer[len] #else +#ifdef BB_FEATURE_BUFFERS_GO_IN_BSS +#define RESERVE_BB_BUFFER(buffer,len) static char buffer[len] +#define RESERVE_BB_UBUFFER(buffer,len) static unsigned char buffer[len] +#else #define RESERVE_BB_BUFFER(buffer,len) char *buffer=xmalloc(len) #define RESERVE_BB_UBUFFER(buffer,len) unsigned char *buffer=xmalloc(len) #endif +#endif /* Bit map related macros -- libc5 doens't provide these... sigh. */