Applied patch from Larry Doolittle to give users the third option of putting
authorMark Whitley <markw@lineo.com>
Fri, 20 Apr 2001 17:40:33 +0000 (17:40 -0000)
committerMark Whitley <markw@lineo.com>
Fri, 20 Apr 2001 17:40:33 +0000 (17:40 -0000)
buffers in BSS (in addition to stack and heap).

Config.h
busybox.h
include/busybox.h

index 8c80f8e87f342c4b3723b95161ce7a506cb21eed..4c0a33256eb3af2f2866d5f4443bccff3d0170c5 100644 (file)
--- a/Config.h
+++ b/Config.h
 // 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
index ebbe759e2c6a817b12a25a84f12930f9f2bbb88a..8905b0dbd22891485ce6d5cae8144ca03ac34ad0 100644 (file)
--- 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.  */
index ebbe759e2c6a817b12a25a84f12930f9f2bbb88a..8905b0dbd22891485ce6d5cae8144ca03ac34ad0 100644 (file)
@@ -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.  */