Commit db2039c0 authored by Bradley C. Kuszmaul's avatar Bradley C. Kuszmaul Committed by Yoni Fogel

Compile better on linux, and more dlmalloc fixing. Addresses #1343.

git-svn-id: file:///svn/toku/tokudb.1032b+1343@8553 c7de825b-a66e-492c-adef-691d508d4ae1
parent 7372787c
......@@ -38,8 +38,7 @@ summarize: check
check: $(CHECKS)
clean:
$(MAYBEATSIGN)for d in $(SRCDIRS); do (cd $$d && $(MAKE) -k clean); done
clean: $(patsubst %,%.dir.clean,$(SRCDIRS))
$(MAYBEATSIGN)rm -rf lib/*.$(SOEXT) lib/*.$(AEXT)
install:
......
# -*- Mode: Makefile -*-
#ident "Copyright (c) 2007 Tokutek Inc. All rights reserved."
# standard build: make
# build with Berkeley DB 4.1: make BDBDIR=/usr/local/BerkeleyDB.4.1
# build with TokuDB: make BDBDIR=~/svn/tokudb
# build with g++: make CC=g++
.DEFAULT_GOAL= build
TOKUROOT=../
INCLUDEDIRS=-I. -I../ -I$(TOKUROOT)newbrt -I../range_tree -I../lock_tree
DEPEND_COMPILE += \
./*.h \
#end
SKIP_NORETURN=1 #Do not add the -Wmissing-noreturn flag
HERE = db-benchmark-test-cxx
include $(TOKUROOT)include/Makefile.include
BENCHDBS = bench.bdb/ bench.tokudb
......@@ -11,7 +24,7 @@ CXXFLAGS = -Wall -Werror -g $(OPTFLAGS) $(GCOV_FLAGS)
# CFLAGS += -pg
ifdef BDBDIR
BDB_CPPFLAGS = -I$(BDBDIR)/include
BDB_CPPFLAGS = -I$(BDBDIR)/include -DHAVE_CXX_STDHEADERS
BDB_LDFLAGS = -L$(BDBDIR)/lib -ldb_cxx -Wl,-rpath,$(BDBDIR)/lib -lpthread
else
BDB_CPPFLAGS =
......@@ -43,7 +56,7 @@ check-x: $(TARGET_TDB)
$(VALGRIND) ./$(TARGET_TDB) -x $(QUIET) $(SUMMARIZE_CMD)
clean:
rm -rf $(TARGETS) $(BENCHDBS) *.gcno *.gcda *.gcov
$(MAYBEATSIGN)rm -rf $(TARGETS) $(BENCHDBS) *.gcno *.gcda *.gcov
db-benchmark-test-tokudb: ../lib/libtokudb_cxx.a
db-benchmark-test-tokudb: db-benchmark-test.cpp
......
......@@ -29,6 +29,7 @@ void *toku_malloc(size_t size) __attribute__((__visibility__("default")));
// xmalloc aborts instead of return NULL if we run out of memory
void *toku_xmalloc(size_t size);
void *toku_xrealloc(void*, size_t size);
/* toku_tagmalloc() performs a malloc(size), but fills in the first 4 bytes with typ.
* This "tag" is useful if you are debugging and run across a void* that is
......@@ -63,8 +64,8 @@ void *toku_realloc(void *, size_t size) __attribute__((__visibility__("default"
// XMALLOC macros are like MALLOC except they abort if the operation fails
#define XMALLOC(v) v = toku_xmalloc(sizeof(*v))
#define XMALLOC_N(n,v) v = toku_malloc((n)*sizeof(*v))
#define XREALLOC_N(n,v) v = toku_realloc(v, (n)*sizeof(*v))
#define XMALLOC_N(n,v) v = toku_xmalloc((n)*sizeof(*v))
#define XREALLOC_N(n,v) v = toku_xrealloc(v, (n)*sizeof(*v))
/* If you have a type such as
* struct pma *PMA;
......
......@@ -72,7 +72,7 @@ extern "C" {
// Deprecated functions.
#if !defined(TOKU_ALLOW_DEPRECATED)
# if defined(__ICL) //Windows Intel Compiler
# pragma deprecated (fstat, getpid, syscall, sysconf, mkdir, strdup);
# pragma deprecated (fstat, getpid, syscall, sysconf, mkdir, strdup)
# ifndef DONT_DEPRECATE_MALLOC
# pragma deprecated (malloc, free, realloc)
# endif
......@@ -88,11 +88,11 @@ int mkdir() __attribute__((__deprecated__));
char* strdup(const char *) __attribute__((__deprecated__));
#undef __strdup
char* __strdup(const char *) __attribute__((__deprecated__));
#ifndef DONT_DEPRECATE_MALLOC
# ifndef DONT_DEPRECATE_MALLOC
void *malloc(size_t) __attribute__((__deprecated__));
void free(void*) __attribute__((__deprecated__));
void *realloc(void*, size_t) __attribute__((__deprecated__));
#endif
# endif
# endif
#endif
......
......@@ -21,4 +21,5 @@ $(TARGET): $(OBJS)
clean:
$(MAYBEATSIGN)rm -rf $(TARGET) $(LIBPORTABILITY)
build: $(OBJS)
# For build, do nothing
build:
......@@ -44,6 +44,12 @@ void *toku_xmalloc(size_t size) {
return r;
}
void *toku_xrealloc(void *v, size_t size) {
void *r = toku_realloc(v, size);
if (r==0) abort();
return r;
}
void *toku_tagmalloc(size_t size, enum typ_tag typtag) {
//printf("%s:%d tagmalloc\n", __FILE__, __LINE__);
void *r = toku_malloc(size);
......
......@@ -369,4 +369,3 @@ test_main (int argc, const char *argv[]) {
return 0;
}
......@@ -163,4 +163,3 @@ test_main(int argc, const char *argv[]) {
lastmalloced = NULL;
return 0;
}
#include <toku_portability.h>
#include <fcntl.h>
#include "test.h"
DB_ENV * const null_env = 0;
DB *db1, *db2;
DB_TXN * const null_txn = 0;
const char * const fname = ENVDIR "/" "test_db_remove.brt";
void test_db_remove (void) {
int r;
system("rm -rf " ENVDIR);
r=toku_os_mkdir(ENVDIR, S_IRWXU+S_IRWXG+S_IRWXO); assert(r==0);
// create the DB
r = db_create(&db1, null_env, 0); assert(r == 0);
r = db1->open(db1, null_txn, fname, 0, DB_BTREE, DB_CREATE, 0666); assert(r == 0);
// Now remove it.
r = db_create(&db2, null_env, 0); assert(r==0);
r = db2->remove(db2, fname, 0, 0); assert(r==0);
r = db1->close(db1, 0); assert(r==0);
}
int
test_main(int argc, const char *argv[]) {
parse_args(argc, argv);
test_db_remove();
return 0;
}
......@@ -167,6 +167,8 @@ table_prelock(char txn, BOOL success) {
int r;
#if defined USE_TDB && USE_TDB
r = db->pre_acquire_table_lock(db, txns[(int)txn]);
if (success) CKERR(r);
else CKERR2s(r, DB_LOCK_NOTGRANTED, DB_LOCK_DEADLOCK);
#else
DBT key;
DBT data;
......@@ -182,9 +184,9 @@ table_prelock(char txn, BOOL success) {
dbt_init(&data, 0, 0),
DB_NEXT | DB_RMW);
}
#endif
if (success) CKERR(r);
if (success) CKERR2(r, DB_NOTFOUND);
else CKERR2s(r, DB_LOCK_NOTGRANTED, DB_LOCK_DEADLOCK);
#endif
}
static void
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment