Go to the documentation of this file.
36 #define GRPC_COMBINER_TRACE(fn) \
38 if (grpc_combiner_trace.enabled()) { \
43 #define STATE_UNORPHANED 1
44 #define STATE_ELEM_COUNT_LOW_BIT 2
73 GPR_INFO,
"C:%p really_destroy old_state=%" PRIdPTR, lock, old_state));
80 #define GRPC_COMBINER_DEBUG_SPAM(op, delta) \
81 if (grpc_combiner_trace.enabled()) { \
82 gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG, \
83 "C:%p %s %" PRIdPTR " --> %" PRIdPTR " %s", lock, (op), \
84 gpr_atm_no_barrier_load(&lock->refs.count), \
85 gpr_atm_no_barrier_load(&lock->refs.count) + (delta), reason); \
88 #define GRPC_COMBINER_DEBUG_SPAM(op, delta)
131 "C:%p grpc_combiner_execute c=%p last=%" PRIdPTR,
145 if (initiator != 0 &&
152 #ifdef GRPC_ERROR_IS_ABSEIL_STATUS
184 if (lock ==
nullptr) {
192 "C:%p grpc_combiner_continue_exec_ctx "
194 "exec_ctx_ready_to_finish=%d "
195 "time_to_execute_final_list=%d",
231 #ifdef GRPC_ERROR_IS_ABSEIL_STATUS
248 while (
c !=
nullptr) {
253 c->scheduled =
false;
255 #ifdef GRPC_ERROR_IS_ABSEIL_STATUS
258 c->error_data.error = 0;
263 c->error_data.error = 0;
276 gpr_log(
GPR_INFO,
"C:%p finish old_state=%" PRIdPTR, lock, old_state));
278 #define OLD_STATE_WAS(orphaned, elem_count) \
279 (((orphaned) ? 0 : STATE_UNORPHANED) | \
280 ((elem_count)*STATE_ELEM_COUNT_LOW_BIT))
318 GPR_INFO,
"C:%p grpc_combiner_execute_finally c=%p; ac=%p", lock,
closure,
#define GRPC_CLOSURE_INIT(closure, cb, cb_arg, scheduler)
#define gpr_atm_no_barrier_load(p)
#define gpr_atm_full_fetch_add(p, delta)
#define gpr_atm_no_barrier_store(p, value)
CombinerData * combiner_data()
static bool IsThreadedDefault()
uintptr_t StatusAllocHeapPtr(absl::Status s)
static void start_destroy(grpc_core::Combiner *lock)
grpc_core::ManualConstructor< grpc_core::MultiProducerSingleConsumerQueue::Node > mpscq_node
Combiner * next_combiner_on_this_exec_ctx
#define GRPC_CLOSURE_CREATE(cb, cb_arg, scheduler)
bool grpc_iomgr_platform_is_any_background_poller_thread()
static void Run(grpc_closure *closure, grpc_error_handle error, ExecutorType executor_type=ExecutorType::DEFAULT, ExecutorJobType job_type=ExecutorJobType::SHORT)
bool grpc_closure_list_append(grpc_closure_list *closure_list, grpc_closure *closure)
MultiProducerSingleConsumerQueue queue
static void push_last_on_exec_ctx(grpc_core::Combiner *lock)
grpc_core::Combiner * grpc_combiner_create(void)
grpc_core::Combiner * grpc_combiner_ref(grpc_core::Combiner *lock GRPC_COMBINER_DEBUG_ARGS)
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
union grpc_closure::@14 next_data
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
#define gpr_atm_acq_load(p)
grpc_core::DebugOnlyTraceFlag grpc_combiner_trace(false, "combiner")
bool grpc_combiner_continue_exec_ctx()
void Run(grpc_closure *closure, grpc_error_handle error)
static void queue_offload(grpc_core::Combiner *lock)
_W64 unsigned int uintptr_t
void grpc_closure_list_init(grpc_closure_list *closure_list)
gpr_atm initiating_exec_ctx_or_null
#define GRPC_COMBINER_DEBUG_SPAM(op, delta)
static void push_first_on_exec_ctx(grpc_core::Combiner *lock)
static void really_destroy(grpc_core::Combiner *lock)
#define GRPC_ERROR_REF(err)
union grpc_closure::@15 error_data
#define GRPC_COMBINER_TRACE(fn)
AllocList * next[kMaxLevel]
bool time_to_execute_final_list
grpc_closure_list final_list
void FinallyRun(grpc_closure *closure, grpc_error_handle error)
#define GRPC_ERROR_UNREF(err)
absl::Status StatusMoveFromHeapPtr(uintptr_t ptr)
Move the status from a heap ptr. (GetFrom & FreeHeap)
Combiner * active_combiner
#define GRPC_COMBINER_DEBUG_ARGS
static void combiner_finally_exec(grpc_core::Combiner *lock, grpc_closure *closure, grpc_error_handle error)
static void combiner_exec(grpc_core::Combiner *lock, grpc_closure *closure, grpc_error_handle error)
GPRAPI void gpr_ref_init(gpr_refcount *r, int n)
GPRAPI int gpr_unref(gpr_refcount *r)
static void enqueue_finally(void *closure, grpc_error_handle error)
bool grpc_closure_list_empty(grpc_closure_list closure_list)
#define STATE_ELEM_COUNT_LOW_BIT
static void offload(void *arg, grpc_error_handle error)
void grpc_combiner_unref(grpc_core::Combiner *lock GRPC_COMBINER_DEBUG_ARGS)
GPRAPI void gpr_ref(gpr_refcount *r)
#define OLD_STATE_WAS(orphaned, elem_count)
grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:58:50