From: Willy Tarreau Date: Wed, 11 Jul 2007 07:19:31 +0000 (+0200) Subject: [MEDIUM] Added easier support for Doug Lea's malloc (dlmalloc) X-Git-Tag: v1.3.13~50 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f2ef8c50b92c3dbc6d9c0136630e2b729d932a19;p=thirdparty%2Fhaproxy.git [MEDIUM] Added easier support for Doug Lea's malloc (dlmalloc) It's now as easy as passing "DLMALLOC_SRC=" to build with support for dlmalloc. The dlmalloc source is not provided with haproxy in order to ensure that people will use either the most recent, or the most suited version for their platform. The minimal mmap size is specified in DLMALLOC_THRES, which defaults to 4096. It should be increased on platforms with larger pages (eg: 8 kB on some 64 bit systems). --- diff --git a/Makefile b/Makefile index 39fa4d55db..c5c262e5d6 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,10 @@ # This makefile supports different OS and CPU setups. # You should use it this way : # make TARGET=os CPU=cpu REGEX=lib - +# +# Some external components may be build with it, such dlmalloc : +# +# make DLMALLOC_SRC=/usr/local/src/dlmalloc.c # Select target OS. TARGET must match a system for which COPTS and LIBS are # correctly defined below. @@ -180,6 +183,12 @@ ifneq ($(USE_REGPARM),) OPTIONS += -DCONFIG_HAP_USE_REGPARM endif +ifneq ($(DLMALLOC_SRC),) +# May be changed to patch PAGE_SIZE on every platform +DLMALLOC_THRES=4096 +OPT_OBJS += src/dlmalloc.o +endif + ifneq ($(VERSION),) OPTIONS += -DCONFIG_HAPROXY_VERSION=\"$(VERSION)$(SUBVERS)\" endif @@ -228,6 +237,9 @@ objsize: haproxy %.o: %.c $(CC) $(CFLAGS) -c -o $@ $< +src/dlmalloc.o: $(DLMALLOC_SRC) + $(CC) $(CFLAGS) -DDEFAULT_MMAP_THRESHOLD=$(DLMALLOC_THRES) -c -o $@ $< + clean: rm -f *.[oas] src/*.[oas] core haproxy test for dir in . src include/* doc; do rm -f $$dir/*~ $$dir/*.rej;done diff --git a/Makefile.bsd b/Makefile.bsd index 14e70f4637..025bc4593f 100644 --- a/Makefile.bsd +++ b/Makefile.bsd @@ -1,6 +1,11 @@ # This makefile is dedicated to OpenBSD (and possibly other BSDs) # You should use it this way : # make TARGET=os CPU=cpu +# +# Some optional components may be added, such as DLMALLOC : +# +# make TARGET=freebsd CPU=i686 DLMALLOC_SRC=/usr/local/src/dlmalloc.c \ +# OPT_OBJS=src/dlmalloc.o VERSION := 1.3.12 @@ -66,11 +71,17 @@ SMALL_OPTS = -DBUFSIZE=8030 -DMAXREWRITE=1030 -DSYSTEM_MAXCONN=1024 ADDINC = ADDLIB = +# redefine this if you want to add some special .o files +OPT_OBJS = + # set some defines when needed. # Known ones are -DENABLE_POLL # - use -DTPROXY to compile with transparent proxy support. DEFINE = -DTPROXY +# May be changed to patch PAGE_SIZE on every platform when using dlmalloc +DLMALLOC_THRES=4096 + # global options TARGET_OPTS=$(COPTS.$(TARGET)) REGEX_OPTS=$(COPTS.$(REGEX)) @@ -92,7 +103,7 @@ OBJS = src/haproxy.o src/list.o src/chtbl.o src/hashpjw.o src/base64.o \ all: haproxy -haproxy: $(OBJS) +haproxy: $(OBJS) $(OPT_OBJS) $(LD) $(LDFLAGS) -o $@ $> $(LIBS) .SUFFIXES: .c.o @@ -100,6 +111,9 @@ haproxy: $(OBJS) .c.o: $(CC) $(CFLAGS) -c -o $@ $> +src/dlmalloc.o: $(DLMALLOC_SRC) + $(CC) $(CFLAGS) -DDEFAULT_MMAP_THRESHOLD=$(DLMALLOC_THRES) -c -o $@ $> + clean: rm -f *.[oas] src/*.[oas] core haproxy test for dir in . src include/* doc; do rm -f $$dir/*~ $$dir/*.rej;done diff --git a/Makefile.osx b/Makefile.osx index 0a2aa74363..f588478545 100644 --- a/Makefile.osx +++ b/Makefile.osx @@ -1,6 +1,11 @@ # This makefile is dedicated to darwin (and possibly other BSDs) # You should use it this way : # make TARGET=os CPU=cpu +# +# Some optional components may be added, such as DLMALLOC : +# +# make DLMALLOC_SRC=/usr/local/src/dlmalloc.c \ +# OPT_OBJS=src/dlmalloc.o VERSION := 1.3.12 @@ -71,6 +76,9 @@ ADDLIB = # - use -DTPROXY to compile with transparent proxy support. DEFINE = -DTPROXY +# May be changed to patch PAGE_SIZE on every platform when using dlmalloc +DLMALLOC_THRES=4096 + # global options TARGET_OPTS=$(COPTS.$(TARGET)) REGEX_OPTS=$(COPTS.$(REGEX)) @@ -100,6 +108,9 @@ haproxy: $(OBJS) .c.o: $(CC) $(CFLAGS) -c -o $@ $< +src/dlmalloc.o: $(DLMALLOC_SRC) + $(CC) $(CFLAGS) -DDEFAULT_MMAP_THRESHOLD=$(DLMALLOC_THRES) -c -o $@ $< + clean: rm -f *.[oas] src/*.[oas] core haproxy test for dir in . src include/* doc; do rm -f $$dir/*~ $$dir/*.rej;done