I assume this means you think the backtrace function built into glibc is thread safe?
Acked-by: Ethan Jackson <[email protected]> On Thu, Jun 13, 2013 at 5:15 PM, Ben Pfaff <[email protected]> wrote: > This variant was Linux-specific, GCC-specific, only worked on > architectures with frame pointers (possibly only on i386?), and isn't used > with glibc anyway. Remove it. > > Signed-off-by: Ben Pfaff <[email protected]> > --- > lib/backtrace.c | 86 +----------------------------------------------------- > 1 files changed, 2 insertions(+), 84 deletions(-) > > diff --git a/lib/backtrace.c b/lib/backtrace.c > index c6829d7..861a109 100644 > --- a/lib/backtrace.c > +++ b/lib/backtrace.c > @@ -1,5 +1,5 @@ > /* > - * Copyright (c) 2008, 2009, 2010, 2011 Nicira, Inc. > + * Copyright (c) 2008, 2009, 2010, 2011, 2013 Nicira, Inc. > * > * Licensed under the Apache License, Version 2.0 (the "License"); > * you may not use this file except in compliance with the License. > @@ -18,16 +18,6 @@ > > #include "backtrace.h" > > -#include <errno.h> > -#include <inttypes.h> > -#include <stdbool.h> > -#include <stdio.h> > - > -#include "compiler.h" > -#include "vlog.h" > - > -VLOG_DEFINE_THIS_MODULE(backtrace); > - > #ifdef HAVE_BACKTRACE > #include <execinfo.h> > void > @@ -41,79 +31,7 @@ backtrace_capture(struct backtrace *b) > b->frames[i] = (uintptr_t) frames[i]; > } > } > -#elif __GNUC__ > -static uintptr_t > -get_max_stack(void) > -{ > - static const char file_name[] = "/proc/self/maps"; > - char line[1024]; > - int line_number; > - FILE *f; > - > - f = fopen(file_name, "r"); > - if (f == NULL) { > - VLOG_WARN("opening %s failed: %s", file_name, strerror(errno)); > - return -1; > - } > - > - for (line_number = 1; fgets(line, sizeof line, f); line_number++) { > - if (strstr(line, "[stack]")) { > - uintptr_t end; > - if (sscanf(line, "%*x-%"SCNxPTR, &end) != 1) { > - VLOG_WARN("%s:%d: parse error", file_name, line_number); > - continue; > - } > - fclose(f); > - return end; > - } > - } > - fclose(f); > - > - VLOG_WARN("%s: no stack found", file_name); > - return -1; > -} > - > -static uintptr_t > -stack_high(void) > -{ > - static uintptr_t high; > - if (!high) { > - high = get_max_stack(); > - } > - return high; > -} > - > -static uintptr_t > -stack_low(void) > -{ > - uintptr_t low = (uintptr_t) &low; > - return low; > -} > - > -static bool > -in_stack(void *p) > -{ > - uintptr_t address = (uintptr_t) p; > - return address >= stack_low() && address < stack_high(); > -} > - > -void > -backtrace_capture(struct backtrace *backtrace) > -{ > - void **frame; > - size_t n; > - > - n = 0; > - for (frame = __builtin_frame_address(1); > - frame != NULL && in_stack(frame) && frame[0] != NULL > - && n < BACKTRACE_MAX_FRAMES; > - frame = frame[0]) > - { > - backtrace->frames[n++] = (uintptr_t) frame[1]; > - } > - backtrace->n_frames = n; > -} > -#else /* !HAVE_BACKTRACE && !__GNUC__ */ > +#else > void > backtrace_capture(struct backtrace *backtrace) > { > -- > 1.7.2.5 > > _______________________________________________ > dev mailing list > [email protected] > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
