diff options
author | 2018-01-24 16:16:23 -0800 | |
---|---|---|
committer | 2018-01-24 16:16:23 -0800 | |
commit | fd900e09fbafad16159617af86ca5b56f4819182 (patch) | |
tree | 8cc6e609fcec3e38e6966143f53cb2bd1d2417df /src/core/lib | |
parent | 401f903151825dc06a90ab145791828276278521 (diff) | |
parent | 7e05426477dbb0235b806ddaa87b6ea95031efdd (diff) |
Merge remote-tracking branch 'upstream/master' into fix-stream-compression-config-interface
Diffstat (limited to 'src/core/lib')
-rw-r--r-- | src/core/lib/gpr/alloc.cc | 4 | ||||
-rw-r--r-- | src/core/lib/gpr/arena.cc | 31 | ||||
-rw-r--r-- | src/core/lib/gpr/fork.cc | 16 | ||||
-rw-r--r-- | src/core/lib/gprpp/README.md (renamed from src/core/lib/gpr++/README.md) | 0 | ||||
-rw-r--r-- | src/core/lib/gprpp/abstract.h (renamed from src/core/lib/gpr++/abstract.h) | 6 | ||||
-rw-r--r-- | src/core/lib/gprpp/atomic.h (renamed from src/core/lib/gpr++/atomic.h) | 10 | ||||
-rw-r--r-- | src/core/lib/gprpp/atomic_with_atm.h (renamed from src/core/lib/gpr++/atomic_with_atm.h) | 6 | ||||
-rw-r--r-- | src/core/lib/gprpp/atomic_with_std.h (renamed from src/core/lib/gpr++/atomic_with_std.h) | 6 | ||||
-rw-r--r-- | src/core/lib/gprpp/debug_location.h (renamed from src/core/lib/gpr++/debug_location.h) | 6 | ||||
-rw-r--r-- | src/core/lib/gprpp/inlined_vector.h (renamed from src/core/lib/gpr++/inlined_vector.h) | 8 | ||||
-rw-r--r-- | src/core/lib/gprpp/manual_constructor.h (renamed from src/core/lib/gpr++/manual_constructor.h) | 4 | ||||
-rw-r--r-- | src/core/lib/gprpp/memory.h (renamed from src/core/lib/gpr++/memory.h) | 6 | ||||
-rw-r--r-- | src/core/lib/gprpp/orphanable.h (renamed from src/core/lib/gpr++/orphanable.h) | 12 | ||||
-rw-r--r-- | src/core/lib/gprpp/ref_counted.h (renamed from src/core/lib/gpr++/ref_counted.h) | 12 | ||||
-rw-r--r-- | src/core/lib/gprpp/ref_counted_ptr.h (renamed from src/core/lib/gpr++/ref_counted_ptr.h) | 8 | ||||
-rw-r--r-- | src/core/lib/iomgr/ev_epoll1_linux.cc | 2 | ||||
-rw-r--r-- | src/core/lib/iomgr/ev_epollex_linux.cc | 2 | ||||
-rw-r--r-- | src/core/lib/iomgr/ev_epollsig_linux.cc | 2 | ||||
-rw-r--r-- | src/core/lib/surface/lame_client.cc | 2 | ||||
-rw-r--r-- | src/core/lib/surface/version.cc | 2 |
20 files changed, 89 insertions, 56 deletions
diff --git a/src/core/lib/gpr/alloc.cc b/src/core/lib/gpr/alloc.cc index 518bdb99f7..000b7dcb25 100644 --- a/src/core/lib/gpr/alloc.cc +++ b/src/core/lib/gpr/alloc.cc @@ -90,8 +90,8 @@ void* gpr_realloc(void* p, size_t size) { return p; } -void* gpr_malloc_aligned(size_t size, size_t alignment_log) { - size_t alignment = ((size_t)1) << alignment_log; +void* gpr_malloc_aligned(size_t size, size_t alignment) { + GPR_ASSERT(((alignment - 1) & alignment) == 0); // Must be power of 2. size_t extra = alignment - 1 + sizeof(void*); void* p = gpr_malloc(size + extra); void** ret = (void**)(((uintptr_t)p + extra) & ~(alignment - 1)); diff --git a/src/core/lib/gpr/arena.cc b/src/core/lib/gpr/arena.cc index 177c176732..687592a140 100644 --- a/src/core/lib/gpr/arena.cc +++ b/src/core/lib/gpr/arena.cc @@ -17,11 +17,19 @@ */ #include "src/core/lib/gpr/arena.h" + +#include <string.h> + #include <grpc/support/alloc.h> #include <grpc/support/atm.h> #include <grpc/support/log.h> #include <grpc/support/useful.h> +// TODO(roth): We currently assume that all callers need alignment of 16 +// bytes, which may be wrong in some cases. As part of converting the +// arena API to C++, we should consider replacing gpr_arena_alloc() with a +// template that takes the type of the value being allocated, which +// would allow us to use the alignment actually needed by the caller. #define ROUND_UP_TO_ALIGNMENT_SIZE(x) \ (((x) + GPR_MAX_ALIGNMENT - 1u) & ~(GPR_MAX_ALIGNMENT - 1u)) @@ -36,9 +44,16 @@ struct gpr_arena { zone initial_zone; }; +static void* zalloc_aligned(size_t size) { + void* ptr = gpr_malloc_aligned(size, GPR_MAX_ALIGNMENT); + memset(ptr, 0, size); + return ptr; +} + gpr_arena* gpr_arena_create(size_t initial_size) { initial_size = ROUND_UP_TO_ALIGNMENT_SIZE(initial_size); - gpr_arena* a = (gpr_arena*)gpr_zalloc(sizeof(gpr_arena) + initial_size); + gpr_arena* a = (gpr_arena*)zalloc_aligned( + ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(gpr_arena)) + initial_size); a->initial_zone.size_end = initial_size; return a; } @@ -46,10 +61,10 @@ gpr_arena* gpr_arena_create(size_t initial_size) { size_t gpr_arena_destroy(gpr_arena* arena) { gpr_atm size = gpr_atm_no_barrier_load(&arena->size_so_far); zone* z = (zone*)gpr_atm_no_barrier_load(&arena->initial_zone.next_atm); - gpr_free(arena); + gpr_free_aligned(arena); while (z) { zone* next_z = (zone*)gpr_atm_no_barrier_load(&z->next_atm); - gpr_free(z); + gpr_free_aligned(z); z = next_z; } return (size_t)size; @@ -64,11 +79,12 @@ void* gpr_arena_alloc(gpr_arena* arena, size_t size) { zone* next_z = (zone*)gpr_atm_acq_load(&z->next_atm); if (next_z == nullptr) { size_t next_z_size = (size_t)gpr_atm_no_barrier_load(&arena->size_so_far); - next_z = (zone*)gpr_zalloc(sizeof(zone) + next_z_size); + next_z = (zone*)zalloc_aligned(ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(zone)) + + next_z_size); next_z->size_begin = z->size_end; next_z->size_end = z->size_end + next_z_size; if (!gpr_atm_rel_cas(&z->next_atm, (gpr_atm)NULL, (gpr_atm)next_z)) { - gpr_free(next_z); + gpr_free_aligned(next_z); next_z = (zone*)gpr_atm_acq_load(&z->next_atm); } } @@ -79,5 +95,8 @@ void* gpr_arena_alloc(gpr_arena* arena, size_t size) { } GPR_ASSERT(start >= z->size_begin); GPR_ASSERT(start + size <= z->size_end); - return ((char*)(z + 1)) + start - z->size_begin; + char* ptr = (z == &arena->initial_zone) + ? (char*)arena + ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(gpr_arena)) + : (char*)z + ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(zone)); + return ptr + start - z->size_begin; } diff --git a/src/core/lib/gpr/fork.cc b/src/core/lib/gpr/fork.cc index c47e686378..92023f4350 100644 --- a/src/core/lib/gpr/fork.cc +++ b/src/core/lib/gpr/fork.cc @@ -38,18 +38,32 @@ void grpc_fork_support_init() { fork_support_enabled = 1; #else fork_support_enabled = 0; +#endif + bool env_var_set = false; char* env = gpr_getenv("GRPC_ENABLE_FORK_SUPPORT"); if (env != nullptr) { static const char* truthy[] = {"yes", "Yes", "YES", "true", "True", "TRUE", "1"}; + static const char* falsey[] = {"no", "No", "NO", "false", + "False", "FALSE", "0"}; for (size_t i = 0; i < GPR_ARRAY_SIZE(truthy); i++) { if (0 == strcmp(env, truthy[i])) { fork_support_enabled = 1; + env_var_set = true; + break; + } + } + if (!env_var_set) { + for (size_t i = 0; i < GPR_ARRAY_SIZE(falsey); i++) { + if (0 == strcmp(env, falsey[i])) { + fork_support_enabled = 0; + env_var_set = true; + break; + } } } gpr_free(env); } -#endif if (override_fork_support_enabled != -1) { fork_support_enabled = override_fork_support_enabled; } diff --git a/src/core/lib/gpr++/README.md b/src/core/lib/gprpp/README.md index eab018bb31..eab018bb31 100644 --- a/src/core/lib/gpr++/README.md +++ b/src/core/lib/gprpp/README.md diff --git a/src/core/lib/gpr++/abstract.h b/src/core/lib/gprpp/abstract.h index 51d7572302..cc96edc49b 100644 --- a/src/core/lib/gpr++/abstract.h +++ b/src/core/lib/gprpp/abstract.h @@ -16,8 +16,8 @@ * */ -#ifndef GRPC_CORE_LIB_GPRXX_ABSTRACT_H -#define GRPC_CORE_LIB_GPRXX_ABSTRACT_H +#ifndef GRPC_CORE_LIB_GPRPP_ABSTRACT_H +#define GRPC_CORE_LIB_GPRPP_ABSTRACT_H // This is needed to support abstract base classes in the c core. Since gRPC // doesn't have a c++ runtime, it will hit a linker error on delete unless @@ -31,4 +31,4 @@ #define GRPC_ABSTRACT \ { GPR_ASSERT(false); } -#endif /* GRPC_CORE_LIB_GPRXX_ABSTRACT_H */ +#endif /* GRPC_CORE_LIB_GPRPP_ABSTRACT_H */ diff --git a/src/core/lib/gpr++/atomic.h b/src/core/lib/gprpp/atomic.h index d68ccea864..8b08fc4e9c 100644 --- a/src/core/lib/gpr++/atomic.h +++ b/src/core/lib/gprpp/atomic.h @@ -16,15 +16,15 @@ * */ -#ifndef GRPC_CORE_LIB_GPRXX_ATOMIC_H -#define GRPC_CORE_LIB_GPRXX_ATOMIC_H +#ifndef GRPC_CORE_LIB_GPRPP_ATOMIC_H +#define GRPC_CORE_LIB_GPRPP_ATOMIC_H #include <grpc/support/port_platform.h> #ifdef GPR_HAS_CXX11_ATOMIC -#include "src/core/lib/gpr++/atomic_with_std.h" +#include "src/core/lib/gprpp/atomic_with_std.h" #else -#include "src/core/lib/gpr++/atomic_with_atm.h" +#include "src/core/lib/gprpp/atomic_with_atm.h" #endif -#endif /* GRPC_CORE_LIB_GPRXX_ATOMIC_H */ +#endif /* GRPC_CORE_LIB_GPRPP_ATOMIC_H */ diff --git a/src/core/lib/gpr++/atomic_with_atm.h b/src/core/lib/gprpp/atomic_with_atm.h index 09490e8148..6abf0bc38d 100644 --- a/src/core/lib/gpr++/atomic_with_atm.h +++ b/src/core/lib/gprpp/atomic_with_atm.h @@ -16,8 +16,8 @@ * */ -#ifndef GRPC_CORE_LIB_GPRXX_ATOMIC_WITH_ATM_H -#define GRPC_CORE_LIB_GPRXX_ATOMIC_WITH_ATM_H +#ifndef GRPC_CORE_LIB_GPRPP_ATOMIC_WITH_ATM_H +#define GRPC_CORE_LIB_GPRPP_ATOMIC_WITH_ATM_H #include <grpc/support/atm.h> @@ -52,4 +52,4 @@ class atomic<bool> { } // namespace grpc_core -#endif /* GRPC_CORE_LIB_GPRXX_ATOMIC_WITH_ATM_H */ +#endif /* GRPC_CORE_LIB_GPRPP_ATOMIC_WITH_ATM_H */ diff --git a/src/core/lib/gpr++/atomic_with_std.h b/src/core/lib/gprpp/atomic_with_std.h index b6ff90655e..83322b81c1 100644 --- a/src/core/lib/gpr++/atomic_with_std.h +++ b/src/core/lib/gprpp/atomic_with_std.h @@ -16,8 +16,8 @@ * */ -#ifndef GRPC_CORE_LIB_GPRXX_ATOMIC_WITH_STD_H -#define GRPC_CORE_LIB_GPRXX_ATOMIC_WITH_STD_H +#ifndef GRPC_CORE_LIB_GPRPP_ATOMIC_WITH_STD_H +#define GRPC_CORE_LIB_GPRPP_ATOMIC_WITH_STD_H #include <atomic> @@ -30,4 +30,4 @@ typedef std::memory_order memory_order; } // namespace grpc_core -#endif /* GRPC_CORE_LIB_GPRXX_ATOMIC_WITH_STD_H */ +#endif /* GRPC_CORE_LIB_GPRPP_ATOMIC_WITH_STD_H */ diff --git a/src/core/lib/gpr++/debug_location.h b/src/core/lib/gprpp/debug_location.h index 5a8665ce19..287761beaf 100644 --- a/src/core/lib/gpr++/debug_location.h +++ b/src/core/lib/gprpp/debug_location.h @@ -16,8 +16,8 @@ * */ -#ifndef GRPC_CORE_LIB_GPRXX_DEBUG_LOCATION_H -#define GRPC_CORE_LIB_GPRXX_DEBUG_LOCATION_H +#ifndef GRPC_CORE_LIB_GPRPP_DEBUG_LOCATION_H +#define GRPC_CORE_LIB_GPRPP_DEBUG_LOCATION_H namespace grpc_core { @@ -49,4 +49,4 @@ class DebugLocation { } // namespace grpc_core -#endif /* GRPC_CORE_LIB_GPRXX_DEBUG_LOCATION_H */ +#endif /* GRPC_CORE_LIB_GPRPP_DEBUG_LOCATION_H */ diff --git a/src/core/lib/gpr++/inlined_vector.h b/src/core/lib/gprpp/inlined_vector.h index 17ee9e16bb..b78f85b893 100644 --- a/src/core/lib/gpr++/inlined_vector.h +++ b/src/core/lib/gprpp/inlined_vector.h @@ -16,12 +16,12 @@ * */ -#ifndef GRPC_CORE_LIB_GPRXX_INLINED_VECTOR_H -#define GRPC_CORE_LIB_GPRXX_INLINED_VECTOR_H +#ifndef GRPC_CORE_LIB_GPRPP_INLINED_VECTOR_H +#define GRPC_CORE_LIB_GPRPP_INLINED_VECTOR_H #include <cassert> -#include "src/core/lib/gpr++/memory.h" +#include "src/core/lib/gprpp/memory.h" namespace grpc_core { @@ -109,4 +109,4 @@ class InlinedVector { } // namespace grpc_core -#endif /* GRPC_CORE_LIB_GPRXX_INLINED_VECTOR_H */ +#endif /* GRPC_CORE_LIB_GPRPP_INLINED_VECTOR_H */ diff --git a/src/core/lib/gpr++/manual_constructor.h b/src/core/lib/gprpp/manual_constructor.h index a3f006da34..cee38abc1b 100644 --- a/src/core/lib/gpr++/manual_constructor.h +++ b/src/core/lib/gprpp/manual_constructor.h @@ -16,8 +16,8 @@ * */ -#ifndef GRPC_CORE_LIB_GPRXX_MANUAL_CONSTRUCTOR_H -#define GRPC_CORE_LIB_GPRXX_MANUAL_CONSTRUCTOR_H +#ifndef GRPC_CORE_LIB_GPRPP_MANUAL_CONSTRUCTOR_H +#define GRPC_CORE_LIB_GPRPP_MANUAL_CONSTRUCTOR_H // manually construct a region of memory with some type diff --git a/src/core/lib/gpr++/memory.h b/src/core/lib/gprpp/memory.h index 75ed3d6cea..17f42f5983 100644 --- a/src/core/lib/gpr++/memory.h +++ b/src/core/lib/gprpp/memory.h @@ -16,8 +16,8 @@ * */ -#ifndef GRPC_CORE_LIB_GPRXX_MEMORY_H -#define GRPC_CORE_LIB_GPRXX_MEMORY_H +#ifndef GRPC_CORE_LIB_GPRPP_MEMORY_H +#define GRPC_CORE_LIB_GPRPP_MEMORY_H #include <grpc/support/alloc.h> @@ -97,4 +97,4 @@ class Allocator { } // namespace grpc_core -#endif /* GRPC_CORE_LIB_GPRXX_MEMORY_H */ +#endif /* GRPC_CORE_LIB_GPRPP_MEMORY_H */ diff --git a/src/core/lib/gpr++/orphanable.h b/src/core/lib/gprpp/orphanable.h index f106e74dde..50199730c9 100644 --- a/src/core/lib/gpr++/orphanable.h +++ b/src/core/lib/gprpp/orphanable.h @@ -16,8 +16,8 @@ * */ -#ifndef GRPC_CORE_LIB_GPRXX_ORPHANABLE_H -#define GRPC_CORE_LIB_GPRXX_ORPHANABLE_H +#ifndef GRPC_CORE_LIB_GPRPP_ORPHANABLE_H +#define GRPC_CORE_LIB_GPRPP_ORPHANABLE_H #include <grpc/support/log.h> #include <grpc/support/sync.h> @@ -25,9 +25,9 @@ #include <memory> #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr++/abstract.h" -#include "src/core/lib/gpr++/debug_location.h" -#include "src/core/lib/gpr++/memory.h" +#include "src/core/lib/gprpp/abstract.h" +#include "src/core/lib/gprpp/debug_location.h" +#include "src/core/lib/gprpp/memory.h" namespace grpc_core { @@ -168,4 +168,4 @@ class InternallyRefCountedWithTracing : public Orphanable { } // namespace grpc_core -#endif /* GRPC_CORE_LIB_GPRXX_ORPHANABLE_H */ +#endif /* GRPC_CORE_LIB_GPRPP_ORPHANABLE_H */ diff --git a/src/core/lib/gpr++/ref_counted.h b/src/core/lib/gprpp/ref_counted.h index c2ae76c0ae..c68118a71a 100644 --- a/src/core/lib/gpr++/ref_counted.h +++ b/src/core/lib/gprpp/ref_counted.h @@ -16,16 +16,16 @@ * */ -#ifndef GRPC_CORE_LIB_GPRXX_REF_COUNTED_H -#define GRPC_CORE_LIB_GPRXX_REF_COUNTED_H +#ifndef GRPC_CORE_LIB_GPRPP_REF_COUNTED_H +#define GRPC_CORE_LIB_GPRPP_REF_COUNTED_H #include <grpc/support/log.h> #include <grpc/support/sync.h> #include "src/core/lib/debug/trace.h" -#include "src/core/lib/gpr++/abstract.h" -#include "src/core/lib/gpr++/debug_location.h" -#include "src/core/lib/gpr++/memory.h" +#include "src/core/lib/gprpp/abstract.h" +#include "src/core/lib/gprpp/debug_location.h" +#include "src/core/lib/gprpp/memory.h" namespace grpc_core { @@ -130,4 +130,4 @@ class RefCountedWithTracing { } // namespace grpc_core -#endif /* GRPC_CORE_LIB_GPRXX_REF_COUNTED_H */ +#endif /* GRPC_CORE_LIB_GPRPP_REF_COUNTED_H */ diff --git a/src/core/lib/gpr++/ref_counted_ptr.h b/src/core/lib/gprpp/ref_counted_ptr.h index 862294d1aa..dda0f00d79 100644 --- a/src/core/lib/gpr++/ref_counted_ptr.h +++ b/src/core/lib/gprpp/ref_counted_ptr.h @@ -16,12 +16,12 @@ * */ -#ifndef GRPC_CORE_LIB_GPRXX_REF_COUNTED_PTR_H -#define GRPC_CORE_LIB_GPRXX_REF_COUNTED_PTR_H +#ifndef GRPC_CORE_LIB_GPRPP_REF_COUNTED_PTR_H +#define GRPC_CORE_LIB_GPRPP_REF_COUNTED_PTR_H #include <utility> -#include "src/core/lib/gpr++/memory.h" +#include "src/core/lib/gprpp/memory.h" namespace grpc_core { @@ -96,4 +96,4 @@ inline RefCountedPtr<T> MakeRefCounted(Args&&... args) { } // namespace grpc_core -#endif /* GRPC_CORE_LIB_GPRXX_REF_COUNTED_PTR_H */ +#endif /* GRPC_CORE_LIB_GPRPP_REF_COUNTED_PTR_H */ diff --git a/src/core/lib/iomgr/ev_epoll1_linux.cc b/src/core/lib/iomgr/ev_epoll1_linux.cc index 1cb0150f45..42d7cdd348 100644 --- a/src/core/lib/iomgr/ev_epoll1_linux.cc +++ b/src/core/lib/iomgr/ev_epoll1_linux.cc @@ -43,8 +43,8 @@ #include <grpc/support/useful.h> #include "src/core/lib/debug/stats.h" -#include "src/core/lib/gpr++/manual_constructor.h" #include "src/core/lib/gpr/string.h" +#include "src/core/lib/gprpp/manual_constructor.h" #include "src/core/lib/iomgr/block_annotate.h" #include "src/core/lib/iomgr/ev_posix.h" #include "src/core/lib/iomgr/iomgr_internal.h" diff --git a/src/core/lib/iomgr/ev_epollex_linux.cc b/src/core/lib/iomgr/ev_epollex_linux.cc index b81c00ca7a..416e8384b4 100644 --- a/src/core/lib/iomgr/ev_epollex_linux.cc +++ b/src/core/lib/iomgr/ev_epollex_linux.cc @@ -41,8 +41,8 @@ #include <grpc/support/useful.h> #include "src/core/lib/debug/stats.h" -#include "src/core/lib/gpr++/manual_constructor.h" #include "src/core/lib/gpr/spinlock.h" +#include "src/core/lib/gprpp/manual_constructor.h" #include "src/core/lib/iomgr/block_annotate.h" #include "src/core/lib/iomgr/iomgr_internal.h" #include "src/core/lib/iomgr/is_epollexclusive_available.h" diff --git a/src/core/lib/iomgr/ev_epollsig_linux.cc b/src/core/lib/iomgr/ev_epollsig_linux.cc index 11c64d080c..1518348992 100644 --- a/src/core/lib/iomgr/ev_epollsig_linux.cc +++ b/src/core/lib/iomgr/ev_epollsig_linux.cc @@ -43,7 +43,7 @@ #include <grpc/support/useful.h> #include "src/core/lib/debug/stats.h" -#include "src/core/lib/gpr++/manual_constructor.h" +#include "src/core/lib/gprpp/manual_constructor.h" #include "src/core/lib/iomgr/block_annotate.h" #include "src/core/lib/iomgr/ev_posix.h" #include "src/core/lib/iomgr/iomgr_internal.h" diff --git a/src/core/lib/surface/lame_client.cc b/src/core/lib/surface/lame_client.cc index 27a2a4eeb6..a1f1cf1107 100644 --- a/src/core/lib/surface/lame_client.cc +++ b/src/core/lib/surface/lame_client.cc @@ -23,7 +23,7 @@ #include <grpc/support/alloc.h> #include <grpc/support/log.h> -#include "src/core/lib/gpr++/atomic.h" +#include "src/core/lib/gprpp/atomic.h" #include "src/core/lib/channel/channel_stack.h" #include "src/core/lib/gpr/string.h" diff --git a/src/core/lib/surface/version.cc b/src/core/lib/surface/version.cc index 7d36c6c9e1..19498a6df7 100644 --- a/src/core/lib/surface/version.cc +++ b/src/core/lib/surface/version.cc @@ -23,4 +23,4 @@ const char* grpc_version_string(void) { return "5.0.0-dev"; } -const char* grpc_g_stands_for(void) { return "glossy"; } +const char* grpc_g_stands_for(void) { return "glamorous"; } |