#include <grpc/support/port_platform.h>
#include "src/core/lib/surface/init.h"
#include <limits.h>
#include "absl/base/thread_annotations.h"
#include <grpc/fork.h>
#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
#include <grpc/support/log.h>
#include <grpc/support/sync.h>
#include <grpc/support/time.h>
#include "src/core/ext/filters/client_channel/backup_poller.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/channel_stack_builder.h"
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/debug/trace.h"
#include "src/core/lib/event_engine/forkable.h"
#include "src/core/lib/event_engine/posix_engine/timer_manager.h"
#include "src/core/lib/experiments/config.h"
#include "src/core/lib/gprpp/fork.h"
#include "src/core/lib/gprpp/sync.h"
#include "src/core/lib/gprpp/thd.h"
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/iomgr.h"
#include "src/core/lib/iomgr/timer_manager.h"
#include "src/core/lib/security/authorization/grpc_server_authz_filter.h"
#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/security/security_connector/security_connector.h"
#include "src/core/lib/security/transport/auth_filters.h"
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/surface/channel_stack_type.h"
#include "src/core/lib/surface/init_internally.h"
void grpc_resolver_dns_ares_init(void);
void grpc_resolver_dns_ares_shutdown(void);
#define MAX_PLUGINS …
static gpr_once g_basic_init = …;
static grpc_core::Mutex* g_init_mu;
static int g_initializations ABSL_GUARDED_BY(g_init_mu) = …;
static grpc_core::CondVar* g_shutting_down_cv;
static bool g_shutting_down ABSL_GUARDED_BY(g_init_mu) = …;
static bool maybe_prepend_client_auth_filter(
grpc_core::ChannelStackBuilder* builder) { … }
static bool maybe_prepend_server_auth_filter(
grpc_core::ChannelStackBuilder* builder) { … }
static bool maybe_prepend_grpc_server_authz_filter(
grpc_core::ChannelStackBuilder* builder) { … }
namespace grpc_core {
void RegisterSecurityFilters(CoreConfiguration::Builder* builder) { … }
}
static void do_basic_init(void) { … }
void grpc_init(void) { … }
void grpc_shutdown_internal_locked(void)
ABSL_EXCLUSIVE_LOCKS_REQUIRED(g_init_mu) { … }
void grpc_shutdown_internal(void* ) { … }
void grpc_shutdown(void) { … }
void grpc_shutdown_blocking(void) { … }
int grpc_is_initialized(void) { … }
void grpc_maybe_wait_for_async_shutdown(void) { … }