grpc 1.9.1 → 1.10.0.pre1
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 +2654 -953
- data/etc/roots.pem +282 -683
- data/include/grpc/compression.h +9 -26
- data/include/grpc/grpc.h +10 -24
- data/include/grpc/grpc_security.h +7 -1
- data/include/grpc/impl/codegen/compression_types.h +5 -62
- data/include/grpc/impl/codegen/grpc_types.h +10 -6
- data/include/grpc/module.modulemap +1 -10
- data/include/grpc/support/alloc.h +3 -2
- data/include/grpc/support/log.h +1 -2
- data/{src/core/lib/gpr/thd_internal.h → include/grpc/support/thd_id.h} +23 -9
- data/src/boringssl/err_data.c +550 -496
- data/src/core/ext/census/grpc_context.cc +2 -1
- data/src/core/ext/filters/client_channel/backup_poller.cc +5 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -7
- data/src/core/ext/filters/client_channel/client_channel.cc +162 -172
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +4 -2
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +10 -10
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +18 -14
- data/src/core/ext/filters/client_channel/http_proxy.cc +3 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +21 -105
- data/src/core/ext/filters/client_channel/lb_policy.h +166 -170
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +41 -36
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1452 -1459
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +7 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +27 -27
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +279 -304
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +358 -330
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +30 -41
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +7 -14
- data/src/core/ext/filters/client_channel/lb_policy_factory.cc +8 -21
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +23 -27
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +58 -33
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +25 -12
- data/src/core/ext/filters/client_channel/parse_address.cc +10 -8
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver.cc +6 -52
- data/src/core/ext/filters/client_channel/resolver.h +98 -55
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +266 -237
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +31 -27
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +244 -207
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +161 -148
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +47 -31
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +126 -126
- data/src/core/ext/filters/client_channel/resolver_factory.h +33 -32
- data/src/core/ext/filters/client_channel/resolver_registry.cc +110 -90
- data/src/core/ext/filters/client_channel/resolver_registry.h +49 -36
- data/src/core/ext/filters/client_channel/retry_throttle.cc +29 -22
- data/src/core/ext/filters/client_channel/subchannel.cc +173 -173
- data/src/core/ext/filters/client_channel/subchannel.h +38 -45
- data/src/core/ext/filters/client_channel/subchannel_index.cc +44 -40
- data/src/core/ext/filters/client_channel/uri_parser.cc +3 -3
- data/src/core/ext/filters/deadline/deadline_filter.cc +27 -18
- data/src/core/ext/filters/http/client/http_client_filter.cc +26 -23
- data/src/core/ext/filters/http/http_filters_plugin.cc +3 -2
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +78 -110
- data/src/core/ext/filters/http/server/http_server_filter.cc +29 -26
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +9 -11
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +2 -1
- data/src/core/ext/filters/max_age/max_age_filter.cc +14 -14
- data/src/core/ext/filters/message_size/message_size_filter.cc +20 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -4
- data/src/core/ext/filters/workarounds/workaround_utils.cc +4 -4
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +10 -10
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +4 -4
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +11 -12
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +16 -13
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +36 -9
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -0
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +17 -14
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -145
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +16 -14
- data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -7
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +35 -33
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +27 -25
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +12 -12
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +16 -15
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +11 -11
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +23 -22
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +35 -35
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +35 -39
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +8 -7
- data/src/core/ext/transport/chttp2/transport/varint.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/writing.cc +18 -18
- data/src/core/ext/transport/inproc/inproc_transport.cc +43 -23
- data/src/core/lib/{gpr → avl}/avl.cc +61 -57
- data/{include/grpc/support → src/core/lib/avl}/avl.h +25 -35
- data/src/core/lib/backoff/backoff.cc +6 -5
- data/src/core/lib/channel/channel_args.cc +23 -109
- data/src/core/lib/channel/channel_args.h +5 -31
- data/src/core/lib/channel/channel_stack.cc +11 -8
- data/src/core/lib/channel/channel_stack_builder.cc +10 -7
- data/src/core/lib/channel/connected_channel.cc +18 -17
- data/src/core/lib/channel/handshaker.cc +8 -8
- data/src/core/lib/channel/handshaker_registry.cc +3 -2
- data/src/core/lib/compression/algorithm_metadata.h +13 -6
- data/src/core/lib/compression/compression.cc +72 -183
- data/src/core/lib/compression/compression_internal.cc +274 -0
- data/src/core/lib/compression/compression_internal.h +86 -0
- data/src/core/lib/compression/message_compress.cc +15 -15
- data/src/core/lib/compression/message_compress.h +4 -3
- data/src/core/lib/compression/stream_compression_gzip.cc +8 -8
- data/src/core/lib/compression/stream_compression_identity.cc +1 -1
- data/src/core/lib/debug/stats.cc +10 -8
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/trace.cc +3 -3
- data/src/core/lib/gpr/alloc.cc +7 -11
- data/src/core/lib/gpr/arena.cc +34 -12
- data/src/core/lib/gpr/atm.cc +2 -1
- data/src/core/lib/gpr/cpu_linux.cc +3 -3
- data/src/core/lib/gpr/cpu_posix.cc +2 -1
- data/src/core/lib/gpr/env.h +1 -1
- data/src/core/lib/gpr/env_linux.cc +1 -1
- data/src/core/lib/gpr/env_windows.cc +4 -4
- data/src/core/lib/gpr/fork.cc +16 -2
- data/src/core/lib/gpr/host_port.cc +5 -4
- data/{include/grpc/support → src/core/lib/gpr}/host_port.h +5 -13
- data/src/core/lib/gpr/log.cc +5 -4
- data/src/core/lib/gpr/log_linux.cc +1 -1
- data/src/core/lib/gpr/mpscq.cc +1 -0
- data/src/core/lib/gpr/murmur_hash.cc +4 -4
- data/src/core/lib/gpr/string.cc +19 -16
- data/src/core/lib/gpr/string_posix.cc +3 -3
- data/src/core/lib/gpr/sync_posix.cc +5 -9
- data/src/core/lib/gpr/thd.cc +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/thd.h +20 -28
- data/src/core/lib/gpr/thd_posix.cc +6 -4
- data/src/core/lib/gpr/thd_windows.cc +3 -1
- data/src/core/lib/gpr/time.cc +6 -4
- data/src/core/lib/gpr/time_posix.cc +2 -2
- data/{include/grpc/support → src/core/lib/gpr}/tls.h +6 -6
- data/{include/grpc/support → src/core/lib/gpr}/tls_gcc.h +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/tls_msvc.h +3 -3
- data/src/core/lib/gpr/tls_pthread.cc +1 -1
- data/{include/grpc/support → src/core/lib/gpr}/tls_pthread.h +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/useful.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/abstract.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/atomic.h +5 -5
- data/src/core/lib/{gpr++ → gprpp}/atomic_with_atm.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/atomic_with_std.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/debug_location.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/inlined_vector.h +44 -22
- data/src/core/lib/{gpr++ → gprpp}/manual_constructor.h +2 -2
- data/src/core/lib/{gpr++ → gprpp}/memory.h +14 -5
- data/src/core/lib/{gpr++ → gprpp}/orphanable.h +39 -14
- data/src/core/lib/{gpr++ → gprpp}/ref_counted.h +42 -10
- data/src/core/lib/{gpr++ → gprpp}/ref_counted_ptr.h +18 -8
- data/src/core/lib/http/format_request.cc +3 -3
- data/src/core/lib/http/httpcli.cc +6 -7
- data/src/core/lib/http/httpcli_security_connector.cc +10 -10
- data/src/core/lib/http/parser.cc +16 -12
- data/src/core/lib/iomgr/call_combiner.cc +12 -13
- data/src/core/lib/iomgr/closure.h +4 -6
- data/src/core/lib/iomgr/combiner.cc +10 -21
- data/src/core/lib/iomgr/error.cc +50 -55
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +41 -52
- data/src/core/lib/iomgr/ev_epollex_linux.cc +80 -28
- data/src/core/lib/iomgr/ev_epollsig_linux.cc +23 -30
- data/src/core/lib/iomgr/ev_poll_posix.cc +52 -46
- data/src/core/lib/iomgr/ev_posix.cc +47 -6
- data/src/core/lib/iomgr/exec_ctx.cc +10 -10
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +16 -13
- data/src/core/lib/iomgr/fork_posix.cc +1 -3
- data/src/core/lib/iomgr/gethostname_host_name_max.cc +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +1 -2
- data/src/core/lib/iomgr/iomgr.cc +2 -2
- data/src/core/lib/iomgr/iomgr_uv.cc +2 -0
- data/src/core/lib/iomgr/iomgr_uv.h +1 -1
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +5 -4
- data/src/core/lib/iomgr/load_file.cc +3 -3
- data/src/core/lib/iomgr/pollset_windows.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_uv.cc +2 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +3 -2
- data/src/core/lib/iomgr/resource_quota.cc +36 -34
- data/src/core/lib/iomgr/sockaddr_utils.cc +39 -23
- data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
- data/src/core/lib/iomgr/socket_mutator.cc +7 -7
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -4
- data/src/core/lib/iomgr/socket_utils_linux.cc +3 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +7 -6
- data/src/core/lib/iomgr/tcp_client_windows.cc +0 -1
- data/src/core/lib/iomgr/tcp_posix.cc +47 -55
- data/src/core/lib/iomgr/tcp_server_posix.cc +12 -10
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -5
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -3
- data/src/core/lib/iomgr/tcp_windows.cc +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +16 -14
- data/src/core/lib/iomgr/timer_heap.cc +8 -7
- data/src/core/lib/iomgr/timer_manager.cc +4 -3
- data/src/core/lib/iomgr/udp_server.cc +24 -16
- data/src/core/lib/iomgr/unix_sockets_posix.cc +15 -10
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +6 -5
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +1 -2
- data/src/core/lib/json/json.cc +1 -1
- data/src/core/lib/json/json_reader.cc +8 -6
- data/src/core/lib/json/json_string.cc +19 -18
- data/src/core/lib/json/json_writer.cc +10 -8
- data/src/core/lib/profiling/basic_timers.cc +1 -1
- data/src/core/lib/profiling/timers.h +3 -20
- data/src/core/lib/security/context/security_context.cc +16 -14
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +17 -14
- data/src/core/lib/security/credentials/credentials.cc +9 -8
- data/src/core/lib/security/credentials/credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +12 -13
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -3
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -7
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +21 -18
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +23 -18
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +11 -7
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +22 -21
- data/src/core/lib/security/{transport → security_connector}/security_connector.cc +46 -43
- data/src/core/lib/security/{transport → security_connector}/security_connector.h +3 -3
- data/src/core/lib/security/transport/client_auth_filter.cc +32 -34
- data/src/core/lib/security/transport/lb_targets_info.cc +7 -5
- data/src/core/lib/security/transport/secure_endpoint.cc +21 -21
- data/src/core/lib/security/transport/security_handshaker.cc +19 -18
- data/src/core/lib/security/transport/security_handshaker.h +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
- data/src/core/lib/slice/b64.cc +19 -16
- data/src/core/lib/slice/percent_encoding.cc +5 -5
- data/src/core/lib/slice/slice.cc +35 -33
- data/src/core/lib/slice/slice_buffer.cc +16 -14
- data/src/core/lib/slice/slice_hash_table.cc +3 -2
- data/src/core/lib/slice/slice_intern.cc +21 -25
- data/src/core/lib/slice/slice_string_helpers.cc +45 -9
- data/src/core/lib/slice/slice_string_helpers.h +6 -0
- data/src/core/lib/surface/byte_buffer.cc +2 -2
- data/src/core/lib/surface/byte_buffer_reader.cc +6 -3
- data/src/core/lib/surface/call.cc +171 -260
- data/src/core/lib/surface/call_test_only.h +1 -13
- data/src/core/lib/surface/channel.cc +20 -43
- data/src/core/lib/surface/channel_init.cc +7 -7
- data/src/core/lib/surface/channel_ping.cc +2 -2
- data/src/core/lib/surface/completion_queue.cc +69 -75
- data/src/core/lib/surface/init.cc +4 -5
- data/src/core/lib/surface/init_secure.cc +1 -1
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/server.cc +64 -59
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +6 -5
- data/src/core/lib/transport/byte_stream.cc +23 -14
- data/src/core/lib/transport/byte_stream.h +1 -1
- data/src/core/lib/transport/connectivity_state.cc +9 -13
- data/src/core/lib/transport/error_utils.cc +10 -7
- data/src/core/lib/transport/metadata.cc +27 -26
- data/src/core/lib/transport/metadata.h +1 -1
- data/src/core/lib/transport/pid_controller.cc +2 -1
- data/src/core/lib/transport/service_config.cc +5 -5
- data/src/core/lib/transport/static_metadata.cc +225 -222
- data/src/core/lib/transport/static_metadata.h +77 -76
- data/src/core/lib/transport/timeout_encoding.cc +3 -2
- data/src/core/lib/transport/transport.cc +6 -5
- data/src/core/lib/transport/transport_op_string.cc +0 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
- data/src/core/tsi/alts_transport_security.cc +61 -0
- data/src/core/tsi/{gts_transport_security.h → alts_transport_security.h} +16 -8
- data/src/core/tsi/fake_transport_security.cc +59 -43
- data/src/core/tsi/ssl_transport_security.cc +122 -107
- data/src/core/tsi/transport_security.cc +3 -3
- data/src/core/tsi/transport_security_adapter.cc +16 -10
- data/src/ruby/bin/apis/pubsub_demo.rb +1 -1
- data/src/ruby/ext/grpc/rb_channel.c +3 -4
- data/src/ruby/ext/grpc/rb_compression_options.c +13 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -76
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +8 -120
- data/src/ruby/ext/grpc/rb_server.c +52 -28
- data/src/ruby/lib/grpc/generic/rpc_server.rb +7 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/test/client.rb +1 -1
- data/src/ruby/pb/test/server.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +4 -2
- data/src/ruby/spec/generic/active_call_spec.rb +2 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +32 -8
- data/src/ruby/spec/server_spec.rb +26 -7
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +7 -2
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +15 -0
- data/third_party/boringssl/crypto/asn1/a_gentm.c +1 -1
- data/third_party/boringssl/crypto/asn1/a_print.c +0 -28
- data/third_party/boringssl/crypto/asn1/a_strnid.c +3 -0
- data/third_party/boringssl/crypto/asn1/a_time.c +17 -9
- data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -1
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -49
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +1 -1
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +9 -9
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +0 -6
- data/third_party/boringssl/crypto/asn1/time_support.c +5 -5
- data/third_party/boringssl/crypto/base64/base64.c +65 -43
- data/third_party/boringssl/crypto/bio/bio.c +134 -110
- data/third_party/boringssl/crypto/bio/bio_mem.c +9 -9
- data/third_party/boringssl/crypto/bio/connect.c +17 -17
- data/third_party/boringssl/crypto/bio/fd.c +2 -1
- data/third_party/boringssl/crypto/bio/file.c +14 -14
- data/third_party/boringssl/crypto/bio/hexdump.c +15 -16
- data/third_party/boringssl/crypto/bio/internal.h +14 -14
- data/third_party/boringssl/crypto/bio/pair.c +45 -45
- data/third_party/boringssl/crypto/bio/printf.c +6 -10
- data/third_party/boringssl/crypto/{bn → bn_extra}/bn_asn1.c +9 -9
- data/third_party/boringssl/crypto/{bn → bn_extra}/convert.c +18 -223
- data/third_party/boringssl/crypto/buf/buf.c +20 -44
- data/third_party/boringssl/crypto/bytestring/ber.c +35 -35
- data/third_party/boringssl/crypto/bytestring/cbb.c +24 -24
- data/third_party/boringssl/crypto/bytestring/cbs.c +33 -37
- data/third_party/boringssl/crypto/bytestring/internal.h +38 -38
- data/third_party/boringssl/crypto/chacha/chacha.c +7 -7
- data/third_party/boringssl/crypto/{asn1/t_bitst.c → cipher_extra/cipher_extra.c} +49 -38
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/derive_key.c +0 -2
- data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +281 -0
- data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +867 -0
- data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +326 -0
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_null.c +0 -1
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc2.c +22 -10
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc4.c +0 -0
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_ssl3.c +120 -64
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_tls.c +220 -141
- data/third_party/boringssl/crypto/{asn1/x_bignum.c → cipher_extra/internal.h} +61 -86
- data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +482 -0
- data/third_party/boringssl/crypto/cmac/cmac.c +20 -20
- data/third_party/boringssl/crypto/conf/conf.c +32 -20
- data/third_party/boringssl/crypto/conf/internal.h +3 -3
- data/third_party/boringssl/crypto/cpu-aarch64-linux.c +5 -5
- data/third_party/boringssl/crypto/cpu-arm-linux.c +44 -41
- data/third_party/boringssl/crypto/cpu-intel.c +68 -43
- data/third_party/boringssl/crypto/cpu-ppc64le.c +5 -7
- data/third_party/boringssl/crypto/crypto.c +54 -32
- data/third_party/boringssl/crypto/curve25519/curve25519.c +269 -269
- data/third_party/boringssl/crypto/curve25519/internal.h +28 -8
- data/third_party/boringssl/crypto/curve25519/spake25519.c +180 -106
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +9 -9
- data/third_party/boringssl/crypto/dh/check.c +33 -34
- data/third_party/boringssl/crypto/dh/dh.c +72 -36
- data/third_party/boringssl/crypto/dh/dh_asn1.c +1 -1
- data/third_party/boringssl/crypto/dh/params.c +1 -161
- data/third_party/boringssl/crypto/digest_extra/digest_extra.c +240 -0
- data/third_party/boringssl/crypto/dsa/dsa.c +127 -87
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +1 -1
- data/third_party/boringssl/crypto/{ec → ec_extra}/ec_asn1.c +83 -70
- data/third_party/boringssl/crypto/ecdh/ecdh.c +1 -1
- data/third_party/boringssl/crypto/{ecdsa → ecdsa_extra}/ecdsa_asn1.c +86 -31
- data/third_party/boringssl/crypto/engine/engine.c +6 -6
- data/third_party/boringssl/crypto/err/err.c +197 -106
- data/third_party/boringssl/crypto/err/internal.h +58 -0
- data/third_party/boringssl/crypto/evp/digestsign.c +86 -14
- data/third_party/boringssl/crypto/evp/evp.c +6 -11
- data/third_party/boringssl/crypto/evp/evp_asn1.c +17 -17
- data/third_party/boringssl/crypto/evp/evp_ctx.c +15 -11
- data/third_party/boringssl/crypto/evp/internal.h +66 -51
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +11 -11
- data/third_party/boringssl/crypto/evp/p_ec.c +10 -8
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +11 -12
- data/third_party/boringssl/crypto/evp/p_ed25519.c +71 -0
- data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +190 -0
- data/third_party/boringssl/crypto/evp/p_rsa.c +50 -95
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +28 -18
- data/third_party/boringssl/crypto/evp/pbkdf.c +49 -56
- data/third_party/boringssl/crypto/evp/print.c +5 -36
- data/third_party/boringssl/crypto/evp/scrypt.c +209 -0
- data/third_party/boringssl/crypto/ex_data.c +15 -45
- data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +100 -0
- data/third_party/boringssl/crypto/fipsmodule/bcm.c +679 -0
- data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/internal.h +40 -27
- data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/rsaz_exp.h +0 -0
- data/third_party/boringssl/crypto/{cipher → fipsmodule/cipher}/internal.h +34 -67
- data/third_party/boringssl/crypto/fipsmodule/delocate.h +88 -0
- data/third_party/boringssl/crypto/{des → fipsmodule/des}/internal.h +18 -4
- data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/internal.h +18 -18
- data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/md32_common.h +58 -64
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/internal.h +58 -52
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64-table.h +11 -11
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64.h +32 -32
- data/third_party/boringssl/crypto/{rand/internal.h → fipsmodule/is_fips.c} +10 -15
- data/third_party/boringssl/crypto/{modes → fipsmodule/modes}/internal.h +112 -119
- data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +92 -0
- data/third_party/boringssl/crypto/{rsa → fipsmodule/rsa}/internal.h +36 -49
- data/third_party/boringssl/crypto/hkdf/hkdf.c +6 -6
- data/third_party/boringssl/crypto/internal.h +301 -233
- data/third_party/boringssl/crypto/lhash/lhash.c +26 -45
- data/third_party/boringssl/crypto/mem.c +76 -33
- data/third_party/boringssl/crypto/obj/obj.c +44 -28
- data/third_party/boringssl/crypto/obj/obj_dat.h +102 -34
- data/third_party/boringssl/crypto/obj/obj_xref.c +6 -6
- data/third_party/boringssl/crypto/pem/pem_info.c +3 -5
- data/third_party/boringssl/crypto/pem/pem_lib.c +1 -6
- data/third_party/boringssl/crypto/pem/pem_pk8.c +1 -0
- data/third_party/boringssl/crypto/pem/pem_pkey.c +1 -1
- data/third_party/boringssl/crypto/pem/pem_xaux.c +0 -2
- data/third_party/boringssl/crypto/pkcs7/internal.h +49 -0
- data/third_party/boringssl/crypto/pkcs7/pkcs7.c +166 -0
- data/third_party/boringssl/crypto/{x509/pkcs7.c → pkcs7/pkcs7_x509.c} +27 -147
- data/third_party/boringssl/crypto/pkcs8/internal.h +34 -16
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +120 -39
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +144 -857
- data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +789 -0
- data/third_party/boringssl/crypto/poly1305/internal.h +4 -3
- data/third_party/boringssl/crypto/poly1305/poly1305.c +14 -14
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +11 -11
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +41 -41
- data/third_party/boringssl/crypto/pool/internal.h +2 -2
- data/third_party/boringssl/crypto/pool/pool.c +15 -15
- data/third_party/boringssl/crypto/{rand → rand_extra}/deterministic.c +7 -7
- data/third_party/boringssl/crypto/rand_extra/forkunsafe.c +46 -0
- data/third_party/boringssl/crypto/{rand → rand_extra}/fuchsia.c +7 -7
- data/third_party/boringssl/crypto/rand_extra/rand_extra.c +70 -0
- data/third_party/boringssl/crypto/{rand → rand_extra}/windows.c +5 -5
- data/third_party/boringssl/crypto/refcount_c11.c +2 -2
- data/third_party/boringssl/crypto/refcount_lock.c +1 -1
- data/third_party/boringssl/crypto/{rsa → rsa_extra}/rsa_asn1.c +12 -120
- data/third_party/boringssl/crypto/stack/stack.c +13 -13
- data/third_party/boringssl/crypto/thread_none.c +1 -1
- data/third_party/boringssl/crypto/thread_pthread.c +1 -1
- data/third_party/boringssl/crypto/thread_win.c +40 -40
- data/third_party/boringssl/crypto/x509/a_sign.c +5 -12
- data/third_party/boringssl/crypto/x509/a_verify.c +6 -18
- data/third_party/boringssl/crypto/x509/algorithm.c +22 -6
- data/third_party/boringssl/crypto/x509/asn1_gen.c +30 -7
- data/third_party/boringssl/crypto/x509/by_dir.c +2 -2
- data/third_party/boringssl/crypto/x509/by_file.c +2 -2
- data/third_party/boringssl/crypto/x509/rsa_pss.c +5 -5
- data/third_party/boringssl/crypto/x509/t_x509.c +2 -1
- data/third_party/boringssl/crypto/x509/x509_def.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_lu.c +35 -4
- data/third_party/boringssl/crypto/x509/x509_set.c +10 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +20 -17
- data/third_party/boringssl/crypto/x509/x_name.c +13 -16
- data/third_party/boringssl/crypto/x509/x_x509.c +3 -3
- data/third_party/boringssl/crypto/x509/x_x509a.c +0 -7
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +8 -0
- data/third_party/boringssl/crypto/x509v3/pcy_int.h +2 -2
- data/third_party/boringssl/crypto/x509v3/pcy_lib.c +0 -9
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +25 -15
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +21 -11
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +9 -3
- data/third_party/boringssl/crypto/x509v3/v3_info.c +22 -14
- data/third_party/boringssl/crypto/x509v3/v3_ncons.c +27 -11
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +0 -33
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +4 -4
- data/third_party/boringssl/include/openssl/aead.h +280 -191
- data/third_party/boringssl/include/openssl/aes.h +50 -50
- data/third_party/boringssl/include/openssl/arm_arch.h +12 -12
- data/third_party/boringssl/include/openssl/asn1.h +14 -77
- data/third_party/boringssl/include/openssl/asn1t.h +11 -15
- data/third_party/boringssl/include/openssl/base.h +78 -51
- data/third_party/boringssl/include/openssl/base64.h +68 -68
- data/third_party/boringssl/include/openssl/bio.h +472 -406
- data/third_party/boringssl/include/openssl/blowfish.h +1 -1
- data/third_party/boringssl/include/openssl/bn.h +454 -435
- data/third_party/boringssl/include/openssl/buf.h +27 -27
- data/third_party/boringssl/include/openssl/bytestring.h +282 -267
- data/third_party/boringssl/include/openssl/cast.h +2 -2
- data/third_party/boringssl/include/openssl/chacha.h +5 -5
- data/third_party/boringssl/include/openssl/cipher.h +209 -200
- data/third_party/boringssl/include/openssl/cmac.h +27 -27
- data/third_party/boringssl/include/openssl/conf.h +49 -46
- data/third_party/boringssl/include/openssl/cpu.h +60 -45
- data/third_party/boringssl/include/openssl/crypto.h +59 -35
- data/third_party/boringssl/include/openssl/curve25519.h +97 -92
- data/third_party/boringssl/include/openssl/des.h +25 -25
- data/third_party/boringssl/include/openssl/dh.h +98 -97
- data/third_party/boringssl/include/openssl/digest.h +143 -114
- data/third_party/boringssl/include/openssl/dsa.h +217 -202
- data/third_party/boringssl/include/openssl/ec.h +132 -131
- data/third_party/boringssl/include/openssl/ec_key.h +132 -128
- data/third_party/boringssl/include/openssl/ecdh.h +9 -9
- data/third_party/boringssl/include/openssl/ecdsa.h +66 -66
- data/third_party/boringssl/include/openssl/engine.h +38 -38
- data/third_party/boringssl/include/openssl/err.h +189 -219
- data/third_party/boringssl/include/openssl/evp.h +473 -397
- data/third_party/boringssl/include/openssl/ex_data.h +46 -56
- data/third_party/boringssl/include/openssl/hkdf.h +17 -17
- data/third_party/boringssl/include/openssl/hmac.h +55 -43
- data/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
- data/third_party/boringssl/include/openssl/lhash.h +67 -67
- data/third_party/boringssl/include/openssl/lhash_macros.h +4 -4
- data/third_party/boringssl/include/openssl/md4.h +14 -14
- data/third_party/boringssl/include/openssl/md5.h +14 -14
- data/third_party/boringssl/include/openssl/mem.h +39 -33
- data/third_party/boringssl/include/openssl/nid.h +43 -0
- data/third_party/boringssl/include/openssl/obj.h +93 -87
- data/third_party/boringssl/include/openssl/opensslconf.h +8 -1
- data/third_party/boringssl/include/openssl/pem.h +2 -122
- data/third_party/boringssl/include/openssl/pkcs7.h +68 -2
- data/third_party/boringssl/include/openssl/pkcs8.h +81 -66
- data/third_party/boringssl/include/openssl/poly1305.h +11 -11
- data/third_party/boringssl/include/openssl/pool.h +29 -25
- data/third_party/boringssl/include/openssl/rand.h +48 -45
- data/third_party/boringssl/include/openssl/rc4.h +9 -9
- data/third_party/boringssl/include/openssl/ripemd.h +13 -13
- data/third_party/boringssl/include/openssl/rsa.h +371 -340
- data/third_party/boringssl/include/openssl/sha.h +71 -71
- data/third_party/boringssl/include/openssl/span.h +191 -0
- data/third_party/boringssl/include/openssl/ssl.h +2639 -2519
- data/third_party/boringssl/include/openssl/ssl3.h +39 -122
- data/third_party/boringssl/include/openssl/stack.h +355 -164
- data/third_party/boringssl/include/openssl/thread.h +43 -43
- data/third_party/boringssl/include/openssl/tls1.h +60 -63
- data/third_party/boringssl/include/openssl/type_check.h +10 -14
- data/third_party/boringssl/include/openssl/x509.h +41 -116
- data/third_party/boringssl/include/openssl/x509_vfy.h +17 -25
- data/third_party/boringssl/include/openssl/x509v3.h +27 -21
- data/third_party/boringssl/ssl/{bio_ssl.c → bio_ssl.cc} +9 -5
- data/third_party/boringssl/ssl/{custom_extensions.c → custom_extensions.cc} +19 -12
- data/third_party/boringssl/ssl/{d1_both.c → d1_both.cc} +224 -193
- data/third_party/boringssl/ssl/{d1_lib.c → d1_lib.cc} +86 -79
- data/third_party/boringssl/ssl/{d1_pkt.c → d1_pkt.cc} +55 -87
- data/third_party/boringssl/ssl/{d1_srtp.c → d1_srtp.cc} +12 -16
- data/third_party/boringssl/ssl/{dtls_method.c → dtls_method.cc} +33 -50
- data/third_party/boringssl/ssl/{dtls_record.c → dtls_record.cc} +76 -64
- data/third_party/boringssl/ssl/handshake.cc +547 -0
- data/third_party/boringssl/ssl/handshake_client.cc +1828 -0
- data/third_party/boringssl/ssl/handshake_server.cc +1672 -0
- data/third_party/boringssl/ssl/internal.h +2027 -1280
- data/third_party/boringssl/ssl/s3_both.cc +603 -0
- data/third_party/boringssl/ssl/{s3_lib.c → s3_lib.cc} +22 -10
- data/third_party/boringssl/ssl/{s3_pkt.c → s3_pkt.cc} +171 -75
- data/third_party/boringssl/ssl/ssl_aead_ctx.cc +415 -0
- data/third_party/boringssl/ssl/{ssl_asn1.c → ssl_asn1.cc} +257 -261
- data/third_party/boringssl/ssl/{ssl_buffer.c → ssl_buffer.cc} +81 -97
- data/third_party/boringssl/ssl/{ssl_cert.c → ssl_cert.cc} +304 -414
- data/third_party/boringssl/ssl/{ssl_cipher.c → ssl_cipher.cc} +427 -505
- data/third_party/boringssl/ssl/{ssl_file.c → ssl_file.cc} +24 -16
- data/third_party/boringssl/ssl/ssl_key_share.cc +245 -0
- data/third_party/boringssl/ssl/{ssl_lib.c → ssl_lib.cc} +665 -828
- data/third_party/boringssl/ssl/ssl_privkey.cc +518 -0
- data/third_party/boringssl/ssl/{ssl_session.c → ssl_session.cc} +596 -471
- data/third_party/boringssl/ssl/{ssl_stat.c → ssl_stat.cc} +5 -224
- data/third_party/boringssl/ssl/{ssl_transcript.c → ssl_transcript.cc} +117 -140
- data/third_party/boringssl/ssl/ssl_versions.cc +439 -0
- data/third_party/boringssl/ssl/{ssl_x509.c → ssl_x509.cc} +751 -267
- data/third_party/boringssl/ssl/{t1_enc.c → t1_enc.cc} +120 -161
- data/third_party/boringssl/ssl/{t1_lib.c → t1_lib.cc} +859 -966
- data/third_party/boringssl/ssl/{tls13_both.c → tls13_both.cc} +202 -284
- data/third_party/boringssl/ssl/tls13_client.cc +842 -0
- data/third_party/boringssl/ssl/{tls13_enc.c → tls13_enc.cc} +108 -90
- data/third_party/boringssl/ssl/tls13_server.cc +967 -0
- data/third_party/boringssl/ssl/{tls_method.c → tls_method.cc} +94 -73
- data/third_party/boringssl/ssl/tls_record.cc +675 -0
- metadata +117 -168
- data/include/grpc/support/cmdline.h +0 -88
- data/include/grpc/support/subprocess.h +0 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -29
- data/src/core/ext/filters/client_channel/resolver_factory.cc +0 -40
- data/src/core/lib/gpr/cmdline.cc +0 -330
- data/src/core/lib/gpr/subprocess_posix.cc +0 -99
- data/src/core/lib/gpr/subprocess_windows.cc +0 -126
- data/src/core/lib/surface/alarm.cc +0 -137
- data/src/core/lib/surface/alarm_internal.h +0 -40
- data/src/core/tsi/gts_transport_security.cc +0 -40
- data/third_party/boringssl/crypto/aes/aes.c +0 -1142
- data/third_party/boringssl/crypto/aes/internal.h +0 -87
- data/third_party/boringssl/crypto/aes/key_wrap.c +0 -138
- data/third_party/boringssl/crypto/aes/mode_wrappers.c +0 -112
- data/third_party/boringssl/crypto/asn1/x_long.c +0 -200
- data/third_party/boringssl/crypto/bn/add.c +0 -377
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -532
- data/third_party/boringssl/crypto/bn/bn.c +0 -365
- data/third_party/boringssl/crypto/bn/cmp.c +0 -239
- data/third_party/boringssl/crypto/bn/ctx.c +0 -313
- data/third_party/boringssl/crypto/bn/div.c +0 -728
- data/third_party/boringssl/crypto/bn/exponentiation.c +0 -1240
- data/third_party/boringssl/crypto/bn/gcd.c +0 -635
- data/third_party/boringssl/crypto/bn/generic.c +0 -707
- data/third_party/boringssl/crypto/bn/kronecker.c +0 -176
- data/third_party/boringssl/crypto/bn/montgomery.c +0 -409
- data/third_party/boringssl/crypto/bn/montgomery_inv.c +0 -207
- data/third_party/boringssl/crypto/bn/mul.c +0 -871
- data/third_party/boringssl/crypto/bn/prime.c +0 -861
- data/third_party/boringssl/crypto/bn/random.c +0 -343
- data/third_party/boringssl/crypto/bn/rsaz_exp.c +0 -254
- data/third_party/boringssl/crypto/bn/shift.c +0 -307
- data/third_party/boringssl/crypto/bn/sqrt.c +0 -506
- data/third_party/boringssl/crypto/cipher/aead.c +0 -156
- data/third_party/boringssl/crypto/cipher/cipher.c +0 -657
- data/third_party/boringssl/crypto/cipher/e_aes.c +0 -1771
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +0 -276
- data/third_party/boringssl/crypto/cipher/e_des.c +0 -205
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +0 -482
- data/third_party/boringssl/crypto/des/des.c +0 -771
- data/third_party/boringssl/crypto/digest/digest.c +0 -251
- data/third_party/boringssl/crypto/digest/digests.c +0 -358
- data/third_party/boringssl/crypto/ec/ec.c +0 -847
- data/third_party/boringssl/crypto/ec/ec_key.c +0 -479
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +0 -303
- data/third_party/boringssl/crypto/ec/oct.c +0 -416
- data/third_party/boringssl/crypto/ec/p224-64.c +0 -1143
- data/third_party/boringssl/crypto/ec/p256-64.c +0 -1701
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +0 -561
- data/third_party/boringssl/crypto/ec/simple.c +0 -1118
- data/third_party/boringssl/crypto/ec/util-64.c +0 -109
- data/third_party/boringssl/crypto/ec/wnaf.c +0 -458
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +0 -479
- data/third_party/boringssl/crypto/hmac/hmac.c +0 -215
- data/third_party/boringssl/crypto/md4/md4.c +0 -236
- data/third_party/boringssl/crypto/md5/md5.c +0 -285
- data/third_party/boringssl/crypto/modes/cbc.c +0 -212
- data/third_party/boringssl/crypto/modes/cfb.c +0 -230
- data/third_party/boringssl/crypto/modes/ctr.c +0 -219
- data/third_party/boringssl/crypto/modes/gcm.c +0 -1071
- data/third_party/boringssl/crypto/modes/ofb.c +0 -95
- data/third_party/boringssl/crypto/modes/polyval.c +0 -94
- data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +0 -85
- data/third_party/boringssl/crypto/rand/rand.c +0 -244
- data/third_party/boringssl/crypto/rand/urandom.c +0 -335
- data/third_party/boringssl/crypto/rsa/blinding.c +0 -265
- data/third_party/boringssl/crypto/rsa/padding.c +0 -708
- data/third_party/boringssl/crypto/rsa/rsa.c +0 -830
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +0 -1100
- data/third_party/boringssl/crypto/sha/sha1-altivec.c +0 -346
- data/third_party/boringssl/crypto/sha/sha1.c +0 -355
- data/third_party/boringssl/crypto/sha/sha256.c +0 -329
- data/third_party/boringssl/crypto/sha/sha512.c +0 -609
- data/third_party/boringssl/crypto/x509/x509type.c +0 -126
- data/third_party/boringssl/include/openssl/stack_macros.h +0 -3987
- data/third_party/boringssl/ssl/handshake_client.c +0 -1883
- data/third_party/boringssl/ssl/handshake_server.c +0 -1950
- data/third_party/boringssl/ssl/s3_both.c +0 -895
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +0 -335
- data/third_party/boringssl/ssl/ssl_ecdh.c +0 -465
- data/third_party/boringssl/ssl/ssl_privkey.c +0 -683
- data/third_party/boringssl/ssl/ssl_privkey_cc.cc +0 -76
- data/third_party/boringssl/ssl/tls13_client.c +0 -712
- data/third_party/boringssl/ssl/tls13_server.c +0 -680
- data/third_party/boringssl/ssl/tls_record.c +0 -556
@@ -39,12 +39,12 @@
|
|
39
39
|
#include <grpc/support/alloc.h>
|
40
40
|
#include <grpc/support/cpu.h>
|
41
41
|
#include <grpc/support/string_util.h>
|
42
|
-
#include <grpc/support/tls.h>
|
43
|
-
#include <grpc/support/useful.h>
|
44
42
|
|
45
43
|
#include "src/core/lib/debug/stats.h"
|
46
|
-
#include "src/core/lib/gpr++/manual_constructor.h"
|
47
44
|
#include "src/core/lib/gpr/string.h"
|
45
|
+
#include "src/core/lib/gpr/tls.h"
|
46
|
+
#include "src/core/lib/gpr/useful.h"
|
47
|
+
#include "src/core/lib/gprpp/manual_constructor.h"
|
48
48
|
#include "src/core/lib/iomgr/block_annotate.h"
|
49
49
|
#include "src/core/lib/iomgr/ev_posix.h"
|
50
50
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
@@ -281,7 +281,7 @@ static grpc_fd* fd_create(int fd, const char* name) {
|
|
281
281
|
gpr_mu_unlock(&fd_freelist_mu);
|
282
282
|
|
283
283
|
if (new_fd == nullptr) {
|
284
|
-
new_fd = (
|
284
|
+
new_fd = static_cast<grpc_fd*>(gpr_malloc(sizeof(grpc_fd)));
|
285
285
|
new_fd->read_closure.Init();
|
286
286
|
new_fd->write_closure.Init();
|
287
287
|
}
|
@@ -304,7 +304,7 @@ static grpc_fd* fd_create(int fd, const char* name) {
|
|
304
304
|
gpr_free(fd_name);
|
305
305
|
|
306
306
|
struct epoll_event ev;
|
307
|
-
ev.events =
|
307
|
+
ev.events = static_cast<uint32_t>(EPOLLIN | EPOLLOUT | EPOLLET);
|
308
308
|
ev.data.ptr = new_fd;
|
309
309
|
if (epoll_ctl(g_epoll_set.epfd, EPOLL_CTL_ADD, fd, &ev) != 0) {
|
310
310
|
gpr_log(GPR_ERROR, "epoll_ctl failed: %s", strerror(errno));
|
@@ -440,7 +440,7 @@ static worker_remove_result worker_remove(grpc_pollset* pollset,
|
|
440
440
|
}
|
441
441
|
|
442
442
|
static size_t choose_neighborhood(void) {
|
443
|
-
return (
|
443
|
+
return static_cast<size_t>(gpr_cpu_current_cpu()) % g_num_neighborhoods;
|
444
444
|
}
|
445
445
|
|
446
446
|
static grpc_error* pollset_global_init(void) {
|
@@ -451,15 +451,15 @@ static grpc_error* pollset_global_init(void) {
|
|
451
451
|
grpc_error* err = grpc_wakeup_fd_init(&global_wakeup_fd);
|
452
452
|
if (err != GRPC_ERROR_NONE) return err;
|
453
453
|
struct epoll_event ev;
|
454
|
-
ev.events =
|
454
|
+
ev.events = static_cast<uint32_t>(EPOLLIN | EPOLLET);
|
455
455
|
ev.data.ptr = &global_wakeup_fd;
|
456
456
|
if (epoll_ctl(g_epoll_set.epfd, EPOLL_CTL_ADD, global_wakeup_fd.read_fd,
|
457
457
|
&ev) != 0) {
|
458
458
|
return GRPC_OS_ERROR(errno, "epoll_ctl");
|
459
459
|
}
|
460
460
|
g_num_neighborhoods = GPR_CLAMP(gpr_cpu_num_cores(), 1, MAX_NEIGHBORHOODS);
|
461
|
-
g_neighborhoods =
|
462
|
-
|
461
|
+
g_neighborhoods = static_cast<pollset_neighborhood*>(
|
462
|
+
gpr_zalloc(sizeof(*g_neighborhoods) * g_num_neighborhoods));
|
463
463
|
for (size_t i = 0; i < g_num_neighborhoods; i++) {
|
464
464
|
gpr_mu_init(&g_neighborhoods[i].mu);
|
465
465
|
}
|
@@ -519,7 +519,7 @@ static void pollset_destroy(grpc_pollset* pollset) {
|
|
519
519
|
}
|
520
520
|
|
521
521
|
static grpc_error* pollset_kick_all(grpc_pollset* pollset) {
|
522
|
-
|
522
|
+
GPR_TIMER_SCOPE("pollset_kick_all", 0);
|
523
523
|
grpc_error* error = GRPC_ERROR_NONE;
|
524
524
|
if (pollset->root_worker != nullptr) {
|
525
525
|
grpc_pollset_worker* worker = pollset->root_worker;
|
@@ -549,7 +549,6 @@ static grpc_error* pollset_kick_all(grpc_pollset* pollset) {
|
|
549
549
|
}
|
550
550
|
// TODO: sreek. Check if we need to set 'kicked_without_poller' to true here
|
551
551
|
// in the else case
|
552
|
-
GPR_TIMER_END("pollset_kick_all", 0);
|
553
552
|
return error;
|
554
553
|
}
|
555
554
|
|
@@ -563,14 +562,13 @@ static void pollset_maybe_finish_shutdown(grpc_pollset* pollset) {
|
|
563
562
|
}
|
564
563
|
|
565
564
|
static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
|
566
|
-
|
565
|
+
GPR_TIMER_SCOPE("pollset_shutdown", 0);
|
567
566
|
GPR_ASSERT(pollset->shutdown_closure == nullptr);
|
568
567
|
GPR_ASSERT(!pollset->shutting_down);
|
569
568
|
pollset->shutdown_closure = closure;
|
570
569
|
pollset->shutting_down = true;
|
571
570
|
GRPC_LOG_IF_ERROR("pollset_shutdown", pollset_kick_all(pollset));
|
572
571
|
pollset_maybe_finish_shutdown(pollset);
|
573
|
-
GPR_TIMER_END("pollset_shutdown", 0);
|
574
572
|
}
|
575
573
|
|
576
574
|
static int poll_deadline_to_millis_timeout(grpc_millis millis) {
|
@@ -581,7 +579,7 @@ static int poll_deadline_to_millis_timeout(grpc_millis millis) {
|
|
581
579
|
} else if (delta < 0) {
|
582
580
|
return 0;
|
583
581
|
} else {
|
584
|
-
return (
|
582
|
+
return static_cast<int>(delta);
|
585
583
|
}
|
586
584
|
}
|
587
585
|
|
@@ -594,10 +592,10 @@ static int poll_deadline_to_millis_timeout(grpc_millis millis) {
|
|
594
592
|
called by g_active_poller thread. So there is no need for synchronization
|
595
593
|
when accessing fields in g_epoll_set */
|
596
594
|
static grpc_error* process_epoll_events(grpc_pollset* pollset) {
|
595
|
+
GPR_TIMER_SCOPE("process_epoll_events", 0);
|
596
|
+
|
597
597
|
static const char* err_desc = "process_events";
|
598
598
|
grpc_error* error = GRPC_ERROR_NONE;
|
599
|
-
|
600
|
-
GPR_TIMER_BEGIN("process_epoll_events", 0);
|
601
599
|
long num_events = gpr_atm_acq_load(&g_epoll_set.num_events);
|
602
600
|
long cursor = gpr_atm_acq_load(&g_epoll_set.cursor);
|
603
601
|
for (int idx = 0;
|
@@ -611,7 +609,7 @@ static grpc_error* process_epoll_events(grpc_pollset* pollset) {
|
|
611
609
|
append_error(&error, grpc_wakeup_fd_consume_wakeup(&global_wakeup_fd),
|
612
610
|
err_desc);
|
613
611
|
} else {
|
614
|
-
grpc_fd* fd =
|
612
|
+
grpc_fd* fd = static_cast<grpc_fd*>(data_ptr);
|
615
613
|
bool cancel = (ev->events & (EPOLLERR | EPOLLHUP)) != 0;
|
616
614
|
bool read_ev = (ev->events & (EPOLLIN | EPOLLPRI)) != 0;
|
617
615
|
bool write_ev = (ev->events & EPOLLOUT) != 0;
|
@@ -626,7 +624,6 @@ static grpc_error* process_epoll_events(grpc_pollset* pollset) {
|
|
626
624
|
}
|
627
625
|
}
|
628
626
|
gpr_atm_rel_store(&g_epoll_set.cursor, cursor);
|
629
|
-
GPR_TIMER_END("process_epoll_events", 0);
|
630
627
|
return error;
|
631
628
|
}
|
632
629
|
|
@@ -638,7 +635,7 @@ static grpc_error* process_epoll_events(grpc_pollset* pollset) {
|
|
638
635
|
(i.e the designated poller thread) will be calling this function. So there is
|
639
636
|
no need for any synchronization when accesing fields in g_epoll_set */
|
640
637
|
static grpc_error* do_epoll_wait(grpc_pollset* ps, grpc_millis deadline) {
|
641
|
-
|
638
|
+
GPR_TIMER_SCOPE("do_epoll_wait", 0);
|
642
639
|
|
643
640
|
int r;
|
644
641
|
int timeout = poll_deadline_to_millis_timeout(deadline);
|
@@ -665,14 +662,13 @@ static grpc_error* do_epoll_wait(grpc_pollset* ps, grpc_millis deadline) {
|
|
665
662
|
gpr_atm_rel_store(&g_epoll_set.num_events, r);
|
666
663
|
gpr_atm_rel_store(&g_epoll_set.cursor, 0);
|
667
664
|
|
668
|
-
GPR_TIMER_END("do_epoll_wait", 0);
|
669
665
|
return GRPC_ERROR_NONE;
|
670
666
|
}
|
671
667
|
|
672
668
|
static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
673
669
|
grpc_pollset_worker** worker_hdl,
|
674
670
|
grpc_millis deadline) {
|
675
|
-
|
671
|
+
GPR_TIMER_SCOPE("begin_worker", 0);
|
676
672
|
if (worker_hdl != nullptr) *worker_hdl = worker;
|
677
673
|
worker->initialized_cv = false;
|
678
674
|
SET_KICK_STATE(worker, UNKICKED);
|
@@ -680,7 +676,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
680
676
|
pollset->begin_refs++;
|
681
677
|
|
682
678
|
if (grpc_polling_trace.enabled()) {
|
683
|
-
gpr_log(
|
679
|
+
gpr_log(GPR_DEBUG, "PS:%p BEGIN_STARTS:%p", pollset, worker);
|
684
680
|
}
|
685
681
|
|
686
682
|
if (pollset->seen_inactive) {
|
@@ -699,7 +695,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
699
695
|
gpr_mu_lock(&neighborhood->mu);
|
700
696
|
gpr_mu_lock(&pollset->mu);
|
701
697
|
if (grpc_polling_trace.enabled()) {
|
702
|
-
gpr_log(
|
698
|
+
gpr_log(GPR_DEBUG, "PS:%p BEGIN_REORG:%p kick_state=%s is_reassigning=%d",
|
703
699
|
pollset, worker, kick_state_string(worker->state),
|
704
700
|
is_reassigning);
|
705
701
|
}
|
@@ -751,7 +747,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
751
747
|
gpr_cv_init(&worker->cv);
|
752
748
|
while (worker->state == UNKICKED && !pollset->shutting_down) {
|
753
749
|
if (grpc_polling_trace.enabled()) {
|
754
|
-
gpr_log(
|
750
|
+
gpr_log(GPR_DEBUG, "PS:%p BEGIN_WAIT:%p kick_state=%s shutdown=%d",
|
755
751
|
pollset, worker, kick_state_string(worker->state),
|
756
752
|
pollset->shutting_down);
|
757
753
|
}
|
@@ -768,7 +764,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
768
764
|
}
|
769
765
|
|
770
766
|
if (grpc_polling_trace.enabled()) {
|
771
|
-
gpr_log(
|
767
|
+
gpr_log(GPR_DEBUG,
|
772
768
|
"PS:%p BEGIN_DONE:%p kick_state=%s shutdown=%d "
|
773
769
|
"kicked_without_poller: %d",
|
774
770
|
pollset, worker, kick_state_string(worker->state),
|
@@ -786,17 +782,15 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
786
782
|
|
787
783
|
if (pollset->kicked_without_poller) {
|
788
784
|
pollset->kicked_without_poller = false;
|
789
|
-
GPR_TIMER_END("begin_worker", 0);
|
790
785
|
return false;
|
791
786
|
}
|
792
787
|
|
793
|
-
GPR_TIMER_END("begin_worker", 0);
|
794
788
|
return worker->state == DESIGNATED_POLLER && !pollset->shutting_down;
|
795
789
|
}
|
796
790
|
|
797
791
|
static bool check_neighborhood_for_available_poller(
|
798
792
|
pollset_neighborhood* neighborhood) {
|
799
|
-
|
793
|
+
GPR_TIMER_SCOPE("check_neighborhood_for_available_poller", 0);
|
800
794
|
bool found_worker = false;
|
801
795
|
do {
|
802
796
|
grpc_pollset* inspect = neighborhood->active_root;
|
@@ -855,13 +849,12 @@ static bool check_neighborhood_for_available_poller(
|
|
855
849
|
}
|
856
850
|
gpr_mu_unlock(&inspect->mu);
|
857
851
|
} while (!found_worker);
|
858
|
-
GPR_TIMER_END("check_neighborhood_for_available_poller", 0);
|
859
852
|
return found_worker;
|
860
853
|
}
|
861
854
|
|
862
855
|
static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
863
856
|
grpc_pollset_worker** worker_hdl) {
|
864
|
-
|
857
|
+
GPR_TIMER_SCOPE("end_worker", 0);
|
865
858
|
if (grpc_polling_trace.enabled()) {
|
866
859
|
gpr_log(GPR_DEBUG, "PS:%p END_WORKER:%p", pollset, worker);
|
867
860
|
}
|
@@ -888,7 +881,7 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
888
881
|
} else {
|
889
882
|
gpr_atm_no_barrier_store(&g_active_poller, 0);
|
890
883
|
size_t poller_neighborhood_idx =
|
891
|
-
|
884
|
+
static_cast<size_t>(pollset->neighborhood - g_neighborhoods);
|
892
885
|
gpr_mu_unlock(&pollset->mu);
|
893
886
|
bool found_worker = false;
|
894
887
|
bool scan_state[MAX_NEIGHBORHOODS];
|
@@ -931,7 +924,6 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
931
924
|
pollset_maybe_finish_shutdown(pollset);
|
932
925
|
}
|
933
926
|
GPR_ASSERT(gpr_atm_no_barrier_load(&g_active_poller) != (gpr_atm)worker);
|
934
|
-
GPR_TIMER_END("end_worker", 0);
|
935
927
|
}
|
936
928
|
|
937
929
|
/* pollset->po.mu lock must be held by the caller before calling this.
|
@@ -941,13 +933,12 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
941
933
|
static grpc_error* pollset_work(grpc_pollset* ps,
|
942
934
|
grpc_pollset_worker** worker_hdl,
|
943
935
|
grpc_millis deadline) {
|
936
|
+
GPR_TIMER_SCOPE("pollset_work", 0);
|
944
937
|
grpc_pollset_worker worker;
|
945
938
|
grpc_error* error = GRPC_ERROR_NONE;
|
946
939
|
static const char* err_desc = "pollset_work";
|
947
|
-
GPR_TIMER_BEGIN("pollset_work", 0);
|
948
940
|
if (ps->kicked_without_poller) {
|
949
941
|
ps->kicked_without_poller = false;
|
950
|
-
GPR_TIMER_END("pollset_work", 0);
|
951
942
|
return GRPC_ERROR_NONE;
|
952
943
|
}
|
953
944
|
|
@@ -987,13 +978,12 @@ static grpc_error* pollset_work(grpc_pollset* ps,
|
|
987
978
|
end_worker(ps, &worker, worker_hdl);
|
988
979
|
|
989
980
|
gpr_tls_set(&g_current_thread_pollset, 0);
|
990
|
-
GPR_TIMER_END("pollset_work", 0);
|
991
981
|
return error;
|
992
982
|
}
|
993
983
|
|
994
984
|
static grpc_error* pollset_kick(grpc_pollset* pollset,
|
995
985
|
grpc_pollset_worker* specific_worker) {
|
996
|
-
|
986
|
+
GPR_TIMER_SCOPE("pollset_kick", 0);
|
997
987
|
GRPC_STATS_INC_POLLSET_KICK();
|
998
988
|
grpc_error* ret_err = GRPC_ERROR_NONE;
|
999
989
|
if (grpc_polling_trace.enabled()) {
|
@@ -1019,7 +1009,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
|
|
1019
1009
|
}
|
1020
1010
|
tmp = gpr_strvec_flatten(&log, nullptr);
|
1021
1011
|
gpr_strvec_destroy(&log);
|
1022
|
-
gpr_log(
|
1012
|
+
gpr_log(GPR_DEBUG, "%s", tmp);
|
1023
1013
|
gpr_free(tmp);
|
1024
1014
|
}
|
1025
1015
|
|
@@ -1030,7 +1020,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
|
|
1030
1020
|
GRPC_STATS_INC_POLLSET_KICKED_WITHOUT_POLLER();
|
1031
1021
|
pollset->kicked_without_poller = true;
|
1032
1022
|
if (grpc_polling_trace.enabled()) {
|
1033
|
-
gpr_log(
|
1023
|
+
gpr_log(GPR_DEBUG, " .. kicked_without_poller");
|
1034
1024
|
}
|
1035
1025
|
goto done;
|
1036
1026
|
}
|
@@ -1038,14 +1028,14 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
|
|
1038
1028
|
if (root_worker->state == KICKED) {
|
1039
1029
|
GRPC_STATS_INC_POLLSET_KICKED_AGAIN();
|
1040
1030
|
if (grpc_polling_trace.enabled()) {
|
1041
|
-
gpr_log(
|
1031
|
+
gpr_log(GPR_DEBUG, " .. already kicked %p", root_worker);
|
1042
1032
|
}
|
1043
1033
|
SET_KICK_STATE(root_worker, KICKED);
|
1044
1034
|
goto done;
|
1045
1035
|
} else if (next_worker->state == KICKED) {
|
1046
1036
|
GRPC_STATS_INC_POLLSET_KICKED_AGAIN();
|
1047
1037
|
if (grpc_polling_trace.enabled()) {
|
1048
|
-
gpr_log(
|
1038
|
+
gpr_log(GPR_DEBUG, " .. already kicked %p", next_worker);
|
1049
1039
|
}
|
1050
1040
|
SET_KICK_STATE(next_worker, KICKED);
|
1051
1041
|
goto done;
|
@@ -1056,7 +1046,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
|
|
1056
1046
|
&g_active_poller)) {
|
1057
1047
|
GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD();
|
1058
1048
|
if (grpc_polling_trace.enabled()) {
|
1059
|
-
gpr_log(
|
1049
|
+
gpr_log(GPR_DEBUG, " .. kicked %p", root_worker);
|
1060
1050
|
}
|
1061
1051
|
SET_KICK_STATE(root_worker, KICKED);
|
1062
1052
|
ret_err = grpc_wakeup_fd_wakeup(&global_wakeup_fd);
|
@@ -1064,7 +1054,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
|
|
1064
1054
|
} else if (next_worker->state == UNKICKED) {
|
1065
1055
|
GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV();
|
1066
1056
|
if (grpc_polling_trace.enabled()) {
|
1067
|
-
gpr_log(
|
1057
|
+
gpr_log(GPR_DEBUG, " .. kicked %p", next_worker);
|
1068
1058
|
}
|
1069
1059
|
GPR_ASSERT(next_worker->initialized_cv);
|
1070
1060
|
SET_KICK_STATE(next_worker, KICKED);
|
@@ -1074,7 +1064,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
|
|
1074
1064
|
if (root_worker->state != DESIGNATED_POLLER) {
|
1075
1065
|
if (grpc_polling_trace.enabled()) {
|
1076
1066
|
gpr_log(
|
1077
|
-
|
1067
|
+
GPR_DEBUG,
|
1078
1068
|
" .. kicked root non-poller %p (initialized_cv=%d) (poller=%p)",
|
1079
1069
|
root_worker, root_worker->initialized_cv, next_worker);
|
1080
1070
|
}
|
@@ -1087,7 +1077,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
|
|
1087
1077
|
} else {
|
1088
1078
|
GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD();
|
1089
1079
|
if (grpc_polling_trace.enabled()) {
|
1090
|
-
gpr_log(
|
1080
|
+
gpr_log(GPR_DEBUG, " .. non-root poller %p (root=%p)", next_worker,
|
1091
1081
|
root_worker);
|
1092
1082
|
}
|
1093
1083
|
SET_KICK_STATE(next_worker, KICKED);
|
@@ -1103,7 +1093,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
|
|
1103
1093
|
} else {
|
1104
1094
|
GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD();
|
1105
1095
|
if (grpc_polling_trace.enabled()) {
|
1106
|
-
gpr_log(
|
1096
|
+
gpr_log(GPR_DEBUG, " .. kicked while waking up");
|
1107
1097
|
}
|
1108
1098
|
goto done;
|
1109
1099
|
}
|
@@ -1113,14 +1103,14 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
|
|
1113
1103
|
|
1114
1104
|
if (specific_worker->state == KICKED) {
|
1115
1105
|
if (grpc_polling_trace.enabled()) {
|
1116
|
-
gpr_log(
|
1106
|
+
gpr_log(GPR_DEBUG, " .. specific worker already kicked");
|
1117
1107
|
}
|
1118
1108
|
goto done;
|
1119
1109
|
} else if (gpr_tls_get(&g_current_thread_worker) ==
|
1120
1110
|
(intptr_t)specific_worker) {
|
1121
1111
|
GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD();
|
1122
1112
|
if (grpc_polling_trace.enabled()) {
|
1123
|
-
gpr_log(
|
1113
|
+
gpr_log(GPR_DEBUG, " .. mark %p kicked", specific_worker);
|
1124
1114
|
}
|
1125
1115
|
SET_KICK_STATE(specific_worker, KICKED);
|
1126
1116
|
goto done;
|
@@ -1128,7 +1118,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
|
|
1128
1118
|
(grpc_pollset_worker*)gpr_atm_no_barrier_load(&g_active_poller)) {
|
1129
1119
|
GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD();
|
1130
1120
|
if (grpc_polling_trace.enabled()) {
|
1131
|
-
gpr_log(
|
1121
|
+
gpr_log(GPR_DEBUG, " .. kick active poller");
|
1132
1122
|
}
|
1133
1123
|
SET_KICK_STATE(specific_worker, KICKED);
|
1134
1124
|
ret_err = grpc_wakeup_fd_wakeup(&global_wakeup_fd);
|
@@ -1136,7 +1126,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
|
|
1136
1126
|
} else if (specific_worker->initialized_cv) {
|
1137
1127
|
GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV();
|
1138
1128
|
if (grpc_polling_trace.enabled()) {
|
1139
|
-
gpr_log(
|
1129
|
+
gpr_log(GPR_DEBUG, " .. kick waiting worker");
|
1140
1130
|
}
|
1141
1131
|
SET_KICK_STATE(specific_worker, KICKED);
|
1142
1132
|
gpr_cv_signal(&specific_worker->cv);
|
@@ -1144,13 +1134,12 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
|
|
1144
1134
|
} else {
|
1145
1135
|
GRPC_STATS_INC_POLLSET_KICKED_AGAIN();
|
1146
1136
|
if (grpc_polling_trace.enabled()) {
|
1147
|
-
gpr_log(
|
1137
|
+
gpr_log(GPR_DEBUG, " .. kick non-waiting worker");
|
1148
1138
|
}
|
1149
1139
|
SET_KICK_STATE(specific_worker, KICKED);
|
1150
1140
|
goto done;
|
1151
1141
|
}
|
1152
1142
|
done:
|
1153
|
-
GPR_TIMER_END("pollset_kick", 0);
|
1154
1143
|
return ret_err;
|
1155
1144
|
}
|
1156
1145
|
|
@@ -1161,7 +1150,7 @@ static void pollset_add_fd(grpc_pollset* pollset, grpc_fd* fd) {}
|
|
1161
1150
|
*/
|
1162
1151
|
|
1163
1152
|
static grpc_pollset_set* pollset_set_create(void) {
|
1164
|
-
return (grpc_pollset_set*)((
|
1153
|
+
return (grpc_pollset_set*)(static_cast<intptr_t>(0xdeafbeef));
|
1165
1154
|
}
|
1166
1155
|
|
1167
1156
|
static void pollset_set_destroy(grpc_pollset_set* pss) {}
|
@@ -37,12 +37,12 @@
|
|
37
37
|
|
38
38
|
#include <grpc/support/alloc.h>
|
39
39
|
#include <grpc/support/string_util.h>
|
40
|
-
#include <grpc/support/tls.h>
|
41
|
-
#include <grpc/support/useful.h>
|
42
40
|
|
43
41
|
#include "src/core/lib/debug/stats.h"
|
44
|
-
#include "src/core/lib/gpr++/manual_constructor.h"
|
45
42
|
#include "src/core/lib/gpr/spinlock.h"
|
43
|
+
#include "src/core/lib/gpr/tls.h"
|
44
|
+
#include "src/core/lib/gpr/useful.h"
|
45
|
+
#include "src/core/lib/gprpp/manual_constructor.h"
|
46
46
|
#include "src/core/lib/iomgr/block_annotate.h"
|
47
47
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
48
48
|
#include "src/core/lib/iomgr/is_epollexclusive_available.h"
|
@@ -57,7 +57,7 @@
|
|
57
57
|
//#define GRPC_EPOLLEX_CREATE_WORKERS_ON_HEAP 1
|
58
58
|
|
59
59
|
#define MAX_EPOLL_EVENTS 100
|
60
|
-
#define MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL
|
60
|
+
#define MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL 16
|
61
61
|
|
62
62
|
grpc_core::DebugOnlyTraceFlag grpc_trace_pollable_refcount(false,
|
63
63
|
"pollable_refcount");
|
@@ -196,9 +196,11 @@ struct grpc_pollset_worker {
|
|
196
196
|
|
197
197
|
struct grpc_pollset {
|
198
198
|
gpr_mu mu;
|
199
|
+
gpr_atm worker_count;
|
199
200
|
pollable* active_pollable;
|
200
201
|
bool kicked_without_poller;
|
201
202
|
grpc_closure* shutdown_closure;
|
203
|
+
bool already_shutdown;
|
202
204
|
grpc_pollset_worker* root_worker;
|
203
205
|
int containing_pollset_set_count;
|
204
206
|
};
|
@@ -275,7 +277,7 @@ static void ref_by(grpc_fd* fd, int n) {
|
|
275
277
|
}
|
276
278
|
|
277
279
|
static void fd_destroy(void* arg, grpc_error* error) {
|
278
|
-
grpc_fd* fd = (
|
280
|
+
grpc_fd* fd = static_cast<grpc_fd*>(arg);
|
279
281
|
/* Add the fd to the freelist */
|
280
282
|
grpc_iomgr_unregister_object(&fd->iomgr_object);
|
281
283
|
POLLABLE_UNREF(fd->pollable_obj, "fd_pollable");
|
@@ -337,7 +339,7 @@ static grpc_fd* fd_create(int fd, const char* name) {
|
|
337
339
|
gpr_mu_unlock(&fd_freelist_mu);
|
338
340
|
|
339
341
|
if (new_fd == nullptr) {
|
340
|
-
new_fd = (
|
342
|
+
new_fd = static_cast<grpc_fd*>(gpr_malloc(sizeof(grpc_fd)));
|
341
343
|
new_fd->read_closure.Init();
|
342
344
|
new_fd->write_closure.Init();
|
343
345
|
}
|
@@ -440,7 +442,7 @@ static grpc_error* pollable_create(pollable_type type, pollable** p) {
|
|
440
442
|
if (epfd == -1) {
|
441
443
|
return GRPC_OS_ERROR(errno, "epoll_create1");
|
442
444
|
}
|
443
|
-
*p = (
|
445
|
+
*p = static_cast<pollable*>(gpr_malloc(sizeof(**p)));
|
444
446
|
grpc_error* err = grpc_wakeup_fd_init(&(*p)->wakeup);
|
445
447
|
if (err != GRPC_ERROR_NONE) {
|
446
448
|
close(epfd);
|
@@ -449,7 +451,7 @@ static grpc_error* pollable_create(pollable_type type, pollable** p) {
|
|
449
451
|
return err;
|
450
452
|
}
|
451
453
|
struct epoll_event ev;
|
452
|
-
ev.events =
|
454
|
+
ev.events = static_cast<uint32_t>(EPOLLIN | EPOLLET);
|
453
455
|
ev.data.ptr = (void*)(1 | (intptr_t) & (*p)->wakeup);
|
454
456
|
if (epoll_ctl(epfd, EPOLL_CTL_ADD, (*p)->wakeup.read_fd, &ev) != 0) {
|
455
457
|
err = GRPC_OS_ERROR(errno, "epoll_ctl");
|
@@ -478,7 +480,7 @@ static pollable* pollable_ref(pollable* p) {
|
|
478
480
|
#else
|
479
481
|
static pollable* pollable_ref(pollable* p, int line, const char* reason) {
|
480
482
|
if (grpc_trace_pollable_refcount.enabled()) {
|
481
|
-
int r =
|
483
|
+
int r = static_cast<int> gpr_atm_no_barrier_load(&p->refs.count);
|
482
484
|
gpr_log(__FILE__, line, GPR_LOG_SEVERITY_DEBUG,
|
483
485
|
"POLLABLE:%p ref %d->%d %s", p, r, r + 1, reason);
|
484
486
|
}
|
@@ -493,7 +495,7 @@ static void pollable_unref(pollable* p) {
|
|
493
495
|
static void pollable_unref(pollable* p, int line, const char* reason) {
|
494
496
|
if (p == nullptr) return;
|
495
497
|
if (grpc_trace_pollable_refcount.enabled()) {
|
496
|
-
int r =
|
498
|
+
int r = static_cast<int> gpr_atm_no_barrier_load(&p->refs.count);
|
497
499
|
gpr_log(__FILE__, line, GPR_LOG_SEVERITY_DEBUG,
|
498
500
|
"POLLABLE:%p unref %d->%d %s", p, r, r - 1, reason);
|
499
501
|
}
|
@@ -515,7 +517,8 @@ static grpc_error* pollable_add_fd(pollable* p, grpc_fd* fd) {
|
|
515
517
|
}
|
516
518
|
|
517
519
|
struct epoll_event ev_fd;
|
518
|
-
ev_fd.events =
|
520
|
+
ev_fd.events =
|
521
|
+
static_cast<uint32_t>(EPOLLET | EPOLLIN | EPOLLOUT | EPOLLEXCLUSIVE);
|
519
522
|
ev_fd.data.ptr = fd;
|
520
523
|
if (epoll_ctl(epfd, EPOLL_CTL_ADD, fd->fd, &ev_fd) != 0) {
|
521
524
|
switch (errno) {
|
@@ -560,8 +563,10 @@ static void pollset_maybe_finish_shutdown(grpc_pollset* pollset) {
|
|
560
563
|
}
|
561
564
|
if (pollset->shutdown_closure != nullptr && pollset->root_worker == nullptr &&
|
562
565
|
pollset->containing_pollset_set_count == 0) {
|
566
|
+
GPR_TIMER_MARK("pollset_finish_shutdown", 0);
|
563
567
|
GRPC_CLOSURE_SCHED(pollset->shutdown_closure, GRPC_ERROR_NONE);
|
564
568
|
pollset->shutdown_closure = nullptr;
|
569
|
+
pollset->already_shutdown = true;
|
565
570
|
}
|
566
571
|
}
|
567
572
|
|
@@ -569,6 +574,7 @@ static void pollset_maybe_finish_shutdown(grpc_pollset* pollset) {
|
|
569
574
|
* pollset->active_pollable->mu & specific_worker->pollable_obj->mu must not be
|
570
575
|
* held */
|
571
576
|
static grpc_error* kick_one_worker(grpc_pollset_worker* specific_worker) {
|
577
|
+
GPR_TIMER_SCOPE("kick_one_worker", 0);
|
572
578
|
pollable* p = specific_worker->pollable_obj;
|
573
579
|
grpc_core::mu_guard lock(&p->mu);
|
574
580
|
GPR_ASSERT(specific_worker != nullptr);
|
@@ -612,6 +618,7 @@ static grpc_error* kick_one_worker(grpc_pollset_worker* specific_worker) {
|
|
612
618
|
|
613
619
|
static grpc_error* pollset_kick(grpc_pollset* pollset,
|
614
620
|
grpc_pollset_worker* specific_worker) {
|
621
|
+
GPR_TIMER_SCOPE("pollset_kick", 0);
|
615
622
|
GRPC_STATS_INC_POLLSET_KICK();
|
616
623
|
if (grpc_polling_trace.enabled()) {
|
617
624
|
gpr_log(GPR_DEBUG,
|
@@ -661,6 +668,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
|
|
661
668
|
}
|
662
669
|
|
663
670
|
static grpc_error* pollset_kick_all(grpc_pollset* pollset) {
|
671
|
+
GPR_TIMER_SCOPE("pollset_kick_all", 0);
|
664
672
|
grpc_error* error = GRPC_ERROR_NONE;
|
665
673
|
const char* err_desc = "pollset_kick_all";
|
666
674
|
grpc_pollset_worker* w = pollset->root_worker;
|
@@ -676,7 +684,13 @@ static grpc_error* pollset_kick_all(grpc_pollset* pollset) {
|
|
676
684
|
|
677
685
|
static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) {
|
678
686
|
gpr_mu_init(&pollset->mu);
|
687
|
+
gpr_atm_no_barrier_store(&pollset->worker_count, 0);
|
679
688
|
pollset->active_pollable = POLLABLE_REF(g_empty_pollable, "pollset");
|
689
|
+
pollset->kicked_without_poller = false;
|
690
|
+
pollset->shutdown_closure = nullptr;
|
691
|
+
pollset->already_shutdown = false;
|
692
|
+
pollset->root_worker = nullptr;
|
693
|
+
pollset->containing_pollset_set_count = 0;
|
680
694
|
*mu = &pollset->mu;
|
681
695
|
}
|
682
696
|
|
@@ -688,7 +702,7 @@ static int poll_deadline_to_millis_timeout(grpc_millis millis) {
|
|
688
702
|
else if (delta < 0)
|
689
703
|
return 0;
|
690
704
|
else
|
691
|
-
return (
|
705
|
+
return static_cast<int>(delta);
|
692
706
|
}
|
693
707
|
|
694
708
|
static void fd_become_readable(grpc_fd* fd, grpc_pollset* notifier) {
|
@@ -733,6 +747,7 @@ static grpc_error* fd_get_or_become_pollable(grpc_fd* fd, pollable** p) {
|
|
733
747
|
|
734
748
|
/* pollset->po.mu lock must be held by the caller before calling this */
|
735
749
|
static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
|
750
|
+
GPR_TIMER_SCOPE("pollset_shutdown", 0);
|
736
751
|
GPR_ASSERT(pollset->shutdown_closure == nullptr);
|
737
752
|
pollset->shutdown_closure = closure;
|
738
753
|
GRPC_LOG_IF_ERROR("pollset_shutdown", pollset_kick_all(pollset));
|
@@ -741,9 +756,22 @@ static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
|
|
741
756
|
|
742
757
|
static grpc_error* pollable_process_events(grpc_pollset* pollset,
|
743
758
|
pollable* pollable_obj, bool drain) {
|
759
|
+
GPR_TIMER_SCOPE("pollable_process_events", 0);
|
744
760
|
static const char* err_desc = "pollset_process_events";
|
761
|
+
// Use a simple heuristic to determine how many fd events to process
|
762
|
+
// per loop iteration. (events/workers)
|
763
|
+
int handle_count = 1;
|
764
|
+
int worker_count = gpr_atm_no_barrier_load(&pollset->worker_count);
|
765
|
+
GPR_ASSERT(worker_count > 0);
|
766
|
+
handle_count =
|
767
|
+
(pollable_obj->event_count - pollable_obj->event_cursor) / worker_count;
|
768
|
+
if (handle_count == 0) {
|
769
|
+
handle_count = 1;
|
770
|
+
} else if (handle_count > MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL) {
|
771
|
+
handle_count = MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL;
|
772
|
+
}
|
745
773
|
grpc_error* error = GRPC_ERROR_NONE;
|
746
|
-
for (int i = 0; (drain || i <
|
774
|
+
for (int i = 0; (drain || i < handle_count) &&
|
747
775
|
pollable_obj->event_cursor != pollable_obj->event_count;
|
748
776
|
i++) {
|
749
777
|
int n = pollable_obj->event_cursor++;
|
@@ -755,10 +783,11 @@ static grpc_error* pollable_process_events(grpc_pollset* pollset,
|
|
755
783
|
}
|
756
784
|
append_error(&error,
|
757
785
|
grpc_wakeup_fd_consume_wakeup(
|
758
|
-
(grpc_wakeup_fd*)((~(
|
786
|
+
(grpc_wakeup_fd*)((~static_cast<intptr_t>(1)) &
|
787
|
+
(intptr_t)data_ptr)),
|
759
788
|
err_desc);
|
760
789
|
} else {
|
761
|
-
grpc_fd* fd = (
|
790
|
+
grpc_fd* fd = static_cast<grpc_fd*>(data_ptr);
|
762
791
|
bool cancel = (ev->events & (EPOLLERR | EPOLLHUP)) != 0;
|
763
792
|
bool read_ev = (ev->events & (EPOLLIN | EPOLLPRI)) != 0;
|
764
793
|
bool write_ev = (ev->events & EPOLLOUT) != 0;
|
@@ -784,9 +813,11 @@ static grpc_error* pollable_process_events(grpc_pollset* pollset,
|
|
784
813
|
static void pollset_destroy(grpc_pollset* pollset) {
|
785
814
|
POLLABLE_UNREF(pollset->active_pollable, "pollset");
|
786
815
|
pollset->active_pollable = nullptr;
|
816
|
+
gpr_mu_destroy(&pollset->mu);
|
787
817
|
}
|
788
818
|
|
789
819
|
static grpc_error* pollable_epoll(pollable* p, grpc_millis deadline) {
|
820
|
+
GPR_TIMER_SCOPE("pollable_epoll", 0);
|
790
821
|
int timeout = poll_deadline_to_millis_timeout(deadline);
|
791
822
|
|
792
823
|
if (grpc_polling_trace.enabled()) {
|
@@ -862,7 +893,10 @@ static worker_remove_result worker_remove(grpc_pollset_worker** root_worker,
|
|
862
893
|
static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
863
894
|
grpc_pollset_worker** worker_hdl,
|
864
895
|
grpc_millis deadline) {
|
865
|
-
|
896
|
+
GPR_TIMER_SCOPE("begin_worker", 0);
|
897
|
+
bool do_poll =
|
898
|
+
(pollset->shutdown_closure == nullptr && !pollset->already_shutdown);
|
899
|
+
gpr_atm_no_barrier_fetch_add(&pollset->worker_count, 1);
|
866
900
|
if (worker_hdl != nullptr) *worker_hdl = worker;
|
867
901
|
worker->initialized_cv = false;
|
868
902
|
worker->kicked = false;
|
@@ -913,6 +947,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
913
947
|
|
914
948
|
static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
915
949
|
grpc_pollset_worker** worker_hdl) {
|
950
|
+
GPR_TIMER_SCOPE("end_worker", 0);
|
916
951
|
gpr_mu_lock(&pollset->mu);
|
917
952
|
gpr_mu_lock(&worker->pollable_obj->mu);
|
918
953
|
switch (worker_remove(&worker->pollable_obj->root_worker, worker,
|
@@ -942,6 +977,7 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
942
977
|
if (worker->initialized_cv) {
|
943
978
|
gpr_cv_destroy(&worker->cv);
|
944
979
|
}
|
980
|
+
gpr_atm_no_barrier_fetch_add(&pollset->worker_count, -1);
|
945
981
|
}
|
946
982
|
|
947
983
|
#ifndef NDEBUG
|
@@ -955,6 +991,7 @@ static long gettid(void) { return syscall(__NR_gettid); }
|
|
955
991
|
static grpc_error* pollset_work(grpc_pollset* pollset,
|
956
992
|
grpc_pollset_worker** worker_hdl,
|
957
993
|
grpc_millis deadline) {
|
994
|
+
GPR_TIMER_SCOPE("pollset_work", 0);
|
958
995
|
#ifdef GRPC_EPOLLEX_CREATE_WORKERS_ON_HEAP
|
959
996
|
grpc_pollset_worker* worker =
|
960
997
|
(grpc_pollset_worker*)gpr_malloc(sizeof(*worker));
|
@@ -1092,6 +1129,16 @@ static grpc_error* pollset_as_multipollable_locked(grpc_pollset* pollset,
|
|
1092
1129
|
case PO_EMPTY:
|
1093
1130
|
POLLABLE_UNREF(pollset->active_pollable, "pollset");
|
1094
1131
|
error = pollable_create(PO_MULTI, &pollset->active_pollable);
|
1132
|
+
/* Any workers currently polling on this pollset must now be woked up so
|
1133
|
+
* that they can pick up the new active_pollable */
|
1134
|
+
if (grpc_polling_trace.enabled()) {
|
1135
|
+
gpr_log(GPR_DEBUG,
|
1136
|
+
"PS:%p active pollable transition from empty to multi",
|
1137
|
+
pollset);
|
1138
|
+
}
|
1139
|
+
static const char* err_desc =
|
1140
|
+
"pollset_as_multipollable_locked: empty -> multi";
|
1141
|
+
append_error(&error, pollset_kick_all(pollset), err_desc);
|
1095
1142
|
break;
|
1096
1143
|
case PO_FD:
|
1097
1144
|
gpr_mu_lock(&po_at_start->owner_fd->orphan_mu);
|
@@ -1120,6 +1167,7 @@ static grpc_error* pollset_as_multipollable_locked(grpc_pollset* pollset,
|
|
1120
1167
|
}
|
1121
1168
|
|
1122
1169
|
static void pollset_add_fd(grpc_pollset* pollset, grpc_fd* fd) {
|
1170
|
+
GPR_TIMER_SCOPE("pollset_add_fd", 0);
|
1123
1171
|
gpr_mu_lock(&pollset->mu);
|
1124
1172
|
grpc_error* error = pollset_add_fd_locked(pollset, fd);
|
1125
1173
|
gpr_mu_unlock(&pollset->mu);
|
@@ -1141,7 +1189,8 @@ static grpc_pollset_set* pss_lock_adam(grpc_pollset_set* pss) {
|
|
1141
1189
|
}
|
1142
1190
|
|
1143
1191
|
static grpc_pollset_set* pollset_set_create(void) {
|
1144
|
-
grpc_pollset_set* pss =
|
1192
|
+
grpc_pollset_set* pss =
|
1193
|
+
static_cast<grpc_pollset_set*>(gpr_zalloc(sizeof(*pss)));
|
1145
1194
|
gpr_mu_init(&pss->mu);
|
1146
1195
|
gpr_ref_init(&pss->refs, 1);
|
1147
1196
|
return pss;
|
@@ -1168,6 +1217,7 @@ static void pollset_set_unref(grpc_pollset_set* pss) {
|
|
1168
1217
|
}
|
1169
1218
|
|
1170
1219
|
static void pollset_set_add_fd(grpc_pollset_set* pss, grpc_fd* fd) {
|
1220
|
+
GPR_TIMER_SCOPE("pollset_set_add_fd", 0);
|
1171
1221
|
if (grpc_polling_trace.enabled()) {
|
1172
1222
|
gpr_log(GPR_DEBUG, "PSS:%p: add fd %p (%d)", pss, fd, fd->fd);
|
1173
1223
|
}
|
@@ -1180,8 +1230,8 @@ static void pollset_set_add_fd(grpc_pollset_set* pss, grpc_fd* fd) {
|
|
1180
1230
|
}
|
1181
1231
|
if (pss->fd_count == pss->fd_capacity) {
|
1182
1232
|
pss->fd_capacity = GPR_MAX(pss->fd_capacity * 2, 8);
|
1183
|
-
pss->fds =
|
1184
|
-
|
1233
|
+
pss->fds = static_cast<grpc_fd**>(
|
1234
|
+
gpr_realloc(pss->fds, pss->fd_capacity * sizeof(*pss->fds)));
|
1185
1235
|
}
|
1186
1236
|
REF_BY(fd, 2, "pollset_set");
|
1187
1237
|
pss->fds[pss->fd_count++] = fd;
|
@@ -1191,6 +1241,7 @@ static void pollset_set_add_fd(grpc_pollset_set* pss, grpc_fd* fd) {
|
|
1191
1241
|
}
|
1192
1242
|
|
1193
1243
|
static void pollset_set_del_fd(grpc_pollset_set* pss, grpc_fd* fd) {
|
1244
|
+
GPR_TIMER_SCOPE("pollset_set_del_fd", 0);
|
1194
1245
|
if (grpc_polling_trace.enabled()) {
|
1195
1246
|
gpr_log(GPR_DEBUG, "PSS:%p: del fd %p", pss, fd);
|
1196
1247
|
}
|
@@ -1211,6 +1262,7 @@ static void pollset_set_del_fd(grpc_pollset_set* pss, grpc_fd* fd) {
|
|
1211
1262
|
}
|
1212
1263
|
|
1213
1264
|
static void pollset_set_del_pollset(grpc_pollset_set* pss, grpc_pollset* ps) {
|
1265
|
+
GPR_TIMER_SCOPE("pollset_set_del_pollset", 0);
|
1214
1266
|
if (grpc_polling_trace.enabled()) {
|
1215
1267
|
gpr_log(GPR_DEBUG, "PSS:%p: del pollset %p", pss, ps);
|
1216
1268
|
}
|
@@ -1241,6 +1293,7 @@ static grpc_error* add_fds_to_pollsets(grpc_fd** fds, size_t fd_count,
|
|
1241
1293
|
size_t pollset_count,
|
1242
1294
|
const char* err_desc, grpc_fd** out_fds,
|
1243
1295
|
size_t* out_fd_count) {
|
1296
|
+
GPR_TIMER_SCOPE("add_fds_to_pollsets", 0);
|
1244
1297
|
grpc_error* error = GRPC_ERROR_NONE;
|
1245
1298
|
for (size_t i = 0; i < fd_count; i++) {
|
1246
1299
|
gpr_mu_lock(&fds[i]->orphan_mu);
|
@@ -1261,6 +1314,7 @@ static grpc_error* add_fds_to_pollsets(grpc_fd** fds, size_t fd_count,
|
|
1261
1314
|
}
|
1262
1315
|
|
1263
1316
|
static void pollset_set_add_pollset(grpc_pollset_set* pss, grpc_pollset* ps) {
|
1317
|
+
GPR_TIMER_SCOPE("pollset_set_add_pollset", 0);
|
1264
1318
|
if (grpc_polling_trace.enabled()) {
|
1265
1319
|
gpr_log(GPR_DEBUG, "PSS:%p: add pollset %p", pss, ps);
|
1266
1320
|
}
|
@@ -1285,8 +1339,8 @@ static void pollset_set_add_pollset(grpc_pollset_set* pss, grpc_pollset* ps) {
|
|
1285
1339
|
err_desc);
|
1286
1340
|
if (pss->pollset_count == pss->pollset_capacity) {
|
1287
1341
|
pss->pollset_capacity = GPR_MAX(pss->pollset_capacity * 2, 8);
|
1288
|
-
pss->pollsets = (
|
1289
|
-
pss->pollsets, pss->pollset_capacity * sizeof(*pss->pollsets));
|
1342
|
+
pss->pollsets = static_cast<grpc_pollset**>(gpr_realloc(
|
1343
|
+
pss->pollsets, pss->pollset_capacity * sizeof(*pss->pollsets)));
|
1290
1344
|
}
|
1291
1345
|
pss->pollsets[pss->pollset_count++] = ps;
|
1292
1346
|
gpr_mu_unlock(&pss->mu);
|
@@ -1297,6 +1351,7 @@ static void pollset_set_add_pollset(grpc_pollset_set* pss, grpc_pollset* ps) {
|
|
1297
1351
|
|
1298
1352
|
static void pollset_set_add_pollset_set(grpc_pollset_set* a,
|
1299
1353
|
grpc_pollset_set* b) {
|
1354
|
+
GPR_TIMER_SCOPE("pollset_set_add_pollset_set", 0);
|
1300
1355
|
if (grpc_polling_trace.enabled()) {
|
1301
1356
|
gpr_log(GPR_DEBUG, "PSS: merge (%p, %p)", a, b);
|
1302
1357
|
}
|
@@ -1338,7 +1393,8 @@ static void pollset_set_add_pollset_set(grpc_pollset_set* a,
|
|
1338
1393
|
b->parent = a;
|
1339
1394
|
if (a->fd_capacity < a->fd_count + b->fd_count) {
|
1340
1395
|
a->fd_capacity = GPR_MAX(2 * a->fd_capacity, a->fd_count + b->fd_count);
|
1341
|
-
a->fds =
|
1396
|
+
a->fds = static_cast<grpc_fd**>(
|
1397
|
+
gpr_realloc(a->fds, a->fd_capacity * sizeof(*a->fds)));
|
1342
1398
|
}
|
1343
1399
|
size_t initial_a_fd_count = a->fd_count;
|
1344
1400
|
a->fd_count = 0;
|
@@ -1355,8 +1411,8 @@ static void pollset_set_add_pollset_set(grpc_pollset_set* a,
|
|
1355
1411
|
if (a->pollset_capacity < a->pollset_count + b->pollset_count) {
|
1356
1412
|
a->pollset_capacity =
|
1357
1413
|
GPR_MAX(2 * a->pollset_capacity, a->pollset_count + b->pollset_count);
|
1358
|
-
a->pollsets =
|
1359
|
-
a->pollsets, a->pollset_capacity * sizeof(*a->pollsets));
|
1414
|
+
a->pollsets = static_cast<grpc_pollset**>(
|
1415
|
+
gpr_realloc(a->pollsets, a->pollset_capacity * sizeof(*a->pollsets)));
|
1360
1416
|
}
|
1361
1417
|
if (b->pollset_count > 0) {
|
1362
1418
|
memcpy(a->pollsets + a->pollset_count, b->pollsets,
|
@@ -1417,10 +1473,6 @@ static const grpc_event_engine_vtable vtable = {
|
|
1417
1473
|
|
1418
1474
|
const grpc_event_engine_vtable* grpc_init_epollex_linux(
|
1419
1475
|
bool explicitly_requested) {
|
1420
|
-
if (!explicitly_requested) {
|
1421
|
-
return nullptr;
|
1422
|
-
}
|
1423
|
-
|
1424
1476
|
if (!grpc_has_wakeup_fd()) {
|
1425
1477
|
gpr_log(GPR_ERROR, "Skipping epollex because of no wakeup fd.");
|
1426
1478
|
return nullptr;
|