grpc 1.33.0.pre1 → 1.34.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +342 -134
- data/include/grpc/grpc.h +1 -2
- data/include/grpc/grpc_security.h +149 -172
- data/include/grpc/impl/codegen/grpc_types.h +9 -2
- data/include/grpc/impl/codegen/port_platform.h +22 -55
- data/src/core/ext/filters/client_channel/client_channel.cc +11 -34
- data/src/core/ext/filters/client_channel/config_selector.h +2 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +4 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +5 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +80 -71
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +47 -17
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +8 -5
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +16 -243
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +809 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +20 -25
- data/src/core/ext/filters/client_channel/resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver.h +4 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +20 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +66 -7
- data/src/core/ext/filters/client_channel/resolver_registry.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +13 -25
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +1 -1
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +2 -2
- data/src/core/ext/filters/client_channel/retry_throttle.h +1 -1
- data/src/core/ext/filters/client_channel/server_address.h +0 -4
- data/src/core/ext/filters/client_channel/service_config.cc +3 -1
- data/src/core/ext/filters/client_channel/service_config.h +1 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +18 -15
- data/src/core/ext/filters/client_channel/subchannel.h +2 -2
- data/src/core/ext/filters/client_channel/subchannel_interface.h +7 -15
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -2
- data/src/core/ext/filters/deadline/deadline_filter.cc +83 -77
- data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
- data/src/core/ext/filters/http/client/http_client_filter.cc +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
- data/src/core/ext/filters/max_age/max_age_filter.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +17 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +4 -24
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -8
- data/src/core/ext/transport/chttp2/transport/internal.h +0 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/writing.cc +1 -2
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +38 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +254 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +558 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +133 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +266 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +125 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +228 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +80 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +110 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +190 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +185 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +97 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +915 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +280 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +511 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +166 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +105 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +249 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +152 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +83 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +82 -0
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +83 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +86 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +73 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +38 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +68 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +307 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
- data/src/core/ext/xds/certificate_provider_factory.h +7 -5
- data/src/core/ext/xds/certificate_provider_store.cc +84 -0
- data/src/core/ext/xds/certificate_provider_store.h +65 -8
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +119 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +72 -0
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +28 -140
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +6 -4
- data/src/core/ext/xds/xds_api.cc +241 -718
- data/src/core/ext/xds/xds_api.h +50 -9
- data/src/core/ext/xds/xds_bootstrap.cc +172 -25
- data/src/core/ext/xds/xds_bootstrap.h +23 -7
- data/src/core/ext/xds/xds_certificate_provider.cc +240 -0
- data/src/core/ext/xds/xds_certificate_provider.h +74 -0
- data/src/core/ext/xds/xds_client.cc +161 -128
- data/src/core/ext/xds/xds_client.h +12 -11
- data/src/core/ext/xds/xds_client_stats.cc +41 -4
- data/src/core/ext/xds/xds_client_stats.h +2 -2
- data/src/core/lib/channel/channel_args.cc +2 -1
- data/src/core/lib/channel/channel_trace.cc +4 -2
- data/src/core/lib/channel/channelz.h +2 -2
- data/src/core/lib/channel/handshaker.h +2 -2
- data/src/core/lib/compression/compression.cc +8 -4
- data/src/core/lib/compression/compression_internal.cc +10 -5
- data/src/core/lib/compression/compression_internal.h +2 -1
- data/src/core/lib/compression/stream_compression_identity.cc +1 -3
- data/src/core/lib/debug/stats_data.cc +1 -0
- data/src/core/lib/gpr/cpu_iphone.cc +10 -2
- data/src/core/lib/gpr/log_linux.cc +17 -3
- data/src/core/lib/gpr/log_posix.cc +13 -1
- data/src/core/lib/gpr/log_windows.cc +16 -4
- data/src/core/lib/gpr/murmur_hash.cc +1 -1
- data/src/core/lib/gpr/string.cc +1 -1
- data/src/core/lib/gpr/time_precise.cc +3 -2
- data/src/core/lib/gpr/tls.h +4 -0
- data/src/core/lib/gpr/tls_msvc.h +2 -0
- data/src/core/lib/gpr/tls_stdcpp.h +48 -0
- data/src/core/lib/gpr/useful.h +5 -4
- data/src/core/lib/gprpp/dual_ref_counted.h +44 -49
- data/src/core/lib/gprpp/examine_stack.cc +43 -0
- data/src/core/lib/gprpp/examine_stack.h +46 -0
- data/src/core/lib/gprpp/fork.cc +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +1 -1
- data/src/core/lib/gprpp/orphanable.h +4 -8
- data/src/core/lib/gprpp/ref_counted.h +40 -46
- data/src/core/lib/gprpp/ref_counted_ptr.h +9 -11
- data/src/core/lib/{security/authorization/mock_cel/statusor.h → gprpp/stat.h} +13 -25
- data/src/core/lib/gprpp/stat_posix.cc +49 -0
- data/src/core/lib/gprpp/stat_windows.cc +48 -0
- data/src/core/lib/gprpp/thd.h +2 -2
- data/src/core/lib/gprpp/thd_posix.cc +36 -36
- data/src/core/lib/http/parser.cc +46 -25
- data/src/core/lib/iomgr/error.cc +2 -1
- data/src/core/lib/iomgr/ev_epollex_linux.cc +8 -4
- data/src/core/lib/iomgr/exec_ctx.cc +1 -1
- data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
- data/src/core/lib/iomgr/executor/threadpool.h +3 -3
- data/src/core/lib/iomgr/parse_address.cc +84 -6
- data/src/core/lib/iomgr/parse_address.h +20 -0
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
- data/src/core/lib/iomgr/python_util.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
- data/src/core/lib/iomgr/tcp_posix.cc +3 -2
- data/src/core/lib/iomgr/timer_custom.cc +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +27 -15
- data/src/core/lib/iomgr/unix_sockets_posix.h +5 -0
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +7 -0
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/json/json.h +2 -2
- data/src/core/lib/json/json_reader.cc +8 -4
- data/src/core/lib/json/json_util.h +167 -0
- data/src/core/lib/json/json_writer.cc +2 -1
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +3 -1
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +5 -4
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +4 -0
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +6 -6
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +10 -9
- data/src/core/lib/security/context/security_context.h +3 -1
- data/src/core/lib/security/credentials/credentials.cc +1 -1
- data/src/core/lib/security/credentials/credentials.h +3 -3
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +208 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.h +73 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +311 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.h +118 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +136 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +211 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +59 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +51 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +35 -5
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +12 -8
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +78 -0
- data/src/core/lib/security/{certificate_provider.h → credentials/tls/grpc_tls_certificate_provider.h} +32 -18
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +77 -149
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +58 -187
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -12
- data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +88 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +70 -0
- data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
- data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -2
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +293 -275
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +106 -61
- data/src/core/lib/security/transport/security_handshaker.cc +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
- data/src/core/lib/security/util/json_util.h +1 -0
- data/src/core/lib/slice/slice.cc +7 -4
- data/src/core/lib/slice/slice_buffer.cc +2 -1
- data/src/core/lib/slice/slice_intern.cc +2 -2
- data/src/core/lib/surface/call.cc +9 -8
- data/src/core/lib/surface/completion_queue.cc +7 -6
- data/src/core/lib/surface/server.cc +4 -2
- data/src/core/lib/surface/server.h +2 -2
- data/src/core/lib/surface/validate_metadata.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/authority_override.h +2 -0
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/byte_stream.h +3 -3
- data/src/core/lib/transport/connectivity_state.h +3 -3
- data/src/core/lib/transport/metadata.h +2 -2
- data/src/core/lib/transport/timeout_encoding.cc +4 -4
- data/src/core/lib/transport/transport.cc +5 -3
- data/src/core/lib/transport/transport.h +1 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -3
- data/src/core/tsi/fake_transport_security.cc +1 -0
- data/src/core/tsi/local_transport_security.cc +5 -1
- data/src/core/tsi/local_transport_security.h +6 -7
- data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -1
- data/src/core/tsi/ssl_transport_security.cc +14 -7
- data/src/core/tsi/ssl_transport_security.h +3 -0
- data/src/core/tsi/transport_security.cc +4 -2
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +22 -14
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +36 -24
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +59 -22
- data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
- data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
- data/third_party/abseil-cpp/absl/base/casts.h +9 -6
- data/third_party/abseil-cpp/absl/base/config.h +60 -17
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
- data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +5 -0
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +1 -1
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +29 -1
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
- data/third_party/abseil-cpp/absl/base/macros.h +36 -109
- data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
- data/third_party/abseil-cpp/absl/base/options.h +31 -4
- data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
- data/third_party/abseil-cpp/absl/container/fixed_array.h +42 -25
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +2 -1
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -2
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +49 -29
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +15 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +24 -7
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +35 -11
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +10 -9
- data/third_party/abseil-cpp/absl/container/internal/layout.h +7 -5
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +55 -34
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +5 -4
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +66 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +13 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +43 -24
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +12 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +10 -2
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +22 -1
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +0 -21
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +12 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +100 -20
- data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +1 -1
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
- data/third_party/abseil-cpp/absl/hash/hash.h +6 -5
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +73 -65
- data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
- data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
- data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
- data/third_party/abseil-cpp/absl/status/status.cc +4 -6
- data/third_party/abseil-cpp/absl/status/status.h +502 -113
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +5 -10
- data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +91 -112
- data/third_party/abseil-cpp/absl/strings/cord.h +360 -205
- data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +45 -23
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
- data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
- data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +3 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +3 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +28 -28
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +4 -16
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +8 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -2
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -64
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +15 -6
- data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -9
- data/third_party/abseil-cpp/absl/time/clock.cc +3 -3
- data/third_party/abseil-cpp/absl/time/duration.cc +90 -59
- data/third_party/abseil-cpp/absl/time/format.cc +43 -36
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +26 -16
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +8 -7
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -6
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
- data/third_party/abseil-cpp/absl/time/time.h +15 -16
- data/third_party/abseil-cpp/absl/types/internal/variant.h +4 -4
- data/third_party/abseil-cpp/absl/types/optional.h +9 -9
- data/third_party/abseil-cpp/absl/types/span.h +49 -36
- data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
- data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
- data/third_party/boringssl-with-bazel/err_data.c +340 -336
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +46 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +8 -2
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +90 -63
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +60 -60
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +179 -47
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +14 -14
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +24 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +7 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +55 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +31 -23
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +435 -394
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +35 -0
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +36 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +42 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +67 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +11 -14
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +216 -11
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +53 -11
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +133 -39
- data/third_party/upb/upb/def.c +2169 -0
- data/third_party/upb/upb/def.h +330 -0
- data/third_party/upb/upb/def.hpp +525 -0
- data/third_party/upb/upb/reflection.c +391 -0
- data/third_party/upb/upb/reflection.h +168 -0
- data/third_party/upb/upb/text_encode.c +398 -0
- data/third_party/upb/upb/text_encode.h +35 -0
- metadata +227 -37
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc +0 -571
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
@@ -12,7 +12,7 @@
|
|
12
12
|
// See the License for the specific language governing permissions and
|
13
13
|
// limitations under the License.
|
14
14
|
//
|
15
|
-
// absl::base_internal::
|
15
|
+
// absl::base_internal::invoke(f, args...) is an implementation of
|
16
16
|
// INVOKE(f, args...) from section [func.require] of the C++ standard.
|
17
17
|
//
|
18
18
|
// [func.require]
|
@@ -29,7 +29,7 @@
|
|
29
29
|
// is not one of the types described in the previous item;
|
30
30
|
// 5. f(t1, t2, ..., tN) in all other cases.
|
31
31
|
//
|
32
|
-
// The implementation is SFINAE-friendly: substitution failure within
|
32
|
+
// The implementation is SFINAE-friendly: substitution failure within invoke()
|
33
33
|
// isn't an error.
|
34
34
|
|
35
35
|
#ifndef ABSL_BASE_INTERNAL_INVOKE_H_
|
@@ -170,13 +170,13 @@ struct Invoker {
|
|
170
170
|
|
171
171
|
// The result type of Invoke<F, Args...>.
|
172
172
|
template <typename F, typename... Args>
|
173
|
-
using
|
173
|
+
using invoke_result_t = decltype(Invoker<F, Args...>::type::Invoke(
|
174
174
|
std::declval<F>(), std::declval<Args>()...));
|
175
175
|
|
176
176
|
// Invoke(f, args...) is an implementation of INVOKE(f, args...) from section
|
177
177
|
// [func.require] of the C++ standard.
|
178
178
|
template <typename F, typename... Args>
|
179
|
-
|
179
|
+
invoke_result_t<F, Args...> invoke(F&& f, Args&&... args) {
|
180
180
|
return Invoker<F, Args...>::type::Invoke(std::forward<F>(f),
|
181
181
|
std::forward<Args>(args)...);
|
182
182
|
}
|
@@ -598,7 +598,7 @@ static void *DoAllocWithArena(size_t request, LowLevelAlloc::Arena *arena) {
|
|
598
598
|
section.Leave();
|
599
599
|
result = &s->levels;
|
600
600
|
}
|
601
|
-
|
601
|
+
ABSL_ANNOTATE_MEMORY_IS_UNINITIALIZED(result, request);
|
602
602
|
return result;
|
603
603
|
}
|
604
604
|
|
@@ -18,6 +18,7 @@
|
|
18
18
|
#ifndef ABSL_BASE_INTERNAL_LOW_LEVEL_SCHEDULING_H_
|
19
19
|
#define ABSL_BASE_INTERNAL_LOW_LEVEL_SCHEDULING_H_
|
20
20
|
|
21
|
+
#include "absl/base/internal/raw_logging.h"
|
21
22
|
#include "absl/base/internal/scheduling_mode.h"
|
22
23
|
#include "absl/base/macros.h"
|
23
24
|
|
@@ -29,6 +30,13 @@ extern "C" void __google_enable_rescheduling(bool disable_result);
|
|
29
30
|
|
30
31
|
namespace absl {
|
31
32
|
ABSL_NAMESPACE_BEGIN
|
33
|
+
class CondVar;
|
34
|
+
class Mutex;
|
35
|
+
|
36
|
+
namespace synchronization_internal {
|
37
|
+
int MutexDelay(int32_t c, int mode);
|
38
|
+
} // namespace synchronization_internal
|
39
|
+
|
32
40
|
namespace base_internal {
|
33
41
|
|
34
42
|
class SchedulingHelper; // To allow use of SchedulingGuard.
|
@@ -76,9 +84,23 @@ class SchedulingGuard {
|
|
76
84
|
bool disabled;
|
77
85
|
};
|
78
86
|
|
79
|
-
//
|
87
|
+
// A scoped helper to enable rescheduling temporarily.
|
88
|
+
// REQUIRES: destructor must run in same thread as constructor.
|
89
|
+
class ScopedEnable {
|
90
|
+
public:
|
91
|
+
ScopedEnable();
|
92
|
+
~ScopedEnable();
|
93
|
+
|
94
|
+
private:
|
95
|
+
int scheduling_disabled_depth_;
|
96
|
+
};
|
97
|
+
|
98
|
+
// Access to SchedulingGuard is explicitly permitted.
|
99
|
+
friend class absl::CondVar;
|
100
|
+
friend class absl::Mutex;
|
80
101
|
friend class SchedulingHelper;
|
81
102
|
friend class SpinLock;
|
103
|
+
friend int absl::synchronization_internal::MutexDelay(int32_t c, int mode);
|
82
104
|
|
83
105
|
SchedulingGuard(const SchedulingGuard&) = delete;
|
84
106
|
SchedulingGuard& operator=(const SchedulingGuard&) = delete;
|
@@ -100,6 +122,12 @@ inline void SchedulingGuard::EnableRescheduling(bool /* disable_result */) {
|
|
100
122
|
return;
|
101
123
|
}
|
102
124
|
|
125
|
+
inline SchedulingGuard::ScopedEnable::ScopedEnable()
|
126
|
+
: scheduling_disabled_depth_(0) {}
|
127
|
+
inline SchedulingGuard::ScopedEnable::~ScopedEnable() {
|
128
|
+
ABSL_RAW_CHECK(scheduling_disabled_depth_ == 0, "disable unused warning");
|
129
|
+
}
|
130
|
+
|
103
131
|
} // namespace base_internal
|
104
132
|
ABSL_NAMESPACE_END
|
105
133
|
} // namespace absl
|
@@ -69,7 +69,7 @@
|
|
69
69
|
|
70
70
|
// TODO(gfalcon): We want raw-logging to work on as many platforms as possible.
|
71
71
|
// Explicitly #error out when not ABSL_LOW_LEVEL_WRITE_SUPPORTED, except for a
|
72
|
-
//
|
72
|
+
// selected set of platforms for which we expect not to be able to raw log.
|
73
73
|
|
74
74
|
ABSL_INTERNAL_ATOMIC_HOOK_ATTRIBUTES static absl::base_internal::AtomicHook<
|
75
75
|
absl::raw_logging_internal::LogPrefixHook>
|
@@ -227,7 +227,7 @@ bool RawLoggingFullySupported() {
|
|
227
227
|
#endif // !ABSL_LOW_LEVEL_WRITE_SUPPORTED
|
228
228
|
}
|
229
229
|
|
230
|
-
ABSL_DLL
|
230
|
+
ABSL_INTERNAL_ATOMIC_HOOK_ATTRIBUTES ABSL_DLL
|
231
231
|
absl::base_internal::AtomicHook<InternalLogFunction>
|
232
232
|
internal_log_function(DefaultInternalLog);
|
233
233
|
|
@@ -72,10 +72,12 @@
|
|
72
72
|
//
|
73
73
|
// The API is a subset of the above: each macro only takes two arguments. Use
|
74
74
|
// StrCat if you need to build a richer message.
|
75
|
-
#define ABSL_INTERNAL_LOG(severity, message)
|
76
|
-
do {
|
77
|
-
|
78
|
-
|
75
|
+
#define ABSL_INTERNAL_LOG(severity, message) \
|
76
|
+
do { \
|
77
|
+
constexpr const char* absl_raw_logging_internal_filename = __FILE__; \
|
78
|
+
::absl::raw_logging_internal::internal_log_function( \
|
79
|
+
ABSL_RAW_LOGGING_INTERNAL_##severity, \
|
80
|
+
absl_raw_logging_internal_filename, __LINE__, message); \
|
79
81
|
} while (0)
|
80
82
|
|
81
83
|
#define ABSL_INTERNAL_CHECK(condition, message) \
|
@@ -170,7 +172,7 @@ using InternalLogFunction = void (*)(absl::LogSeverity severity,
|
|
170
172
|
const char* file, int line,
|
171
173
|
const std::string& message);
|
172
174
|
|
173
|
-
ABSL_DLL
|
175
|
+
ABSL_INTERNAL_ATOMIC_HOOK_ATTRIBUTES ABSL_DLL extern base_internal::AtomicHook<
|
174
176
|
InternalLogFunction>
|
175
177
|
internal_log_function;
|
176
178
|
|
@@ -66,35 +66,19 @@ void RegisterSpinLockProfiler(void (*fn)(const void *contendedlock,
|
|
66
66
|
submit_profile_data.Store(fn);
|
67
67
|
}
|
68
68
|
|
69
|
+
// Static member variable definitions.
|
70
|
+
constexpr uint32_t SpinLock::kSpinLockHeld;
|
71
|
+
constexpr uint32_t SpinLock::kSpinLockCooperative;
|
72
|
+
constexpr uint32_t SpinLock::kSpinLockDisabledScheduling;
|
73
|
+
constexpr uint32_t SpinLock::kSpinLockSleeper;
|
74
|
+
constexpr uint32_t SpinLock::kWaitTimeMask;
|
75
|
+
|
69
76
|
// Uncommon constructors.
|
70
77
|
SpinLock::SpinLock(base_internal::SchedulingMode mode)
|
71
78
|
: lockword_(IsCooperative(mode) ? kSpinLockCooperative : 0) {
|
72
79
|
ABSL_TSAN_MUTEX_CREATE(this, __tsan_mutex_not_static);
|
73
80
|
}
|
74
81
|
|
75
|
-
SpinLock::SpinLock(base_internal::LinkerInitialized,
|
76
|
-
base_internal::SchedulingMode mode) {
|
77
|
-
ABSL_TSAN_MUTEX_CREATE(this, 0);
|
78
|
-
if (IsCooperative(mode)) {
|
79
|
-
InitLinkerInitializedAndCooperative();
|
80
|
-
}
|
81
|
-
// Otherwise, lockword_ is already initialized.
|
82
|
-
}
|
83
|
-
|
84
|
-
// Static (linker initialized) spinlocks always start life as functional
|
85
|
-
// non-cooperative locks. When their static constructor does run, it will call
|
86
|
-
// this initializer to augment the lockword with the cooperative bit. By
|
87
|
-
// actually taking the lock when we do this we avoid the need for an atomic
|
88
|
-
// operation in the regular unlock path.
|
89
|
-
//
|
90
|
-
// SlowLock() must be careful to re-test for this bit so that any outstanding
|
91
|
-
// waiters may be upgraded to cooperative status.
|
92
|
-
void SpinLock::InitLinkerInitializedAndCooperative() {
|
93
|
-
Lock();
|
94
|
-
lockword_.fetch_or(kSpinLockCooperative, std::memory_order_relaxed);
|
95
|
-
Unlock();
|
96
|
-
}
|
97
|
-
|
98
82
|
// Monitor the lock to see if its value changes within some time period
|
99
83
|
// (adaptive_spin_count loop iterations). The last value read from the lock
|
100
84
|
// is returned from the method.
|
@@ -121,6 +105,14 @@ void SpinLock::SlowLock() {
|
|
121
105
|
if ((lock_value & kSpinLockHeld) == 0) {
|
122
106
|
return;
|
123
107
|
}
|
108
|
+
|
109
|
+
base_internal::SchedulingMode scheduling_mode;
|
110
|
+
if ((lock_value & kSpinLockCooperative) != 0) {
|
111
|
+
scheduling_mode = base_internal::SCHEDULE_COOPERATIVE_AND_KERNEL;
|
112
|
+
} else {
|
113
|
+
scheduling_mode = base_internal::SCHEDULE_KERNEL_ONLY;
|
114
|
+
}
|
115
|
+
|
124
116
|
// The lock was not obtained initially, so this thread needs to wait for
|
125
117
|
// it. Record the current timestamp in the local variable wait_start_time
|
126
118
|
// so the total wait time can be stored in the lockword once this thread
|
@@ -151,12 +143,6 @@ void SpinLock::SlowLock() {
|
|
151
143
|
}
|
152
144
|
}
|
153
145
|
|
154
|
-
base_internal::SchedulingMode scheduling_mode;
|
155
|
-
if ((lock_value & kSpinLockCooperative) != 0) {
|
156
|
-
scheduling_mode = base_internal::SCHEDULE_COOPERATIVE_AND_KERNEL;
|
157
|
-
} else {
|
158
|
-
scheduling_mode = base_internal::SCHEDULE_KERNEL_ONLY;
|
159
|
-
}
|
160
146
|
// SpinLockDelay() calls into fiber scheduler, we need to see
|
161
147
|
// synchronization there to avoid false positives.
|
162
148
|
ABSL_TSAN_MUTEX_PRE_DIVERT(this, 0);
|
@@ -190,30 +176,32 @@ void SpinLock::SlowUnlock(uint32_t lock_value) {
|
|
190
176
|
// We use the upper 29 bits of the lock word to store the time spent waiting to
|
191
177
|
// acquire this lock. This is reported by contentionz profiling. Since the
|
192
178
|
// lower bits of the cycle counter wrap very quickly on high-frequency
|
193
|
-
// processors we divide to reduce the granularity to 2^
|
179
|
+
// processors we divide to reduce the granularity to 2^kProfileTimestampShift
|
194
180
|
// sized units. On a 4Ghz machine this will lose track of wait times greater
|
195
181
|
// than (2^29/4 Ghz)*128 =~ 17.2 seconds. Such waits should be extremely rare.
|
196
|
-
|
197
|
-
|
182
|
+
static constexpr int kProfileTimestampShift = 7;
|
183
|
+
|
184
|
+
// We currently reserve the lower 3 bits.
|
185
|
+
static constexpr int kLockwordReservedShift = 3;
|
198
186
|
|
199
187
|
uint32_t SpinLock::EncodeWaitCycles(int64_t wait_start_time,
|
200
188
|
int64_t wait_end_time) {
|
201
189
|
static const int64_t kMaxWaitTime =
|
202
|
-
std::numeric_limits<uint32_t>::max() >>
|
190
|
+
std::numeric_limits<uint32_t>::max() >> kLockwordReservedShift;
|
203
191
|
int64_t scaled_wait_time =
|
204
|
-
(wait_end_time - wait_start_time) >>
|
192
|
+
(wait_end_time - wait_start_time) >> kProfileTimestampShift;
|
205
193
|
|
206
194
|
// Return a representation of the time spent waiting that can be stored in
|
207
195
|
// the lock word's upper bits.
|
208
196
|
uint32_t clamped = static_cast<uint32_t>(
|
209
|
-
std::min(scaled_wait_time, kMaxWaitTime) <<
|
197
|
+
std::min(scaled_wait_time, kMaxWaitTime) << kLockwordReservedShift);
|
210
198
|
|
211
199
|
if (clamped == 0) {
|
212
200
|
return kSpinLockSleeper; // Just wake waiters, but don't record contention.
|
213
201
|
}
|
214
202
|
// Bump up value if necessary to avoid returning kSpinLockSleeper.
|
215
203
|
const uint32_t kMinWaitTime =
|
216
|
-
kSpinLockSleeper + (1 <<
|
204
|
+
kSpinLockSleeper + (1 << kLockwordReservedShift);
|
217
205
|
if (clamped == kSpinLockSleeper) {
|
218
206
|
return kMinWaitTime;
|
219
207
|
}
|
@@ -224,8 +212,7 @@ uint64_t SpinLock::DecodeWaitCycles(uint32_t lock_value) {
|
|
224
212
|
// Cast to uint32_t first to ensure bits [63:32] are cleared.
|
225
213
|
const uint64_t scaled_wait_time =
|
226
214
|
static_cast<uint32_t>(lock_value & kWaitTimeMask);
|
227
|
-
return scaled_wait_time
|
228
|
-
<< (PROFILE_TIMESTAMP_SHIFT - LOCKWORD_RESERVED_SHIFT);
|
215
|
+
return scaled_wait_time << (kProfileTimestampShift - kLockwordReservedShift);
|
229
216
|
}
|
230
217
|
|
231
218
|
} // namespace base_internal
|
@@ -36,6 +36,7 @@
|
|
36
36
|
#include <atomic>
|
37
37
|
|
38
38
|
#include "absl/base/attributes.h"
|
39
|
+
#include "absl/base/const_init.h"
|
39
40
|
#include "absl/base/dynamic_annotations.h"
|
40
41
|
#include "absl/base/internal/low_level_scheduling.h"
|
41
42
|
#include "absl/base/internal/raw_logging.h"
|
@@ -55,29 +56,22 @@ class ABSL_LOCKABLE SpinLock {
|
|
55
56
|
ABSL_TSAN_MUTEX_CREATE(this, __tsan_mutex_not_static);
|
56
57
|
}
|
57
58
|
|
58
|
-
// Special constructor for use with static SpinLock objects. E.g.,
|
59
|
-
//
|
60
|
-
// static SpinLock lock(base_internal::kLinkerInitialized);
|
61
|
-
//
|
62
|
-
// When initialized using this constructor, we depend on the fact
|
63
|
-
// that the linker has already initialized the memory appropriately. The lock
|
64
|
-
// is initialized in non-cooperative mode.
|
65
|
-
//
|
66
|
-
// A SpinLock constructed like this can be freely used from global
|
67
|
-
// initializers without worrying about the order in which global
|
68
|
-
// initializers run.
|
69
|
-
explicit SpinLock(base_internal::LinkerInitialized) {
|
70
|
-
// Does nothing; lockword_ is already initialized
|
71
|
-
ABSL_TSAN_MUTEX_CREATE(this, 0);
|
72
|
-
}
|
73
|
-
|
74
59
|
// Constructors that allow non-cooperative spinlocks to be created for use
|
75
60
|
// inside thread schedulers. Normal clients should not use these.
|
76
61
|
explicit SpinLock(base_internal::SchedulingMode mode);
|
77
|
-
SpinLock(base_internal::LinkerInitialized,
|
78
|
-
base_internal::SchedulingMode mode);
|
79
62
|
|
63
|
+
// Constructor for global SpinLock instances. See absl/base/const_init.h.
|
64
|
+
constexpr SpinLock(absl::ConstInitType, base_internal::SchedulingMode mode)
|
65
|
+
: lockword_(IsCooperative(mode) ? kSpinLockCooperative : 0) {}
|
66
|
+
|
67
|
+
// For global SpinLock instances prefer trivial destructor when possible.
|
68
|
+
// Default but non-trivial destructor in some build configurations causes an
|
69
|
+
// extra static initializer.
|
70
|
+
#ifdef ABSL_INTERNAL_HAVE_TSAN_INTERFACE
|
80
71
|
~SpinLock() { ABSL_TSAN_MUTEX_DESTROY(this, __tsan_mutex_not_static); }
|
72
|
+
#else
|
73
|
+
~SpinLock() = default;
|
74
|
+
#endif
|
81
75
|
|
82
76
|
// Acquire this SpinLock.
|
83
77
|
inline void Lock() ABSL_EXCLUSIVE_LOCK_FUNCTION() {
|
@@ -148,12 +142,13 @@ class ABSL_LOCKABLE SpinLock {
|
|
148
142
|
// bit[1] encodes whether a lock uses cooperative scheduling.
|
149
143
|
// bit[2] encodes whether a lock disables scheduling.
|
150
144
|
// bit[3:31] encodes time a lock spent on waiting as a 29-bit unsigned int.
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
145
|
+
static constexpr uint32_t kSpinLockHeld = 1;
|
146
|
+
static constexpr uint32_t kSpinLockCooperative = 2;
|
147
|
+
static constexpr uint32_t kSpinLockDisabledScheduling = 4;
|
148
|
+
static constexpr uint32_t kSpinLockSleeper = 8;
|
149
|
+
// Includes kSpinLockSleeper.
|
150
|
+
static constexpr uint32_t kWaitTimeMask =
|
151
|
+
~(kSpinLockHeld | kSpinLockCooperative | kSpinLockDisabledScheduling);
|
157
152
|
|
158
153
|
// Returns true if the provided scheduling mode is cooperative.
|
159
154
|
static constexpr bool IsCooperative(
|
@@ -162,7 +157,6 @@ class ABSL_LOCKABLE SpinLock {
|
|
162
157
|
}
|
163
158
|
|
164
159
|
uint32_t TryLockInternal(uint32_t lock_value, uint32_t wait_cycles);
|
165
|
-
void InitLinkerInitializedAndCooperative();
|
166
160
|
void SlowLock() ABSL_ATTRIBUTE_COLD;
|
167
161
|
void SlowUnlock(uint32_t lock_value) ABSL_ATTRIBUTE_COLD;
|
168
162
|
uint32_t SpinLoop();
|
@@ -46,6 +46,14 @@ static_assert(sizeof(std::atomic<uint32_t>) == sizeof(int),
|
|
46
46
|
#endif
|
47
47
|
#endif
|
48
48
|
|
49
|
+
#if defined(__NR_futex_time64) && !defined(SYS_futex_time64)
|
50
|
+
#define SYS_futex_time64 __NR_futex_time64
|
51
|
+
#endif
|
52
|
+
|
53
|
+
#if defined(SYS_futex_time64) && !defined(SYS_futex)
|
54
|
+
#define SYS_futex SYS_futex_time64
|
55
|
+
#endif
|
56
|
+
|
49
57
|
extern "C" {
|
50
58
|
|
51
59
|
ABSL_ATTRIBUTE_WEAK void AbslInternalSpinLockDelay(
|
@@ -39,6 +39,7 @@
|
|
39
39
|
#endif
|
40
40
|
|
41
41
|
#include <string.h>
|
42
|
+
|
42
43
|
#include <cassert>
|
43
44
|
#include <cstdint>
|
44
45
|
#include <cstdio>
|
@@ -50,9 +51,11 @@
|
|
50
51
|
#include <vector>
|
51
52
|
|
52
53
|
#include "absl/base/call_once.h"
|
54
|
+
#include "absl/base/config.h"
|
53
55
|
#include "absl/base/internal/raw_logging.h"
|
54
56
|
#include "absl/base/internal/spinlock.h"
|
55
57
|
#include "absl/base/internal/unscaledcycleclock.h"
|
58
|
+
#include "absl/base/thread_annotations.h"
|
56
59
|
|
57
60
|
namespace absl {
|
58
61
|
ABSL_NAMESPACE_BEGIN
|
@@ -72,6 +75,12 @@ static int GetNumCPUs() {
|
|
72
75
|
#if defined(_WIN32)
|
73
76
|
|
74
77
|
static double GetNominalCPUFrequency() {
|
78
|
+
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && \
|
79
|
+
!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
|
80
|
+
// UWP apps don't have access to the registry and currently don't provide an
|
81
|
+
// API informing about CPU nominal frequency.
|
82
|
+
return 1.0;
|
83
|
+
#else
|
75
84
|
#pragma comment(lib, "advapi32.lib") // For Reg* functions.
|
76
85
|
HKEY key;
|
77
86
|
// Use the Reg* functions rather than the SH functions because shlwapi.dll
|
@@ -91,6 +100,7 @@ static double GetNominalCPUFrequency() {
|
|
91
100
|
}
|
92
101
|
}
|
93
102
|
return 1.0;
|
103
|
+
#endif // WINAPI_PARTITION_APP && !WINAPI_PARTITION_DESKTOP
|
94
104
|
}
|
95
105
|
|
96
106
|
#elif defined(CTL_HW) && defined(HW_CPU_FREQ)
|
@@ -336,15 +346,16 @@ pid_t GetTID() {
|
|
336
346
|
#else
|
337
347
|
|
338
348
|
// Fallback implementation of GetTID using pthread_getspecific.
|
339
|
-
static once_flag tid_once;
|
340
|
-
static pthread_key_t tid_key;
|
341
|
-
static absl::base_internal::SpinLock tid_lock(
|
342
|
-
absl::base_internal::
|
349
|
+
ABSL_CONST_INIT static once_flag tid_once;
|
350
|
+
ABSL_CONST_INIT static pthread_key_t tid_key;
|
351
|
+
ABSL_CONST_INIT static absl::base_internal::SpinLock tid_lock(
|
352
|
+
absl::kConstInit, base_internal::SCHEDULE_KERNEL_ONLY);
|
343
353
|
|
344
354
|
// We set a bit per thread in this array to indicate that an ID is in
|
345
355
|
// use. ID 0 is unused because it is the default value returned by
|
346
356
|
// pthread_getspecific().
|
347
|
-
static std::vector<uint32_t
|
357
|
+
ABSL_CONST_INIT static std::vector<uint32_t> *tid_array
|
358
|
+
ABSL_GUARDED_BY(tid_lock) = nullptr;
|
348
359
|
static constexpr int kBitsPerWord = 32; // tid_array is uint32_t.
|
349
360
|
|
350
361
|
// Returns the TID to tid_array.
|
@@ -411,6 +422,18 @@ pid_t GetTID() {
|
|
411
422
|
|
412
423
|
#endif
|
413
424
|
|
425
|
+
// GetCachedTID() caches the thread ID in thread-local storage (which is a
|
426
|
+
// userspace construct) to avoid unnecessary system calls. Without this caching,
|
427
|
+
// it can take roughly 98ns, while it takes roughly 1ns with this caching.
|
428
|
+
pid_t GetCachedTID() {
|
429
|
+
#if ABSL_HAVE_THREAD_LOCAL
|
430
|
+
static thread_local pid_t thread_id = GetTID();
|
431
|
+
return thread_id;
|
432
|
+
#else
|
433
|
+
return GetTID();
|
434
|
+
#endif // ABSL_HAVE_THREAD_LOCAL
|
435
|
+
}
|
436
|
+
|
414
437
|
} // namespace base_internal
|
415
438
|
ABSL_NAMESPACE_END
|
416
439
|
} // namespace absl
|
@@ -30,6 +30,7 @@
|
|
30
30
|
|
31
31
|
#include <cstdint>
|
32
32
|
|
33
|
+
#include "absl/base/config.h"
|
33
34
|
#include "absl/base/port.h"
|
34
35
|
|
35
36
|
namespace absl {
|
@@ -59,6 +60,13 @@ using pid_t = uint32_t;
|
|
59
60
|
#endif
|
60
61
|
pid_t GetTID();
|
61
62
|
|
63
|
+
// Like GetTID(), but caches the result in thread-local storage in order
|
64
|
+
// to avoid unnecessary system calls. Note that there are some cases where
|
65
|
+
// one must call through to GetTID directly, which is why this exists as a
|
66
|
+
// separate function. For example, GetCachedTID() is not safe to call in
|
67
|
+
// an asynchronous signal-handling context nor right after a call to fork().
|
68
|
+
pid_t GetCachedTID();
|
69
|
+
|
62
70
|
} // namespace base_internal
|
63
71
|
ABSL_NAMESPACE_END
|
64
72
|
} // namespace absl
|