grpc 1.50.0-x86_64-linux → 1.52.0.pre2-x86_64-linux

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.

Files changed (2569) hide show
  1. checksums.yaml +4 -4
  2. data/grpc_c.32-msvcrt.ruby +0 -0
  3. data/grpc_c.64-msvcrt.ruby +0 -0
  4. data/grpc_c.64-ucrt.ruby +0 -0
  5. data/src/ruby/ext/grpc/{ext-export-truffleruby.clang → ext-export-truffleruby-with-ruby-abi-version.clang} +0 -0
  6. data/src/ruby/ext/grpc/{ext-export-truffleruby.gcc → ext-export-truffleruby-with-ruby-abi-version.gcc} +0 -0
  7. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.clang +2 -0
  8. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.gcc +7 -0
  9. data/src/ruby/ext/grpc/ext-export.clang +0 -1
  10. data/src/ruby/ext/grpc/ext-export.gcc +1 -2
  11. data/src/ruby/ext/grpc/extconf.rb +47 -2
  12. data/src/ruby/ext/grpc/rb_call.c +1 -0
  13. data/src/ruby/ext/grpc/rb_channel.c +1 -0
  14. data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
  15. data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
  16. data/src/ruby/ext/grpc/rb_grpc.c +1 -0
  17. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -38
  18. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +59 -59
  19. data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
  20. data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
  21. data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
  22. data/src/ruby/lib/grpc/{grpc_c.so → 3.2/grpc_c.so} +0 -0
  23. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
  24. data/src/ruby/lib/grpc/version.rb +1 -1
  25. data/src/ruby/spec/channel_spec.rb +0 -43
  26. data/src/ruby/spec/client_server_spec.rb +20 -8
  27. data/src/ruby/spec/generic/active_call_spec.rb +12 -3
  28. metadata +28 -2564
  29. data/.yardopts +0 -1
  30. data/Makefile +0 -3169
  31. data/include/grpc/byte_buffer.h +0 -27
  32. data/include/grpc/byte_buffer_reader.h +0 -26
  33. data/include/grpc/census.h +0 -40
  34. data/include/grpc/compression.h +0 -75
  35. data/include/grpc/event_engine/README.md +0 -38
  36. data/include/grpc/event_engine/endpoint_config.h +0 -49
  37. data/include/grpc/event_engine/event_engine.h +0 -446
  38. data/include/grpc/event_engine/internal/memory_allocator_impl.h +0 -68
  39. data/include/grpc/event_engine/memory_allocator.h +0 -211
  40. data/include/grpc/event_engine/memory_request.h +0 -57
  41. data/include/grpc/event_engine/port.h +0 -39
  42. data/include/grpc/event_engine/slice.h +0 -286
  43. data/include/grpc/event_engine/slice_buffer.h +0 -118
  44. data/include/grpc/fork.h +0 -26
  45. data/include/grpc/grpc.h +0 -605
  46. data/include/grpc/grpc_cronet.h +0 -38
  47. data/include/grpc/grpc_posix.h +0 -63
  48. data/include/grpc/grpc_security.h +0 -1270
  49. data/include/grpc/grpc_security_constants.h +0 -152
  50. data/include/grpc/impl/codegen/README.md +0 -22
  51. data/include/grpc/impl/codegen/atm.h +0 -97
  52. data/include/grpc/impl/codegen/atm_gcc_atomic.h +0 -84
  53. data/include/grpc/impl/codegen/atm_gcc_sync.h +0 -85
  54. data/include/grpc/impl/codegen/atm_windows.h +0 -132
  55. data/include/grpc/impl/codegen/byte_buffer.h +0 -103
  56. data/include/grpc/impl/codegen/byte_buffer_reader.h +0 -44
  57. data/include/grpc/impl/codegen/compression_types.h +0 -109
  58. data/include/grpc/impl/codegen/connectivity_state.h +0 -47
  59. data/include/grpc/impl/codegen/fork.h +0 -50
  60. data/include/grpc/impl/codegen/gpr_slice.h +0 -71
  61. data/include/grpc/impl/codegen/gpr_types.h +0 -62
  62. data/include/grpc/impl/codegen/grpc_types.h +0 -818
  63. data/include/grpc/impl/codegen/log.h +0 -112
  64. data/include/grpc/impl/codegen/port_platform.h +0 -782
  65. data/include/grpc/impl/codegen/propagation_bits.h +0 -54
  66. data/include/grpc/impl/codegen/slice.h +0 -132
  67. data/include/grpc/impl/codegen/status.h +0 -156
  68. data/include/grpc/impl/codegen/sync.h +0 -68
  69. data/include/grpc/impl/codegen/sync_abseil.h +0 -38
  70. data/include/grpc/impl/codegen/sync_custom.h +0 -40
  71. data/include/grpc/impl/codegen/sync_generic.h +0 -51
  72. data/include/grpc/impl/codegen/sync_posix.h +0 -54
  73. data/include/grpc/impl/codegen/sync_windows.h +0 -42
  74. data/include/grpc/load_reporting.h +0 -48
  75. data/include/grpc/module.modulemap +0 -64
  76. data/include/grpc/slice.h +0 -161
  77. data/include/grpc/slice_buffer.h +0 -84
  78. data/include/grpc/status.h +0 -26
  79. data/include/grpc/support/alloc.h +0 -52
  80. data/include/grpc/support/atm.h +0 -26
  81. data/include/grpc/support/atm_gcc_atomic.h +0 -26
  82. data/include/grpc/support/atm_gcc_sync.h +0 -26
  83. data/include/grpc/support/atm_windows.h +0 -26
  84. data/include/grpc/support/cpu.h +0 -44
  85. data/include/grpc/support/log.h +0 -26
  86. data/include/grpc/support/log_windows.h +0 -38
  87. data/include/grpc/support/port_platform.h +0 -24
  88. data/include/grpc/support/string_util.h +0 -51
  89. data/include/grpc/support/sync.h +0 -282
  90. data/include/grpc/support/sync_abseil.h +0 -26
  91. data/include/grpc/support/sync_custom.h +0 -26
  92. data/include/grpc/support/sync_generic.h +0 -26
  93. data/include/grpc/support/sync_posix.h +0 -26
  94. data/include/grpc/support/sync_windows.h +0 -26
  95. data/include/grpc/support/thd_id.h +0 -44
  96. data/include/grpc/support/time.h +0 -92
  97. data/include/grpc/support/workaround_list.h +0 -31
  98. data/src/core/ext/filters/census/grpc_context.cc +0 -42
  99. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +0 -309
  100. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +0 -141
  101. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +0 -96
  102. data/src/core/ext/filters/channel_idle/idle_filter_state.h +0 -68
  103. data/src/core/ext/filters/client_channel/backend_metric.cc +0 -84
  104. data/src/core/ext/filters/client_channel/backend_metric.h +0 -47
  105. data/src/core/ext/filters/client_channel/backup_poller.cc +0 -187
  106. data/src/core/ext/filters/client_channel/backup_poller.h +0 -40
  107. data/src/core/ext/filters/client_channel/channel_connectivity.cc +0 -242
  108. data/src/core/ext/filters/client_channel/client_channel.cc +0 -3208
  109. data/src/core/ext/filters/client_channel/client_channel.h +0 -627
  110. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +0 -94
  111. data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -85
  112. data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -32
  113. data/src/core/ext/filters/client_channel/client_channel_factory.h +0 -46
  114. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +0 -42
  115. data/src/core/ext/filters/client_channel/config_selector.cc +0 -60
  116. data/src/core/ext/filters/client_channel/config_selector.h +0 -155
  117. data/src/core/ext/filters/client_channel/connector.h +0 -84
  118. data/src/core/ext/filters/client_channel/dynamic_filters.cc +0 -202
  119. data/src/core/ext/filters/client_channel/dynamic_filters.h +0 -109
  120. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +0 -65
  121. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -63
  122. data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -176
  123. data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
  124. data/src/core/ext/filters/client_channel/http_proxy.cc +0 -201
  125. data/src/core/ext/filters/client_channel/http_proxy.h +0 -52
  126. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +0 -101
  127. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +0 -103
  128. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +0 -49
  129. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +0 -320
  130. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +0 -89
  131. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +0 -149
  132. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +0 -30
  133. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +0 -1942
  134. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -40
  135. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -89
  136. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +0 -41
  137. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +0 -92
  138. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +0 -82
  139. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +0 -202
  140. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +0 -76
  141. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +0 -416
  142. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +0 -57
  143. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +0 -1140
  144. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +0 -94
  145. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +0 -545
  146. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +0 -954
  147. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +0 -891
  148. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +0 -47
  149. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +0 -2513
  150. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +0 -531
  151. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +0 -439
  152. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +0 -775
  153. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +0 -772
  154. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +0 -66
  155. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +0 -29
  156. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +0 -800
  157. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +0 -731
  158. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +0 -1300
  159. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +0 -60
  160. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +0 -59
  161. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +0 -149
  162. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +0 -877
  163. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +0 -91
  164. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +0 -116
  165. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +0 -883
  166. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +0 -1206
  167. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +0 -137
  168. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +0 -29
  169. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +0 -35
  170. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +0 -30
  171. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +0 -30
  172. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +0 -203
  173. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +0 -370
  174. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -110
  175. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +0 -464
  176. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +0 -259
  177. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +0 -123
  178. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +0 -193
  179. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +0 -1130
  180. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +0 -30
  181. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
  182. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +0 -108
  183. data/src/core/ext/filters/client_channel/retry_filter.cc +0 -2683
  184. data/src/core/ext/filters/client_channel/retry_filter.h +0 -31
  185. data/src/core/ext/filters/client_channel/retry_service_config.cc +0 -324
  186. data/src/core/ext/filters/client_channel/retry_service_config.h +0 -108
  187. data/src/core/ext/filters/client_channel/retry_throttle.cc +0 -141
  188. data/src/core/ext/filters/client_channel/retry_throttle.h +0 -91
  189. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +0 -174
  190. data/src/core/ext/filters/client_channel/subchannel.cc +0 -978
  191. data/src/core/ext/filters/client_channel/subchannel.h +0 -435
  192. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +0 -38
  193. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +0 -66
  194. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +0 -100
  195. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +0 -471
  196. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +0 -222
  197. data/src/core/ext/filters/deadline/deadline_filter.cc +0 -401
  198. data/src/core/ext/filters/deadline/deadline_filter.h +0 -93
  199. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +0 -279
  200. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -75
  201. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
  202. data/src/core/ext/filters/fault_injection/service_config_parser.h +0 -104
  203. data/src/core/ext/filters/http/client/http_client_filter.cc +0 -159
  204. data/src/core/ext/filters/http/client/http_client_filter.h +0 -61
  205. data/src/core/ext/filters/http/client_authority_filter.cc +0 -90
  206. data/src/core/ext/filters/http/client_authority_filter.h +0 -56
  207. data/src/core/ext/filters/http/http_filters_plugin.cc +0 -97
  208. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -332
  209. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -52
  210. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -322
  211. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +0 -32
  212. data/src/core/ext/filters/http/server/http_server_filter.cc +0 -160
  213. data/src/core/ext/filters/http/server/http_server_filter.h +0 -63
  214. data/src/core/ext/filters/message_size/message_size_filter.cc +0 -404
  215. data/src/core/ext/filters/message_size/message_size_filter.h +0 -83
  216. data/src/core/ext/filters/rbac/rbac_filter.cc +0 -174
  217. data/src/core/ext/filters/rbac/rbac_filter.h +0 -84
  218. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +0 -621
  219. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +0 -85
  220. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -62
  221. data/src/core/ext/filters/server_config_selector/server_config_selector.h +0 -85
  222. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +0 -161
  223. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +0 -33
  224. data/src/core/ext/transport/chttp2/alpn/alpn.cc +0 -45
  225. data/src/core/ext/transport/chttp2/alpn/alpn.h +0 -36
  226. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +0 -438
  227. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -77
  228. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +0 -1109
  229. data/src/core/ext/transport/chttp2/server/chttp2_server.h +0 -47
  230. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +0 -252
  231. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +0 -58
  232. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +0 -232
  233. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +0 -42
  234. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +0 -3004
  235. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -77
  236. data/src/core/ext/transport/chttp2/transport/context_list.cc +0 -71
  237. data/src/core/ext/transport/chttp2/transport/context_list.h +0 -54
  238. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +0 -287
  239. data/src/core/ext/transport/chttp2/transport/decode_huff.h +0 -1018
  240. data/src/core/ext/transport/chttp2/transport/flow_control.cc +0 -411
  241. data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -385
  242. data/src/core/ext/transport/chttp2/transport/frame.h +0 -43
  243. data/src/core/ext/transport/chttp2/transport/frame_data.cc +0 -155
  244. data/src/core/ext/transport/chttp2/transport/frame_data.h +0 -60
  245. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +0 -190
  246. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +0 -65
  247. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +0 -136
  248. data/src/core/ext/transport/chttp2/transport/frame_ping.h +0 -49
  249. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +0 -127
  250. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +0 -54
  251. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +0 -243
  252. data/src/core/ext/transport/chttp2/transport/frame_settings.h +0 -66
  253. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +0 -121
  254. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +0 -46
  255. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +0 -47
  256. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +0 -668
  257. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +0 -236
  258. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -88
  259. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +0 -80
  260. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +0 -1390
  261. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -142
  262. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -246
  263. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +0 -137
  264. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +0 -62
  265. data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -60
  266. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +0 -92
  267. data/src/core/ext/transport/chttp2/transport/huffsyms.h +0 -32
  268. data/src/core/ext/transport/chttp2/transport/internal.h +0 -787
  269. data/src/core/ext/transport/chttp2/transport/parsing.cc +0 -731
  270. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +0 -216
  271. data/src/core/ext/transport/chttp2/transport/stream_map.cc +0 -177
  272. data/src/core/ext/transport/chttp2/transport/stream_map.h +0 -68
  273. data/src/core/ext/transport/chttp2/transport/varint.cc +0 -62
  274. data/src/core/ext/transport/chttp2/transport/varint.h +0 -73
  275. data/src/core/ext/transport/chttp2/transport/writing.cc +0 -683
  276. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
  277. data/src/core/ext/transport/inproc/inproc_transport.cc +0 -1292
  278. data/src/core/ext/transport/inproc/inproc_transport.h +0 -34
  279. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +0 -117
  280. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +0 -502
  281. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +0 -121
  282. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +0 -569
  283. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +0 -125
  284. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +0 -516
  285. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +0 -352
  286. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +0 -1768
  287. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +0 -56
  288. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +0 -159
  289. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +0 -64
  290. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +0 -189
  291. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +0 -46
  292. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +0 -128
  293. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +0 -43
  294. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +0 -106
  295. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +0 -43
  296. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +0 -101
  297. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +0 -106
  298. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +0 -613
  299. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +0 -48
  300. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +0 -107
  301. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +0 -60
  302. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -81
  303. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +0 -53
  304. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +0 -103
  305. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +0 -270
  306. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +0 -1300
  307. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +0 -413
  308. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +0 -2251
  309. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +0 -95
  310. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +0 -394
  311. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +0 -544
  312. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +0 -3066
  313. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +0 -48
  314. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +0 -107
  315. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +0 -89
  316. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +0 -549
  317. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +0 -299
  318. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +0 -1437
  319. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +0 -145
  320. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +0 -664
  321. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +0 -49
  322. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +0 -120
  323. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +0 -421
  324. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +0 -1891
  325. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +0 -163
  326. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +0 -806
  327. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +0 -47
  328. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +0 -104
  329. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +0 -47
  330. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +0 -107
  331. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +0 -58
  332. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +0 -159
  333. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +0 -269
  334. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +0 -1329
  335. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +0 -220
  336. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +0 -1255
  337. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +0 -49
  338. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +0 -126
  339. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +0 -323
  340. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +0 -1759
  341. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +0 -40
  342. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +0 -88
  343. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +0 -60
  344. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +0 -177
  345. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +0 -47
  346. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +0 -148
  347. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +0 -56
  348. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +0 -182
  349. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +0 -48
  350. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +0 -122
  351. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +0 -106
  352. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +0 -360
  353. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -144
  354. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +0 -647
  355. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +0 -129
  356. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +0 -588
  357. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +0 -46
  358. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +0 -98
  359. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +0 -189
  360. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +0 -1041
  361. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +0 -186
  362. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +0 -969
  363. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +0 -63
  364. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +0 -238
  365. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +0 -59
  366. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +0 -186
  367. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +0 -53
  368. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +0 -140
  369. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +0 -165
  370. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +0 -748
  371. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +0 -174
  372. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +0 -757
  373. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +0 -221
  374. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +0 -1094
  375. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +0 -86
  376. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +0 -402
  377. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +0 -1096
  378. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +0 -6440
  379. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +0 -79
  380. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +0 -267
  381. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +0 -241
  382. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +0 -1191
  383. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +0 -44
  384. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +0 -92
  385. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +0 -49
  386. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +0 -107
  387. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +0 -63
  388. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +0 -175
  389. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +0 -52
  390. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +0 -138
  391. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +0 -63
  392. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +0 -254
  393. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -46
  394. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +0 -98
  395. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +0 -47
  396. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +0 -98
  397. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +0 -69
  398. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +0 -221
  399. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +0 -33
  400. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +0 -43
  401. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +0 -71
  402. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +0 -226
  403. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +0 -54
  404. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +0 -150
  405. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +0 -42
  406. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +0 -89
  407. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +0 -96
  408. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +0 -395
  409. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +0 -94
  410. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +0 -445
  411. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +0 -71
  412. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +0 -237
  413. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +0 -55
  414. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +0 -172
  415. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +0 -471
  416. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +0 -2731
  417. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +0 -52
  418. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +0 -168
  419. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +0 -46
  420. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +0 -98
  421. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +0 -28
  422. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +0 -38
  423. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +0 -177
  424. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +0 -932
  425. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +0 -88
  426. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +0 -320
  427. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +0 -191
  428. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +0 -1063
  429. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +0 -62
  430. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +0 -168
  431. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +0 -38
  432. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +0 -74
  433. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +0 -280
  434. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +0 -1375
  435. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +0 -68
  436. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +0 -218
  437. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +0 -138
  438. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +0 -651
  439. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +0 -48
  440. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +0 -116
  441. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +0 -76
  442. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +0 -265
  443. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +0 -74
  444. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +0 -230
  445. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +0 -62
  446. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +0 -196
  447. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +0 -49
  448. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +0 -121
  449. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +0 -48
  450. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +0 -117
  451. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +0 -47
  452. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +0 -104
  453. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +0 -80
  454. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +0 -246
  455. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +0 -67
  456. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +0 -226
  457. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +0 -60
  458. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +0 -178
  459. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +0 -78
  460. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +0 -306
  461. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +0 -107
  462. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +0 -457
  463. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +0 -107
  464. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +0 -439
  465. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +0 -66
  466. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +0 -213
  467. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +0 -26
  468. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +0 -39
  469. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +0 -42
  470. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +0 -143
  471. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +0 -54
  472. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +0 -147
  473. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +0 -66
  474. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +0 -208
  475. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +0 -63
  476. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +0 -202
  477. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +0 -26
  478. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +0 -41
  479. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +0 -43
  480. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +0 -101
  481. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +0 -51
  482. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +0 -131
  483. data/src/core/ext/upb-generated/google/api/annotations.upb.c +0 -40
  484. data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -53
  485. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +0 -271
  486. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +0 -1280
  487. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +0 -283
  488. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +0 -1386
  489. data/src/core/ext/upb-generated/google/api/http.upb.c +0 -81
  490. data/src/core/ext/upb-generated/google/api/http.upb.h +0 -343
  491. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +0 -46
  492. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +0 -115
  493. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +0 -40
  494. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +0 -92
  495. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +0 -578
  496. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +0 -3217
  497. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +0 -40
  498. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +0 -92
  499. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +0 -35
  500. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +0 -74
  501. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +0 -95
  502. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +0 -329
  503. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +0 -40
  504. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +0 -92
  505. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +0 -127
  506. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +0 -475
  507. data/src/core/ext/upb-generated/google/rpc/status.upb.c +0 -46
  508. data/src/core/ext/upb-generated/google/rpc/status.upb.h +0 -115
  509. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +0 -84
  510. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +0 -335
  511. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +0 -63
  512. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +0 -188
  513. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +0 -240
  514. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +0 -1173
  515. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +0 -57
  516. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +0 -182
  517. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +0 -50
  518. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +0 -139
  519. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +0 -161
  520. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +0 -705
  521. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +0 -70
  522. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +0 -216
  523. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +0 -175
  524. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +0 -792
  525. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +0 -110
  526. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +0 -290
  527. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -55
  528. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +0 -112
  529. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +0 -38
  530. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -46
  531. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +0 -54
  532. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +0 -119
  533. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +0 -53
  534. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +0 -103
  535. data/src/core/ext/upb-generated/validate/validate.upb.c +0 -560
  536. data/src/core/ext/upb-generated/validate/validate.upb.h +0 -4105
  537. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +0 -110
  538. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +0 -290
  539. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +0 -55
  540. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +0 -112
  541. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +0 -38
  542. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +0 -46
  543. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +0 -105
  544. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +0 -306
  545. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +0 -53
  546. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +0 -103
  547. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +0 -41
  548. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +0 -83
  549. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +0 -66
  550. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +0 -208
  551. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +0 -56
  552. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +0 -119
  553. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +0 -46
  554. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +0 -107
  555. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +0 -49
  556. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +0 -131
  557. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +0 -68
  558. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +0 -248
  559. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +0 -49
  560. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +0 -125
  561. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +0 -73
  562. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +0 -191
  563. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +0 -47
  564. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +0 -113
  565. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +0 -207
  566. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +0 -914
  567. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +0 -52
  568. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +0 -151
  569. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +0 -65
  570. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +0 -226
  571. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +0 -46
  572. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +0 -107
  573. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +0 -84
  574. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +0 -55
  575. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +0 -127
  576. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +0 -50
  577. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +0 -102
  578. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -55
  579. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +0 -256
  580. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +0 -115
  581. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +0 -43
  582. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +0 -40
  583. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +0 -56
  584. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +0 -40
  585. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +0 -49
  586. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +0 -35
  587. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +0 -46
  588. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +0 -35
  589. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +0 -46
  590. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +0 -35
  591. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +0 -142
  592. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +0 -40
  593. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +0 -51
  594. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +0 -35
  595. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +0 -48
  596. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +0 -30
  597. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +0 -38
  598. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +0 -35
  599. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +0 -222
  600. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +0 -105
  601. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +0 -397
  602. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +0 -120
  603. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +0 -98
  604. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +0 -45
  605. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +0 -559
  606. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +0 -155
  607. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +0 -51
  608. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +0 -35
  609. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +0 -138
  610. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +0 -35
  611. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +0 -206
  612. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +0 -105
  613. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +0 -112
  614. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +0 -65
  615. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +0 -54
  616. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +0 -35
  617. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +0 -270
  618. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +0 -150
  619. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +0 -168
  620. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +0 -65
  621. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +0 -53
  622. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +0 -35
  623. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +0 -47
  624. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +0 -35
  625. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +0 -53
  626. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +0 -40
  627. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +0 -235
  628. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +0 -100
  629. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +0 -228
  630. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +0 -75
  631. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +0 -53
  632. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +0 -35
  633. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +0 -300
  634. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +0 -110
  635. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +0 -41
  636. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +0 -35
  637. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +0 -55
  638. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +0 -40
  639. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +0 -57
  640. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +0 -35
  641. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +0 -70
  642. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +0 -35
  643. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +0 -49
  644. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +0 -35
  645. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +0 -99
  646. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +0 -50
  647. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +0 -128
  648. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +0 -60
  649. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +0 -136
  650. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +0 -55
  651. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +0 -48
  652. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +0 -35
  653. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +0 -220
  654. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +0 -65
  655. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +0 -190
  656. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +0 -65
  657. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +0 -88
  658. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +0 -35
  659. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +0 -71
  660. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +0 -40
  661. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +0 -69
  662. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +0 -35
  663. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +0 -125
  664. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +0 -70
  665. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +0 -134
  666. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +0 -75
  667. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +0 -194
  668. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +0 -75
  669. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +0 -112
  670. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -40
  671. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +0 -939
  672. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +0 -305
  673. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +0 -77
  674. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +0 -45
  675. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +0 -199
  676. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +0 -90
  677. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +0 -54
  678. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +0 -35
  679. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +0 -57
  680. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +0 -35
  681. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +0 -57
  682. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +0 -40
  683. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +0 -72
  684. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +0 -35
  685. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +0 -99
  686. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +0 -35
  687. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +0 -47
  688. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +0 -35
  689. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +0 -52
  690. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +0 -35
  691. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +0 -71
  692. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +0 -40
  693. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +0 -61
  694. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +0 -30
  695. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +0 -75
  696. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +0 -40
  697. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +0 -77
  698. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +0 -35
  699. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +0 -50
  700. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +0 -35
  701. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +0 -92
  702. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +0 -55
  703. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +0 -117
  704. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +0 -45
  705. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +0 -80
  706. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +0 -40
  707. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +0 -78
  708. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +0 -35
  709. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +0 -562
  710. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +0 -130
  711. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +0 -48
  712. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +0 -30
  713. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +0 -213
  714. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +0 -65
  715. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +0 -91
  716. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +0 -45
  717. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +0 -254
  718. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +0 -65
  719. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +0 -58
  720. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +0 -40
  721. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +0 -58
  722. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +0 -35
  723. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +0 -197
  724. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +0 -100
  725. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +0 -76
  726. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +0 -40
  727. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +0 -153
  728. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +0 -55
  729. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +0 -46
  730. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +0 -35
  731. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +0 -56
  732. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +0 -50
  733. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +0 -52
  734. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +0 -50
  735. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +0 -61
  736. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +0 -40
  737. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +0 -54
  738. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +0 -35
  739. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +0 -52
  740. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +0 -35
  741. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +0 -51
  742. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +0 -35
  743. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +0 -71
  744. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +0 -45
  745. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +0 -65
  746. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +0 -40
  747. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +0 -58
  748. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +0 -40
  749. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +0 -75
  750. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +0 -45
  751. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +0 -78
  752. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +0 -65
  753. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +0 -85
  754. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +0 -55
  755. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +0 -53
  756. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +0 -45
  757. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +0 -36
  758. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +0 -30
  759. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +0 -94
  760. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +0 -35
  761. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +0 -54
  762. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +0 -40
  763. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +0 -48
  764. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +0 -45
  765. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +0 -69
  766. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +0 -40
  767. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +0 -38
  768. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +0 -30
  769. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +0 -44
  770. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +0 -35
  771. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +0 -57
  772. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +0 -35
  773. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +0 -40
  774. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +0 -30
  775. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +0 -154
  776. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +0 -95
  777. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +0 -153
  778. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +0 -100
  779. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +0 -52
  780. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +0 -45
  781. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +0 -39
  782. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +0 -35
  783. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +0 -34
  784. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +0 -35
  785. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +0 -331
  786. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +0 -165
  787. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +0 -35
  788. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +0 -35
  789. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +0 -32
  790. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +0 -35
  791. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +0 -54
  792. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +0 -50
  793. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +0 -35
  794. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +0 -35
  795. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +0 -45
  796. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +0 -75
  797. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +0 -37
  798. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +0 -35
  799. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +0 -67
  800. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +0 -50
  801. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +0 -99
  802. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +0 -75
  803. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +0 -62
  804. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +0 -45
  805. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +0 -47
  806. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +0 -35
  807. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +0 -34
  808. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +0 -30
  809. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +0 -46
  810. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +0 -35
  811. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +0 -39
  812. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +0 -35
  813. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +0 -283
  814. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +0 -145
  815. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +0 -63
  816. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +0 -45
  817. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +0 -47
  818. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +0 -35
  819. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +0 -35
  820. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +0 -30
  821. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +0 -64
  822. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +0 -50
  823. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +0 -40
  824. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +0 -35
  825. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +0 -38
  826. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +0 -35
  827. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +0 -56
  828. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +0 -40
  829. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +0 -39
  830. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +0 -40
  831. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +0 -41
  832. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +0 -35
  833. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +0 -45
  834. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +0 -35
  835. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +0 -61
  836. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +0 -40
  837. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +0 -46
  838. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +0 -35
  839. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +0 -126
  840. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +0 -80
  841. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +0 -40
  842. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +0 -40
  843. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +0 -52
  844. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +0 -40
  845. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +0 -40
  846. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +0 -35
  847. data/src/core/ext/xds/certificate_provider_store.cc +0 -159
  848. data/src/core/ext/xds/certificate_provider_store.h +0 -138
  849. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +0 -153
  850. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +0 -77
  851. data/src/core/ext/xds/upb_utils.h +0 -45
  852. data/src/core/ext/xds/xds_api.cc +0 -699
  853. data/src/core/ext/xds/xds_api.h +0 -196
  854. data/src/core/ext/xds/xds_bootstrap.cc +0 -38
  855. data/src/core/ext/xds/xds_bootstrap.h +0 -89
  856. data/src/core/ext/xds/xds_bootstrap_grpc.cc +0 -370
  857. data/src/core/ext/xds/xds_bootstrap_grpc.h +0 -169
  858. data/src/core/ext/xds/xds_certificate_provider.cc +0 -419
  859. data/src/core/ext/xds/xds_certificate_provider.h +0 -183
  860. data/src/core/ext/xds/xds_channel_args.h +0 -32
  861. data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -120
  862. data/src/core/ext/xds/xds_channel_stack_modifier.h +0 -65
  863. data/src/core/ext/xds/xds_client.cc +0 -2000
  864. data/src/core/ext/xds/xds_client.h +0 -336
  865. data/src/core/ext/xds/xds_client_grpc.cc +0 -229
  866. data/src/core/ext/xds/xds_client_grpc.h +0 -79
  867. data/src/core/ext/xds/xds_client_stats.cc +0 -159
  868. data/src/core/ext/xds/xds_client_stats.h +0 -242
  869. data/src/core/ext/xds/xds_cluster.cc +0 -551
  870. data/src/core/ext/xds/xds_cluster.h +0 -120
  871. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +0 -149
  872. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +0 -73
  873. data/src/core/ext/xds/xds_common_types.cc +0 -434
  874. data/src/core/ext/xds/xds_common_types.h +0 -102
  875. data/src/core/ext/xds/xds_endpoint.cc +0 -383
  876. data/src/core/ext/xds/xds_endpoint.h +0 -142
  877. data/src/core/ext/xds/xds_http_fault_filter.cc +0 -222
  878. data/src/core/ext/xds/xds_http_fault_filter.h +0 -66
  879. data/src/core/ext/xds/xds_http_filters.cc +0 -129
  880. data/src/core/ext/xds/xds_http_filters.h +0 -133
  881. data/src/core/ext/xds/xds_http_rbac_filter.cc +0 -560
  882. data/src/core/ext/xds/xds_http_rbac_filter.h +0 -61
  883. data/src/core/ext/xds/xds_lb_policy_registry.cc +0 -290
  884. data/src/core/ext/xds/xds_lb_policy_registry.h +0 -72
  885. data/src/core/ext/xds/xds_listener.cc +0 -1102
  886. data/src/core/ext/xds/xds_listener.h +0 -228
  887. data/src/core/ext/xds/xds_resource_type.cc +0 -33
  888. data/src/core/ext/xds/xds_resource_type.h +0 -112
  889. data/src/core/ext/xds/xds_resource_type_impl.h +0 -91
  890. data/src/core/ext/xds/xds_route_config.cc +0 -1152
  891. data/src/core/ext/xds/xds_route_config.h +0 -241
  892. data/src/core/ext/xds/xds_routing.cc +0 -263
  893. data/src/core/ext/xds/xds_routing.h +0 -104
  894. data/src/core/ext/xds/xds_server_config_fetcher.cc +0 -1360
  895. data/src/core/ext/xds/xds_transport.h +0 -86
  896. data/src/core/ext/xds/xds_transport_grpc.cc +0 -357
  897. data/src/core/ext/xds/xds_transport_grpc.h +0 -135
  898. data/src/core/lib/address_utils/parse_address.cc +0 -339
  899. data/src/core/lib/address_utils/parse_address.h +0 -86
  900. data/src/core/lib/address_utils/sockaddr_utils.cc +0 -443
  901. data/src/core/lib/address_utils/sockaddr_utils.h +0 -100
  902. data/src/core/lib/avl/avl.h +0 -482
  903. data/src/core/lib/backoff/backoff.cc +0 -47
  904. data/src/core/lib/backoff/backoff.h +0 -89
  905. data/src/core/lib/channel/call_finalization.h +0 -88
  906. data/src/core/lib/channel/call_tracer.h +0 -94
  907. data/src/core/lib/channel/channel_args.cc +0 -626
  908. data/src/core/lib/channel/channel_args.h +0 -529
  909. data/src/core/lib/channel/channel_args_preconditioning.cc +0 -43
  910. data/src/core/lib/channel/channel_args_preconditioning.h +0 -62
  911. data/src/core/lib/channel/channel_fwd.h +0 -26
  912. data/src/core/lib/channel/channel_stack.cc +0 -311
  913. data/src/core/lib/channel/channel_stack.h +0 -381
  914. data/src/core/lib/channel/channel_stack_builder.cc +0 -54
  915. data/src/core/lib/channel/channel_stack_builder.h +0 -112
  916. data/src/core/lib/channel/channel_stack_builder_impl.cc +0 -95
  917. data/src/core/lib/channel/channel_stack_builder_impl.h +0 -46
  918. data/src/core/lib/channel/channel_trace.cc +0 -184
  919. data/src/core/lib/channel/channel_trace.h +0 -138
  920. data/src/core/lib/channel/channelz.cc +0 -583
  921. data/src/core/lib/channel/channelz.h +0 -374
  922. data/src/core/lib/channel/channelz_registry.cc +0 -277
  923. data/src/core/lib/channel/channelz_registry.h +0 -100
  924. data/src/core/lib/channel/connected_channel.cc +0 -241
  925. data/src/core/lib/channel/connected_channel.h +0 -36
  926. data/src/core/lib/channel/context.h +0 -63
  927. data/src/core/lib/channel/promise_based_filter.cc +0 -1262
  928. data/src/core/lib/channel/promise_based_filter.h +0 -571
  929. data/src/core/lib/channel/status_util.cc +0 -138
  930. data/src/core/lib/channel/status_util.h +0 -74
  931. data/src/core/lib/compression/compression.cc +0 -96
  932. data/src/core/lib/compression/compression_internal.cc +0 -249
  933. data/src/core/lib/compression/compression_internal.h +0 -93
  934. data/src/core/lib/compression/message_compress.cc +0 -194
  935. data/src/core/lib/compression/message_compress.h +0 -39
  936. data/src/core/lib/config/core_configuration.cc +0 -111
  937. data/src/core/lib/config/core_configuration.h +0 -243
  938. data/src/core/lib/debug/stats.cc +0 -165
  939. data/src/core/lib/debug/stats.h +0 -70
  940. data/src/core/lib/debug/stats_data.cc +0 -190
  941. data/src/core/lib/debug/stats_data.h +0 -151
  942. data/src/core/lib/debug/trace.cc +0 -153
  943. data/src/core/lib/debug/trace.h +0 -133
  944. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +0 -40
  945. data/src/core/lib/event_engine/channel_args_endpoint_config.h +0 -49
  946. data/src/core/lib/event_engine/default_event_engine.cc +0 -71
  947. data/src/core/lib/event_engine/default_event_engine.h +0 -37
  948. data/src/core/lib/event_engine/default_event_engine_factory.cc +0 -50
  949. data/src/core/lib/event_engine/default_event_engine_factory.h +0 -33
  950. data/src/core/lib/event_engine/executor/executor.h +0 -38
  951. data/src/core/lib/event_engine/executor/threaded_executor.cc +0 -36
  952. data/src/core/lib/event_engine/executor/threaded_executor.h +0 -44
  953. data/src/core/lib/event_engine/forkable.cc +0 -101
  954. data/src/core/lib/event_engine/forkable.h +0 -61
  955. data/src/core/lib/event_engine/handle_containers.h +0 -67
  956. data/src/core/lib/event_engine/memory_allocator.cc +0 -74
  957. data/src/core/lib/event_engine/poller.h +0 -56
  958. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +0 -142
  959. data/src/core/lib/event_engine/posix_engine/posix_engine.h +0 -121
  960. data/src/core/lib/event_engine/posix_engine/timer.cc +0 -311
  961. data/src/core/lib/event_engine/posix_engine/timer.h +0 -193
  962. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +0 -107
  963. data/src/core/lib/event_engine/posix_engine/timer_heap.h +0 -56
  964. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +0 -311
  965. data/src/core/lib/event_engine/posix_engine/timer_manager.h +0 -142
  966. data/src/core/lib/event_engine/resolved_address.cc +0 -41
  967. data/src/core/lib/event_engine/slice.cc +0 -102
  968. data/src/core/lib/event_engine/slice_buffer.cc +0 -50
  969. data/src/core/lib/event_engine/socket_notifier.h +0 -55
  970. data/src/core/lib/event_engine/thread_pool.cc +0 -195
  971. data/src/core/lib/event_engine/thread_pool.h +0 -114
  972. data/src/core/lib/event_engine/time_util.cc +0 -30
  973. data/src/core/lib/event_engine/time_util.h +0 -32
  974. data/src/core/lib/event_engine/trace.cc +0 -18
  975. data/src/core/lib/event_engine/trace.h +0 -30
  976. data/src/core/lib/event_engine/utils.cc +0 -44
  977. data/src/core/lib/event_engine/utils.h +0 -36
  978. data/src/core/lib/event_engine/windows/iocp.cc +0 -155
  979. data/src/core/lib/event_engine/windows/iocp.h +0 -69
  980. data/src/core/lib/event_engine/windows/win_socket.cc +0 -196
  981. data/src/core/lib/event_engine/windows/win_socket.h +0 -120
  982. data/src/core/lib/event_engine/windows/windows_engine.cc +0 -159
  983. data/src/core/lib/event_engine/windows/windows_engine.h +0 -120
  984. data/src/core/lib/experiments/config.cc +0 -146
  985. data/src/core/lib/experiments/config.h +0 -43
  986. data/src/core/lib/experiments/experiments.cc +0 -75
  987. data/src/core/lib/experiments/experiments.h +0 -56
  988. data/src/core/lib/gpr/alloc.cc +0 -68
  989. data/src/core/lib/gpr/alloc.h +0 -28
  990. data/src/core/lib/gpr/atm.cc +0 -35
  991. data/src/core/lib/gpr/cpu_iphone.cc +0 -44
  992. data/src/core/lib/gpr/cpu_linux.cc +0 -82
  993. data/src/core/lib/gpr/cpu_posix.cc +0 -83
  994. data/src/core/lib/gpr/cpu_windows.cc +0 -33
  995. data/src/core/lib/gpr/log.cc +0 -145
  996. data/src/core/lib/gpr/log_android.cc +0 -77
  997. data/src/core/lib/gpr/log_linux.cc +0 -114
  998. data/src/core/lib/gpr/log_posix.cc +0 -110
  999. data/src/core/lib/gpr/log_windows.cc +0 -115
  1000. data/src/core/lib/gpr/murmur_hash.cc +0 -82
  1001. data/src/core/lib/gpr/murmur_hash.h +0 -29
  1002. data/src/core/lib/gpr/spinlock.h +0 -53
  1003. data/src/core/lib/gpr/string.cc +0 -343
  1004. data/src/core/lib/gpr/string.h +0 -112
  1005. data/src/core/lib/gpr/string_posix.cc +0 -72
  1006. data/src/core/lib/gpr/string_util_windows.cc +0 -55
  1007. data/src/core/lib/gpr/string_windows.cc +0 -69
  1008. data/src/core/lib/gpr/sync.cc +0 -124
  1009. data/src/core/lib/gpr/sync_abseil.cc +0 -100
  1010. data/src/core/lib/gpr/sync_posix.cc +0 -157
  1011. data/src/core/lib/gpr/sync_windows.cc +0 -120
  1012. data/src/core/lib/gpr/time.cc +0 -267
  1013. data/src/core/lib/gpr/time_posix.cc +0 -177
  1014. data/src/core/lib/gpr/time_precise.cc +0 -168
  1015. data/src/core/lib/gpr/time_precise.h +0 -70
  1016. data/src/core/lib/gpr/time_windows.cc +0 -102
  1017. data/src/core/lib/gpr/tls.h +0 -156
  1018. data/src/core/lib/gpr/tmpfile.h +0 -32
  1019. data/src/core/lib/gpr/tmpfile_msys.cc +0 -58
  1020. data/src/core/lib/gpr/tmpfile_posix.cc +0 -69
  1021. data/src/core/lib/gpr/tmpfile_windows.cc +0 -67
  1022. data/src/core/lib/gpr/useful.h +0 -171
  1023. data/src/core/lib/gpr/wrap_memcpy.cc +0 -43
  1024. data/src/core/lib/gprpp/atomic_utils.h +0 -47
  1025. data/src/core/lib/gprpp/bitset.h +0 -201
  1026. data/src/core/lib/gprpp/chunked_vector.h +0 -257
  1027. data/src/core/lib/gprpp/construct_destruct.h +0 -40
  1028. data/src/core/lib/gprpp/cpp_impl_of.h +0 -49
  1029. data/src/core/lib/gprpp/debug_location.h +0 -87
  1030. data/src/core/lib/gprpp/dual_ref_counted.h +0 -327
  1031. data/src/core/lib/gprpp/env.h +0 -53
  1032. data/src/core/lib/gprpp/env_linux.cc +0 -80
  1033. data/src/core/lib/gprpp/env_posix.cc +0 -47
  1034. data/src/core/lib/gprpp/env_windows.cc +0 -56
  1035. data/src/core/lib/gprpp/examine_stack.cc +0 -43
  1036. data/src/core/lib/gprpp/examine_stack.h +0 -45
  1037. data/src/core/lib/gprpp/fork.cc +0 -233
  1038. data/src/core/lib/gprpp/fork.h +0 -95
  1039. data/src/core/lib/gprpp/global_config.h +0 -93
  1040. data/src/core/lib/gprpp/global_config_custom.h +0 -29
  1041. data/src/core/lib/gprpp/global_config_env.cc +0 -139
  1042. data/src/core/lib/gprpp/global_config_env.h +0 -133
  1043. data/src/core/lib/gprpp/global_config_generic.h +0 -40
  1044. data/src/core/lib/gprpp/host_port.cc +0 -114
  1045. data/src/core/lib/gprpp/host_port.h +0 -56
  1046. data/src/core/lib/gprpp/manual_constructor.h +0 -146
  1047. data/src/core/lib/gprpp/match.h +0 -75
  1048. data/src/core/lib/gprpp/memory.h +0 -53
  1049. data/src/core/lib/gprpp/mpscq.cc +0 -108
  1050. data/src/core/lib/gprpp/mpscq.h +0 -99
  1051. data/src/core/lib/gprpp/no_destruct.h +0 -94
  1052. data/src/core/lib/gprpp/notification.h +0 -67
  1053. data/src/core/lib/gprpp/orphanable.h +0 -122
  1054. data/src/core/lib/gprpp/overload.h +0 -59
  1055. data/src/core/lib/gprpp/packed_table.h +0 -40
  1056. data/src/core/lib/gprpp/ref_counted.h +0 -349
  1057. data/src/core/lib/gprpp/ref_counted_ptr.h +0 -337
  1058. data/src/core/lib/gprpp/single_set_ptr.h +0 -87
  1059. data/src/core/lib/gprpp/sorted_pack.h +0 -98
  1060. data/src/core/lib/gprpp/stat.h +0 -36
  1061. data/src/core/lib/gprpp/stat_posix.cc +0 -54
  1062. data/src/core/lib/gprpp/stat_windows.cc +0 -48
  1063. data/src/core/lib/gprpp/status_helper.cc +0 -454
  1064. data/src/core/lib/gprpp/status_helper.h +0 -191
  1065. data/src/core/lib/gprpp/sync.h +0 -200
  1066. data/src/core/lib/gprpp/table.h +0 -451
  1067. data/src/core/lib/gprpp/tchar.cc +0 -49
  1068. data/src/core/lib/gprpp/tchar.h +0 -33
  1069. data/src/core/lib/gprpp/thd.h +0 -171
  1070. data/src/core/lib/gprpp/thd_posix.cc +0 -211
  1071. data/src/core/lib/gprpp/thd_windows.cc +0 -173
  1072. data/src/core/lib/gprpp/time.cc +0 -235
  1073. data/src/core/lib/gprpp/time.h +0 -356
  1074. data/src/core/lib/gprpp/time_averaged_stats.cc +0 -60
  1075. data/src/core/lib/gprpp/time_averaged_stats.h +0 -79
  1076. data/src/core/lib/gprpp/time_util.cc +0 -81
  1077. data/src/core/lib/gprpp/time_util.h +0 -42
  1078. data/src/core/lib/gprpp/unique_type_name.h +0 -104
  1079. data/src/core/lib/gprpp/validation_errors.cc +0 -61
  1080. data/src/core/lib/gprpp/validation_errors.h +0 -110
  1081. data/src/core/lib/gprpp/work_serializer.cc +0 -247
  1082. data/src/core/lib/gprpp/work_serializer.h +0 -86
  1083. data/src/core/lib/handshaker/proxy_mapper.h +0 -53
  1084. data/src/core/lib/handshaker/proxy_mapper_registry.cc +0 -71
  1085. data/src/core/lib/handshaker/proxy_mapper_registry.h +0 -75
  1086. data/src/core/lib/http/format_request.cc +0 -137
  1087. data/src/core/lib/http/format_request.h +0 -38
  1088. data/src/core/lib/http/httpcli.cc +0 -397
  1089. data/src/core/lib/http/httpcli.h +0 -271
  1090. data/src/core/lib/http/httpcli_security_connector.cc +0 -215
  1091. data/src/core/lib/http/httpcli_ssl_credentials.h +0 -39
  1092. data/src/core/lib/http/parser.cc +0 -462
  1093. data/src/core/lib/http/parser.h +0 -130
  1094. data/src/core/lib/iomgr/block_annotate.h +0 -57
  1095. data/src/core/lib/iomgr/buffer_list.cc +0 -307
  1096. data/src/core/lib/iomgr/buffer_list.h +0 -163
  1097. data/src/core/lib/iomgr/call_combiner.cc +0 -257
  1098. data/src/core/lib/iomgr/call_combiner.h +0 -215
  1099. data/src/core/lib/iomgr/cfstream_handle.cc +0 -210
  1100. data/src/core/lib/iomgr/cfstream_handle.h +0 -90
  1101. data/src/core/lib/iomgr/closure.h +0 -266
  1102. data/src/core/lib/iomgr/combiner.cc +0 -330
  1103. data/src/core/lib/iomgr/combiner.h +0 -89
  1104. data/src/core/lib/iomgr/dualstack_socket_posix.cc +0 -48
  1105. data/src/core/lib/iomgr/dynamic_annotations.h +0 -67
  1106. data/src/core/lib/iomgr/endpoint.cc +0 -67
  1107. data/src/core/lib/iomgr/endpoint.h +0 -109
  1108. data/src/core/lib/iomgr/endpoint_cfstream.cc +0 -375
  1109. data/src/core/lib/iomgr/endpoint_cfstream.h +0 -49
  1110. data/src/core/lib/iomgr/endpoint_pair.h +0 -34
  1111. data/src/core/lib/iomgr/endpoint_pair_posix.cc +0 -81
  1112. data/src/core/lib/iomgr/endpoint_pair_windows.cc +0 -86
  1113. data/src/core/lib/iomgr/error.cc +0 -217
  1114. data/src/core/lib/iomgr/error.h +0 -299
  1115. data/src/core/lib/iomgr/error_cfstream.cc +0 -54
  1116. data/src/core/lib/iomgr/error_cfstream.h +0 -31
  1117. data/src/core/lib/iomgr/ev_apple.cc +0 -360
  1118. data/src/core/lib/iomgr/ev_apple.h +0 -43
  1119. data/src/core/lib/iomgr/ev_epoll1_linux.cc +0 -1367
  1120. data/src/core/lib/iomgr/ev_epoll1_linux.h +0 -31
  1121. data/src/core/lib/iomgr/ev_poll_posix.cc +0 -1448
  1122. data/src/core/lib/iomgr/ev_poll_posix.h +0 -29
  1123. data/src/core/lib/iomgr/ev_posix.cc +0 -375
  1124. data/src/core/lib/iomgr/ev_posix.h +0 -209
  1125. data/src/core/lib/iomgr/ev_windows.cc +0 -30
  1126. data/src/core/lib/iomgr/exec_ctx.cc +0 -133
  1127. data/src/core/lib/iomgr/exec_ctx.h +0 -334
  1128. data/src/core/lib/iomgr/executor.cc +0 -451
  1129. data/src/core/lib/iomgr/executor.h +0 -119
  1130. data/src/core/lib/iomgr/fork_posix.cc +0 -120
  1131. data/src/core/lib/iomgr/fork_windows.cc +0 -41
  1132. data/src/core/lib/iomgr/gethostname.h +0 -26
  1133. data/src/core/lib/iomgr/gethostname_fallback.cc +0 -30
  1134. data/src/core/lib/iomgr/gethostname_host_name_max.cc +0 -40
  1135. data/src/core/lib/iomgr/gethostname_sysconf.cc +0 -40
  1136. data/src/core/lib/iomgr/grpc_if_nametoindex.h +0 -30
  1137. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +0 -42
  1138. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +0 -38
  1139. data/src/core/lib/iomgr/internal_errqueue.cc +0 -59
  1140. data/src/core/lib/iomgr/internal_errqueue.h +0 -186
  1141. data/src/core/lib/iomgr/iocp_windows.cc +0 -157
  1142. data/src/core/lib/iomgr/iocp_windows.h +0 -48
  1143. data/src/core/lib/iomgr/iomgr.cc +0 -200
  1144. data/src/core/lib/iomgr/iomgr.h +0 -60
  1145. data/src/core/lib/iomgr/iomgr_fwd.h +0 -26
  1146. data/src/core/lib/iomgr/iomgr_internal.cc +0 -53
  1147. data/src/core/lib/iomgr/iomgr_internal.h +0 -74
  1148. data/src/core/lib/iomgr/iomgr_posix.cc +0 -91
  1149. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +0 -201
  1150. data/src/core/lib/iomgr/iomgr_windows.cc +0 -105
  1151. data/src/core/lib/iomgr/load_file.cc +0 -81
  1152. data/src/core/lib/iomgr/load_file.h +0 -35
  1153. data/src/core/lib/iomgr/lockfree_event.cc +0 -261
  1154. data/src/core/lib/iomgr/lockfree_event.h +0 -72
  1155. data/src/core/lib/iomgr/nameser.h +0 -106
  1156. data/src/core/lib/iomgr/polling_entity.cc +0 -96
  1157. data/src/core/lib/iomgr/polling_entity.h +0 -74
  1158. data/src/core/lib/iomgr/pollset.cc +0 -56
  1159. data/src/core/lib/iomgr/pollset.h +0 -99
  1160. data/src/core/lib/iomgr/pollset_set.cc +0 -55
  1161. data/src/core/lib/iomgr/pollset_set.h +0 -53
  1162. data/src/core/lib/iomgr/pollset_set_windows.cc +0 -52
  1163. data/src/core/lib/iomgr/pollset_set_windows.h +0 -26
  1164. data/src/core/lib/iomgr/pollset_windows.cc +0 -243
  1165. data/src/core/lib/iomgr/pollset_windows.h +0 -70
  1166. data/src/core/lib/iomgr/port.h +0 -238
  1167. data/src/core/lib/iomgr/python_util.h +0 -47
  1168. data/src/core/lib/iomgr/resolve_address.cc +0 -44
  1169. data/src/core/lib/iomgr/resolve_address.h +0 -117
  1170. data/src/core/lib/iomgr/resolve_address_impl.h +0 -59
  1171. data/src/core/lib/iomgr/resolve_address_posix.cc +0 -215
  1172. data/src/core/lib/iomgr/resolve_address_posix.h +0 -64
  1173. data/src/core/lib/iomgr/resolve_address_windows.cc +0 -199
  1174. data/src/core/lib/iomgr/resolve_address_windows.h +0 -64
  1175. data/src/core/lib/iomgr/resolved_address.h +0 -39
  1176. data/src/core/lib/iomgr/sockaddr.h +0 -32
  1177. data/src/core/lib/iomgr/sockaddr_posix.h +0 -57
  1178. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +0 -63
  1179. data/src/core/lib/iomgr/sockaddr_windows.h +0 -57
  1180. data/src/core/lib/iomgr/socket_factory_posix.cc +0 -95
  1181. data/src/core/lib/iomgr/socket_factory_posix.h +0 -69
  1182. data/src/core/lib/iomgr/socket_mutator.cc +0 -97
  1183. data/src/core/lib/iomgr/socket_mutator.h +0 -84
  1184. data/src/core/lib/iomgr/socket_utils.h +0 -47
  1185. data/src/core/lib/iomgr/socket_utils_common_posix.cc +0 -477
  1186. data/src/core/lib/iomgr/socket_utils_linux.cc +0 -42
  1187. data/src/core/lib/iomgr/socket_utils_posix.cc +0 -140
  1188. data/src/core/lib/iomgr/socket_utils_posix.h +0 -255
  1189. data/src/core/lib/iomgr/socket_utils_windows.cc +0 -47
  1190. data/src/core/lib/iomgr/socket_windows.cc +0 -202
  1191. data/src/core/lib/iomgr/socket_windows.h +0 -125
  1192. data/src/core/lib/iomgr/tcp_client.cc +0 -40
  1193. data/src/core/lib/iomgr/tcp_client.h +0 -66
  1194. data/src/core/lib/iomgr/tcp_client_cfstream.cc +0 -211
  1195. data/src/core/lib/iomgr/tcp_client_posix.cc +0 -473
  1196. data/src/core/lib/iomgr/tcp_client_posix.h +0 -72
  1197. data/src/core/lib/iomgr/tcp_client_windows.cc +0 -243
  1198. data/src/core/lib/iomgr/tcp_posix.cc +0 -2075
  1199. data/src/core/lib/iomgr/tcp_posix.h +0 -67
  1200. data/src/core/lib/iomgr/tcp_server.cc +0 -78
  1201. data/src/core/lib/iomgr/tcp_server.h +0 -150
  1202. data/src/core/lib/iomgr/tcp_server_posix.cc +0 -653
  1203. data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -129
  1204. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +0 -227
  1205. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +0 -179
  1206. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +0 -36
  1207. data/src/core/lib/iomgr/tcp_server_windows.cc +0 -568
  1208. data/src/core/lib/iomgr/tcp_windows.cc +0 -534
  1209. data/src/core/lib/iomgr/tcp_windows.h +0 -52
  1210. data/src/core/lib/iomgr/timer.cc +0 -46
  1211. data/src/core/lib/iomgr/timer.h +0 -136
  1212. data/src/core/lib/iomgr/timer_generic.cc +0 -735
  1213. data/src/core/lib/iomgr/timer_generic.h +0 -40
  1214. data/src/core/lib/iomgr/timer_heap.cc +0 -134
  1215. data/src/core/lib/iomgr/timer_heap.h +0 -43
  1216. data/src/core/lib/iomgr/timer_manager.cc +0 -363
  1217. data/src/core/lib/iomgr/timer_manager.h +0 -41
  1218. data/src/core/lib/iomgr/unix_sockets_posix.cc +0 -96
  1219. data/src/core/lib/iomgr/unix_sockets_posix.h +0 -46
  1220. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +0 -53
  1221. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +0 -80
  1222. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +0 -39
  1223. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +0 -99
  1224. data/src/core/lib/iomgr/wakeup_fd_pipe.h +0 -28
  1225. data/src/core/lib/iomgr/wakeup_fd_posix.cc +0 -73
  1226. data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -96
  1227. data/src/core/lib/json/json.h +0 -246
  1228. data/src/core/lib/json/json_args.h +0 -34
  1229. data/src/core/lib/json/json_object_loader.cc +0 -202
  1230. data/src/core/lib/json/json_object_loader.h +0 -598
  1231. data/src/core/lib/json/json_reader.cc +0 -929
  1232. data/src/core/lib/json/json_util.cc +0 -106
  1233. data/src/core/lib/json/json_util.h +0 -163
  1234. data/src/core/lib/json/json_writer.cc +0 -340
  1235. data/src/core/lib/load_balancing/lb_policy.cc +0 -93
  1236. data/src/core/lib/load_balancing/lb_policy.h +0 -435
  1237. data/src/core/lib/load_balancing/lb_policy_factory.h +0 -49
  1238. data/src/core/lib/load_balancing/lb_policy_registry.cc +0 -141
  1239. data/src/core/lib/load_balancing/lb_policy_registry.h +0 -82
  1240. data/src/core/lib/load_balancing/subchannel_interface.h +0 -140
  1241. data/src/core/lib/matchers/matchers.cc +0 -330
  1242. data/src/core/lib/matchers/matchers.h +0 -162
  1243. data/src/core/lib/promise/activity.cc +0 -120
  1244. data/src/core/lib/promise/activity.h +0 -581
  1245. data/src/core/lib/promise/arena_promise.h +0 -201
  1246. data/src/core/lib/promise/call_push_pull.h +0 -148
  1247. data/src/core/lib/promise/context.h +0 -85
  1248. data/src/core/lib/promise/detail/basic_seq.h +0 -516
  1249. data/src/core/lib/promise/detail/promise_factory.h +0 -187
  1250. data/src/core/lib/promise/detail/promise_like.h +0 -85
  1251. data/src/core/lib/promise/detail/status.h +0 -50
  1252. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +0 -48
  1253. data/src/core/lib/promise/intra_activity_waiter.h +0 -49
  1254. data/src/core/lib/promise/latch.h +0 -103
  1255. data/src/core/lib/promise/loop.h +0 -136
  1256. data/src/core/lib/promise/map.h +0 -87
  1257. data/src/core/lib/promise/poll.h +0 -66
  1258. data/src/core/lib/promise/promise.h +0 -96
  1259. data/src/core/lib/promise/race.h +0 -83
  1260. data/src/core/lib/promise/seq.h +0 -108
  1261. data/src/core/lib/promise/sleep.cc +0 -89
  1262. data/src/core/lib/promise/sleep.h +0 -85
  1263. data/src/core/lib/promise/try_seq.h +0 -177
  1264. data/src/core/lib/resolver/resolver.cc +0 -37
  1265. data/src/core/lib/resolver/resolver.h +0 -138
  1266. data/src/core/lib/resolver/resolver_factory.h +0 -77
  1267. data/src/core/lib/resolver/resolver_registry.cc +0 -149
  1268. data/src/core/lib/resolver/resolver_registry.h +0 -123
  1269. data/src/core/lib/resolver/server_address.cc +0 -180
  1270. data/src/core/lib/resolver/server_address.h +0 -147
  1271. data/src/core/lib/resource_quota/api.cc +0 -105
  1272. data/src/core/lib/resource_quota/api.h +0 -49
  1273. data/src/core/lib/resource_quota/arena.cc +0 -119
  1274. data/src/core/lib/resource_quota/arena.h +0 -163
  1275. data/src/core/lib/resource_quota/memory_quota.cc +0 -602
  1276. data/src/core/lib/resource_quota/memory_quota.h +0 -530
  1277. data/src/core/lib/resource_quota/periodic_update.cc +0 -78
  1278. data/src/core/lib/resource_quota/periodic_update.h +0 -71
  1279. data/src/core/lib/resource_quota/resource_quota.cc +0 -33
  1280. data/src/core/lib/resource_quota/resource_quota.h +0 -74
  1281. data/src/core/lib/resource_quota/thread_quota.cc +0 -45
  1282. data/src/core/lib/resource_quota/thread_quota.h +0 -61
  1283. data/src/core/lib/resource_quota/trace.cc +0 -19
  1284. data/src/core/lib/resource_quota/trace.h +0 -24
  1285. data/src/core/lib/security/authorization/authorization_engine.h +0 -44
  1286. data/src/core/lib/security/authorization/authorization_policy_provider.h +0 -47
  1287. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +0 -50
  1288. data/src/core/lib/security/authorization/evaluate_args.cc +0 -221
  1289. data/src/core/lib/security/authorization/evaluate_args.h +0 -95
  1290. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +0 -66
  1291. data/src/core/lib/security/authorization/grpc_authorization_engine.h +0 -69
  1292. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +0 -120
  1293. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +0 -61
  1294. data/src/core/lib/security/authorization/matchers.cc +0 -238
  1295. data/src/core/lib/security/authorization/matchers.h +0 -218
  1296. data/src/core/lib/security/authorization/rbac_policy.cc +0 -446
  1297. data/src/core/lib/security/authorization/rbac_policy.h +0 -178
  1298. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +0 -66
  1299. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +0 -60
  1300. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +0 -70
  1301. data/src/core/lib/security/context/security_context.cc +0 -330
  1302. data/src/core/lib/security/context/security_context.h +0 -171
  1303. data/src/core/lib/security/credentials/alts/alts_credentials.cc +0 -119
  1304. data/src/core/lib/security/credentials/alts/alts_credentials.h +0 -123
  1305. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +0 -72
  1306. data/src/core/lib/security/credentials/alts/check_gcp_environment.h +0 -57
  1307. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +0 -68
  1308. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +0 -33
  1309. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +0 -102
  1310. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +0 -125
  1311. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +0 -46
  1312. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +0 -75
  1313. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +0 -56
  1314. data/src/core/lib/security/credentials/call_creds_util.cc +0 -97
  1315. data/src/core/lib/security/credentials/call_creds_util.h +0 -43
  1316. data/src/core/lib/security/credentials/channel_creds_registry.h +0 -103
  1317. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +0 -81
  1318. data/src/core/lib/security/credentials/composite/composite_credentials.cc +0 -171
  1319. data/src/core/lib/security/credentials/composite/composite_credentials.h +0 -132
  1320. data/src/core/lib/security/credentials/credentials.cc +0 -159
  1321. data/src/core/lib/security/credentials/credentials.h +0 -298
  1322. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +0 -524
  1323. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +0 -100
  1324. data/src/core/lib/security/credentials/external/aws_request_signer.cc +0 -223
  1325. data/src/core/lib/security/credentials/external/aws_request_signer.h +0 -72
  1326. data/src/core/lib/security/credentials/external/external_account_credentials.cc +0 -572
  1327. data/src/core/lib/security/credentials/external/external_account_credentials.h +0 -129
  1328. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +0 -142
  1329. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +0 -55
  1330. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +0 -246
  1331. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +0 -71
  1332. data/src/core/lib/security/credentials/fake/fake_credentials.cc +0 -112
  1333. data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -96
  1334. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +0 -40
  1335. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -500
  1336. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +0 -100
  1337. data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -82
  1338. data/src/core/lib/security/credentials/iam/iam_credentials.h +0 -65
  1339. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +0 -73
  1340. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +0 -61
  1341. data/src/core/lib/security/credentials/jwt/json_token.cc +0 -298
  1342. data/src/core/lib/security/credentials/jwt/json_token.h +0 -76
  1343. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +0 -183
  1344. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +0 -107
  1345. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +0 -957
  1346. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +0 -124
  1347. data/src/core/lib/security/credentials/local/local_credentials.cc +0 -71
  1348. data/src/core/lib/security/credentials/local/local_credentials.h +0 -77
  1349. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +0 -751
  1350. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +0 -220
  1351. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -214
  1352. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +0 -125
  1353. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +0 -381
  1354. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +0 -131
  1355. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +0 -348
  1356. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +0 -223
  1357. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +0 -484
  1358. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +0 -206
  1359. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +0 -241
  1360. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +0 -168
  1361. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +0 -122
  1362. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +0 -117
  1363. data/src/core/lib/security/credentials/tls/tls_credentials.cc +0 -150
  1364. data/src/core/lib/security/credentials/tls/tls_credentials.h +0 -71
  1365. data/src/core/lib/security/credentials/tls/tls_utils.cc +0 -127
  1366. data/src/core/lib/security/credentials/tls/tls_utils.h +0 -51
  1367. data/src/core/lib/security/credentials/xds/xds_credentials.cc +0 -236
  1368. data/src/core/lib/security/credentials/xds/xds_credentials.h +0 -114
  1369. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +0 -317
  1370. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +0 -79
  1371. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +0 -322
  1372. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +0 -43
  1373. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +0 -120
  1374. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +0 -108
  1375. data/src/core/lib/security/security_connector/load_system_roots.h +0 -33
  1376. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +0 -35
  1377. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +0 -178
  1378. data/src/core/lib/security/security_connector/load_system_roots_supported.h +0 -46
  1379. data/src/core/lib/security/security_connector/local/local_security_connector.cc +0 -310
  1380. data/src/core/lib/security/security_connector/local/local_security_connector.h +0 -63
  1381. data/src/core/lib/security/security_connector/security_connector.cc +0 -127
  1382. data/src/core/lib/security/security_connector/security_connector.h +0 -201
  1383. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +0 -463
  1384. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +0 -83
  1385. data/src/core/lib/security/security_connector/ssl_utils.cc +0 -627
  1386. data/src/core/lib/security/security_connector/ssl_utils.h +0 -187
  1387. data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
  1388. data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -30
  1389. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +0 -834
  1390. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -286
  1391. data/src/core/lib/security/transport/auth_filters.h +0 -76
  1392. data/src/core/lib/security/transport/client_auth_filter.cc +0 -227
  1393. data/src/core/lib/security/transport/secure_endpoint.cc +0 -568
  1394. data/src/core/lib/security/transport/secure_endpoint.h +0 -43
  1395. data/src/core/lib/security/transport/security_handshaker.cc +0 -673
  1396. data/src/core/lib/security/transport/security_handshaker.h +0 -51
  1397. data/src/core/lib/security/transport/server_auth_filter.cc +0 -360
  1398. data/src/core/lib/security/transport/tsi_error.cc +0 -28
  1399. data/src/core/lib/security/transport/tsi_error.h +0 -30
  1400. data/src/core/lib/security/util/json_util.cc +0 -71
  1401. data/src/core/lib/security/util/json_util.h +0 -43
  1402. data/src/core/lib/service_config/service_config.h +0 -89
  1403. data/src/core/lib/service_config/service_config_call_data.h +0 -76
  1404. data/src/core/lib/service_config/service_config_impl.cc +0 -238
  1405. data/src/core/lib/service_config/service_config_impl.h +0 -128
  1406. data/src/core/lib/service_config/service_config_parser.cc +0 -98
  1407. data/src/core/lib/service_config/service_config_parser.h +0 -101
  1408. data/src/core/lib/slice/b64.cc +0 -239
  1409. data/src/core/lib/slice/b64.h +0 -52
  1410. data/src/core/lib/slice/percent_encoding.cc +0 -150
  1411. data/src/core/lib/slice/percent_encoding.h +0 -54
  1412. data/src/core/lib/slice/slice.cc +0 -496
  1413. data/src/core/lib/slice/slice.h +0 -389
  1414. data/src/core/lib/slice/slice_api.cc +0 -39
  1415. data/src/core/lib/slice/slice_buffer.cc +0 -473
  1416. data/src/core/lib/slice/slice_buffer.h +0 -137
  1417. data/src/core/lib/slice/slice_buffer_api.cc +0 -35
  1418. data/src/core/lib/slice/slice_internal.h +0 -105
  1419. data/src/core/lib/slice/slice_refcount.cc +0 -35
  1420. data/src/core/lib/slice/slice_refcount.h +0 -45
  1421. data/src/core/lib/slice/slice_refcount_base.h +0 -60
  1422. data/src/core/lib/slice/slice_string_helpers.cc +0 -28
  1423. data/src/core/lib/slice/slice_string_helpers.h +0 -31
  1424. data/src/core/lib/surface/api_trace.cc +0 -25
  1425. data/src/core/lib/surface/api_trace.h +0 -53
  1426. data/src/core/lib/surface/builtins.cc +0 -54
  1427. data/src/core/lib/surface/builtins.h +0 -26
  1428. data/src/core/lib/surface/byte_buffer.cc +0 -98
  1429. data/src/core/lib/surface/byte_buffer_reader.cc +0 -101
  1430. data/src/core/lib/surface/call.cc +0 -1916
  1431. data/src/core/lib/surface/call.h +0 -135
  1432. data/src/core/lib/surface/call_details.cc +0 -41
  1433. data/src/core/lib/surface/call_log_batch.cc +0 -117
  1434. data/src/core/lib/surface/call_test_only.h +0 -46
  1435. data/src/core/lib/surface/channel.cc +0 -442
  1436. data/src/core/lib/surface/channel.h +0 -206
  1437. data/src/core/lib/surface/channel_init.cc +0 -55
  1438. data/src/core/lib/surface/channel_init.h +0 -84
  1439. data/src/core/lib/surface/channel_ping.cc +0 -69
  1440. data/src/core/lib/surface/channel_stack_type.cc +0 -57
  1441. data/src/core/lib/surface/channel_stack_type.h +0 -45
  1442. data/src/core/lib/surface/completion_queue.cc +0 -1425
  1443. data/src/core/lib/surface/completion_queue.h +0 -100
  1444. data/src/core/lib/surface/completion_queue_factory.cc +0 -94
  1445. data/src/core/lib/surface/completion_queue_factory.h +0 -37
  1446. data/src/core/lib/surface/event_string.cc +0 -56
  1447. data/src/core/lib/surface/event_string.h +0 -31
  1448. data/src/core/lib/surface/init.cc +0 -260
  1449. data/src/core/lib/surface/init.h +0 -25
  1450. data/src/core/lib/surface/init_internally.cc +0 -24
  1451. data/src/core/lib/surface/init_internally.h +0 -28
  1452. data/src/core/lib/surface/lame_client.cc +0 -152
  1453. data/src/core/lib/surface/lame_client.h +0 -71
  1454. data/src/core/lib/surface/metadata_array.cc +0 -38
  1455. data/src/core/lib/surface/server.cc +0 -1577
  1456. data/src/core/lib/surface/server.h +0 -526
  1457. data/src/core/lib/surface/validate_metadata.cc +0 -123
  1458. data/src/core/lib/surface/validate_metadata.h +0 -48
  1459. data/src/core/lib/surface/version.cc +0 -28
  1460. data/src/core/lib/transport/bdp_estimator.cc +0 -86
  1461. data/src/core/lib/transport/bdp_estimator.h +0 -94
  1462. data/src/core/lib/transport/connectivity_state.cc +0 -189
  1463. data/src/core/lib/transport/connectivity_state.h +0 -144
  1464. data/src/core/lib/transport/error_utils.cc +0 -165
  1465. data/src/core/lib/transport/error_utils.h +0 -63
  1466. data/src/core/lib/transport/handshaker.cc +0 -225
  1467. data/src/core/lib/transport/handshaker.h +0 -167
  1468. data/src/core/lib/transport/handshaker_factory.h +0 -48
  1469. data/src/core/lib/transport/handshaker_registry.cc +0 -55
  1470. data/src/core/lib/transport/handshaker_registry.h +0 -70
  1471. data/src/core/lib/transport/http2_errors.h +0 -41
  1472. data/src/core/lib/transport/http_connect_handshaker.cc +0 -401
  1473. data/src/core/lib/transport/http_connect_handshaker.h +0 -42
  1474. data/src/core/lib/transport/metadata_batch.cc +0 -291
  1475. data/src/core/lib/transport/metadata_batch.h +0 -1310
  1476. data/src/core/lib/transport/parsed_metadata.cc +0 -39
  1477. data/src/core/lib/transport/parsed_metadata.h +0 -409
  1478. data/src/core/lib/transport/pid_controller.cc +0 -51
  1479. data/src/core/lib/transport/pid_controller.h +0 -116
  1480. data/src/core/lib/transport/status_conversion.cc +0 -92
  1481. data/src/core/lib/transport/status_conversion.h +0 -38
  1482. data/src/core/lib/transport/tcp_connect_handshaker.cc +0 -251
  1483. data/src/core/lib/transport/tcp_connect_handshaker.h +0 -39
  1484. data/src/core/lib/transport/timeout_encoding.cc +0 -284
  1485. data/src/core/lib/transport/timeout_encoding.h +0 -72
  1486. data/src/core/lib/transport/transport.cc +0 -239
  1487. data/src/core/lib/transport/transport.h +0 -594
  1488. data/src/core/lib/transport/transport_fwd.h +0 -20
  1489. data/src/core/lib/transport/transport_impl.h +0 -95
  1490. data/src/core/lib/transport/transport_op_string.cc +0 -146
  1491. data/src/core/lib/uri/uri_parser.cc +0 -373
  1492. data/src/core/lib/uri/uri_parser.h +0 -101
  1493. data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -117
  1494. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +0 -73
  1495. data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -690
  1496. data/src/core/tsi/alts/crypt/gsec.cc +0 -190
  1497. data/src/core/tsi/alts/crypt/gsec.h +0 -459
  1498. data/src/core/tsi/alts/frame_protector/alts_counter.cc +0 -118
  1499. data/src/core/tsi/alts/frame_protector/alts_counter.h +0 -98
  1500. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +0 -66
  1501. data/src/core/tsi/alts/frame_protector/alts_crypter.h +0 -255
  1502. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +0 -408
  1503. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +0 -55
  1504. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +0 -114
  1505. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +0 -114
  1506. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +0 -105
  1507. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +0 -103
  1508. data/src/core/tsi/alts/frame_protector/frame_handler.cc +0 -219
  1509. data/src/core/tsi/alts/frame_protector/frame_handler.h +0 -236
  1510. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +0 -927
  1511. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +0 -160
  1512. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +0 -91
  1513. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +0 -73
  1514. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +0 -720
  1515. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +0 -104
  1516. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +0 -89
  1517. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +0 -64
  1518. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +0 -53
  1519. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +0 -223
  1520. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +0 -171
  1521. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +0 -226
  1522. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +0 -54
  1523. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +0 -144
  1524. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +0 -49
  1525. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +0 -91
  1526. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +0 -174
  1527. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +0 -99
  1528. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +0 -478
  1529. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +0 -199
  1530. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +0 -315
  1531. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +0 -57
  1532. data/src/core/tsi/fake_transport_security.cc +0 -844
  1533. data/src/core/tsi/fake_transport_security.h +0 -53
  1534. data/src/core/tsi/local_transport_security.cc +0 -174
  1535. data/src/core/tsi/local_transport_security.h +0 -47
  1536. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +0 -141
  1537. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +0 -81
  1538. data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -71
  1539. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +0 -59
  1540. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -179
  1541. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +0 -99
  1542. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +0 -77
  1543. data/src/core/tsi/ssl_transport_security.cc +0 -2441
  1544. data/src/core/tsi/ssl_transport_security.h +0 -405
  1545. data/src/core/tsi/ssl_types.h +0 -42
  1546. data/src/core/tsi/transport_security.cc +0 -396
  1547. data/src/core/tsi/transport_security.h +0 -143
  1548. data/src/core/tsi/transport_security_grpc.cc +0 -74
  1549. data/src/core/tsi/transport_security_grpc.h +0 -83
  1550. data/src/core/tsi/transport_security_interface.h +0 -521
  1551. data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
  1552. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +0 -159
  1553. data/third_party/abseil-cpp/absl/algorithm/container.h +0 -1774
  1554. data/third_party/abseil-cpp/absl/base/attributes.h +0 -762
  1555. data/third_party/abseil-cpp/absl/base/call_once.h +0 -219
  1556. data/third_party/abseil-cpp/absl/base/casts.h +0 -180
  1557. data/third_party/abseil-cpp/absl/base/config.h +0 -913
  1558. data/third_party/abseil-cpp/absl/base/const_init.h +0 -76
  1559. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +0 -471
  1560. data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +0 -200
  1561. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -77
  1562. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +0 -159
  1563. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +0 -169
  1564. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +0 -398
  1565. data/third_party/abseil-cpp/absl/base/internal/endian.h +0 -282
  1566. data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +0 -43
  1567. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +0 -50
  1568. data/third_party/abseil-cpp/absl/base/internal/hide_ptr.h +0 -51
  1569. data/third_party/abseil-cpp/absl/base/internal/identity.h +0 -37
  1570. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -107
  1571. data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
  1572. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +0 -620
  1573. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +0 -126
  1574. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +0 -134
  1575. data/third_party/abseil-cpp/absl/base/internal/per_thread_tls.h +0 -52
  1576. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +0 -138
  1577. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +0 -249
  1578. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +0 -196
  1579. data/third_party/abseil-cpp/absl/base/internal/scheduling_mode.h +0 -58
  1580. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -232
  1581. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +0 -256
  1582. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +0 -35
  1583. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +0 -71
  1584. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +0 -46
  1585. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc +0 -81
  1586. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +0 -95
  1587. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +0 -37
  1588. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +0 -88
  1589. data/third_party/abseil-cpp/absl/base/internal/strerror.h +0 -39
  1590. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -507
  1591. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +0 -74
  1592. data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +0 -271
  1593. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +0 -156
  1594. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +0 -265
  1595. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +0 -212
  1596. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.h +0 -75
  1597. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +0 -68
  1598. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -82
  1599. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +0 -153
  1600. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +0 -133
  1601. data/third_party/abseil-cpp/absl/base/log_severity.cc +0 -55
  1602. data/third_party/abseil-cpp/absl/base/log_severity.h +0 -172
  1603. data/third_party/abseil-cpp/absl/base/macros.h +0 -158
  1604. data/third_party/abseil-cpp/absl/base/optimization.h +0 -252
  1605. data/third_party/abseil-cpp/absl/base/options.h +0 -238
  1606. data/third_party/abseil-cpp/absl/base/policy_checks.h +0 -111
  1607. data/third_party/abseil-cpp/absl/base/port.h +0 -25
  1608. data/third_party/abseil-cpp/absl/base/thread_annotations.h +0 -335
  1609. data/third_party/abseil-cpp/absl/container/fixed_array.h +0 -529
  1610. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +0 -613
  1611. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -510
  1612. data/third_party/abseil-cpp/absl/container/inlined_vector.h +0 -866
  1613. data/third_party/abseil-cpp/absl/container/internal/common.h +0 -207
  1614. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +0 -290
  1615. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +0 -442
  1616. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +0 -163
  1617. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -208
  1618. data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +0 -85
  1619. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +0 -238
  1620. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +0 -299
  1621. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +0 -31
  1622. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +0 -953
  1623. data/third_party/abseil-cpp/absl/container/internal/layout.h +0 -743
  1624. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +0 -198
  1625. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +0 -71
  1626. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +0 -2365
  1627. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +0 -96
  1628. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +0 -32
  1629. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +0 -1959
  1630. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +0 -71
  1631. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +0 -387
  1632. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +0 -139
  1633. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +0 -204
  1634. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +0 -139
  1635. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +0 -88
  1636. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +0 -110
  1637. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +0 -108
  1638. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +0 -258
  1639. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +0 -236
  1640. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +0 -24
  1641. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +0 -93
  1642. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +0 -369
  1643. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +0 -153
  1644. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +0 -204
  1645. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +0 -158
  1646. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +0 -142
  1647. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +0 -231
  1648. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +0 -43
  1649. data/third_party/abseil-cpp/absl/debugging/symbolize.h +0 -99
  1650. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +0 -101
  1651. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +0 -1613
  1652. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +0 -72
  1653. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +0 -40
  1654. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +0 -81
  1655. data/third_party/abseil-cpp/absl/functional/any_invocable.h +0 -313
  1656. data/third_party/abseil-cpp/absl/functional/bind_front.h +0 -193
  1657. data/third_party/abseil-cpp/absl/functional/function_ref.h +0 -143
  1658. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +0 -857
  1659. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +0 -95
  1660. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +0 -106
  1661. data/third_party/abseil-cpp/absl/hash/hash.h +0 -421
  1662. data/third_party/abseil-cpp/absl/hash/internal/city.cc +0 -349
  1663. data/third_party/abseil-cpp/absl/hash/internal/city.h +0 -78
  1664. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +0 -69
  1665. data/third_party/abseil-cpp/absl/hash/internal/hash.h +0 -1291
  1666. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -123
  1667. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -50
  1668. data/third_party/abseil-cpp/absl/memory/memory.h +0 -699
  1669. data/third_party/abseil-cpp/absl/meta/type_traits.h +0 -797
  1670. data/third_party/abseil-cpp/absl/numeric/bits.h +0 -178
  1671. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -385
  1672. data/third_party/abseil-cpp/absl/numeric/int128.h +0 -1165
  1673. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +0 -296
  1674. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +0 -311
  1675. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +0 -358
  1676. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +0 -55
  1677. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +0 -93
  1678. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.h +0 -130
  1679. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +0 -245
  1680. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +0 -200
  1681. data/third_party/abseil-cpp/absl/random/beta_distribution.h +0 -427
  1682. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +0 -98
  1683. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +0 -247
  1684. data/third_party/abseil-cpp/absl/random/distributions.h +0 -452
  1685. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +0 -165
  1686. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +0 -104
  1687. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +0 -275
  1688. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +0 -95
  1689. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +0 -269
  1690. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +0 -57
  1691. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +0 -144
  1692. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +0 -245
  1693. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +0 -161
  1694. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +0 -308
  1695. data/third_party/abseil-cpp/absl/random/internal/platform.h +0 -171
  1696. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +0 -253
  1697. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
  1698. data/third_party/abseil-cpp/absl/random/internal/randen.cc +0 -91
  1699. data/third_party/abseil-cpp/absl/random/internal/randen.h +0 -96
  1700. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +0 -225
  1701. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +0 -33
  1702. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +0 -264
  1703. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +0 -526
  1704. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +0 -50
  1705. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +0 -462
  1706. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +0 -471
  1707. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +0 -40
  1708. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +0 -88
  1709. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +0 -165
  1710. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +0 -267
  1711. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +0 -104
  1712. data/third_party/abseil-cpp/absl/random/internal/traits.h +0 -149
  1713. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +0 -244
  1714. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +0 -96
  1715. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +0 -256
  1716. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +0 -261
  1717. data/third_party/abseil-cpp/absl/random/random.h +0 -189
  1718. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +0 -46
  1719. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +0 -55
  1720. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +0 -29
  1721. data/third_party/abseil-cpp/absl/random/seed_sequences.h +0 -111
  1722. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +0 -275
  1723. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +0 -202
  1724. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +0 -272
  1725. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +0 -86
  1726. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +0 -396
  1727. data/third_party/abseil-cpp/absl/status/status.cc +0 -616
  1728. data/third_party/abseil-cpp/absl/status/status.h +0 -892
  1729. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +0 -38
  1730. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +0 -51
  1731. data/third_party/abseil-cpp/absl/status/statusor.cc +0 -103
  1732. data/third_party/abseil-cpp/absl/status/statusor.h +0 -776
  1733. data/third_party/abseil-cpp/absl/strings/ascii.cc +0 -200
  1734. data/third_party/abseil-cpp/absl/strings/ascii.h +0 -242
  1735. data/third_party/abseil-cpp/absl/strings/charconv.cc +0 -984
  1736. data/third_party/abseil-cpp/absl/strings/charconv.h +0 -120
  1737. data/third_party/abseil-cpp/absl/strings/cord.cc +0 -1328
  1738. data/third_party/abseil-cpp/absl/strings/cord.h +0 -1642
  1739. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +0 -188
  1740. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +0 -44
  1741. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +0 -30
  1742. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +0 -572
  1743. data/third_party/abseil-cpp/absl/strings/escaping.cc +0 -949
  1744. data/third_party/abseil-cpp/absl/strings/escaping.h +0 -164
  1745. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +0 -156
  1746. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +0 -359
  1747. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +0 -423
  1748. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +0 -504
  1749. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.h +0 -99
  1750. data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +0 -63
  1751. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +0 -77
  1752. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +0 -655
  1753. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -1228
  1754. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +0 -924
  1755. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +0 -187
  1756. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +0 -267
  1757. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +0 -69
  1758. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +0 -212
  1759. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +0 -62
  1760. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +0 -50
  1761. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +0 -54
  1762. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +0 -102
  1763. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +0 -187
  1764. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +0 -773
  1765. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +0 -607
  1766. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +0 -118
  1767. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +0 -96
  1768. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +0 -85
  1769. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +0 -139
  1770. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +0 -131
  1771. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -418
  1772. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +0 -298
  1773. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +0 -88
  1774. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +0 -71
  1775. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +0 -123
  1776. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +0 -181
  1777. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +0 -58
  1778. data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +0 -112
  1779. data/third_party/abseil-cpp/absl/strings/internal/memutil.h +0 -148
  1780. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +0 -36
  1781. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +0 -89
  1782. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +0 -119
  1783. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +0 -248
  1784. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +0 -488
  1785. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +0 -526
  1786. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +0 -258
  1787. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +0 -248
  1788. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +0 -338
  1789. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -74
  1790. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +0 -448
  1791. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +0 -1423
  1792. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +0 -37
  1793. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +0 -72
  1794. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +0 -97
  1795. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +0 -339
  1796. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +0 -359
  1797. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +0 -317
  1798. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +0 -430
  1799. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -72
  1800. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +0 -53
  1801. data/third_party/abseil-cpp/absl/strings/internal/utf8.h +0 -50
  1802. data/third_party/abseil-cpp/absl/strings/match.cc +0 -43
  1803. data/third_party/abseil-cpp/absl/strings/match.h +0 -100
  1804. data/third_party/abseil-cpp/absl/strings/numbers.cc +0 -1093
  1805. data/third_party/abseil-cpp/absl/strings/numbers.h +0 -303
  1806. data/third_party/abseil-cpp/absl/strings/str_cat.cc +0 -246
  1807. data/third_party/abseil-cpp/absl/strings/str_cat.h +0 -415
  1808. data/third_party/abseil-cpp/absl/strings/str_format.h +0 -812
  1809. data/third_party/abseil-cpp/absl/strings/str_join.h +0 -287
  1810. data/third_party/abseil-cpp/absl/strings/str_replace.cc +0 -82
  1811. data/third_party/abseil-cpp/absl/strings/str_replace.h +0 -219
  1812. data/third_party/abseil-cpp/absl/strings/str_split.cc +0 -139
  1813. data/third_party/abseil-cpp/absl/strings/str_split.h +0 -547
  1814. data/third_party/abseil-cpp/absl/strings/string_view.cc +0 -219
  1815. data/third_party/abseil-cpp/absl/strings/string_view.h +0 -711
  1816. data/third_party/abseil-cpp/absl/strings/strip.h +0 -93
  1817. data/third_party/abseil-cpp/absl/strings/substitute.cc +0 -172
  1818. data/third_party/abseil-cpp/absl/strings/substitute.h +0 -729
  1819. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +0 -52
  1820. data/third_party/abseil-cpp/absl/synchronization/barrier.h +0 -79
  1821. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +0 -67
  1822. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +0 -101
  1823. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +0 -143
  1824. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -56
  1825. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +0 -154
  1826. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +0 -698
  1827. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +0 -141
  1828. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +0 -156
  1829. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -102
  1830. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +0 -110
  1831. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -403
  1832. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +0 -161
  1833. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +0 -2786
  1834. data/third_party/abseil-cpp/absl/synchronization/mutex.h +0 -1090
  1835. data/third_party/abseil-cpp/absl/synchronization/notification.cc +0 -78
  1836. data/third_party/abseil-cpp/absl/synchronization/notification.h +0 -124
  1837. data/third_party/abseil-cpp/absl/time/civil_time.cc +0 -173
  1838. data/third_party/abseil-cpp/absl/time/civil_time.h +0 -538
  1839. data/third_party/abseil-cpp/absl/time/clock.cc +0 -585
  1840. data/third_party/abseil-cpp/absl/time/clock.h +0 -74
  1841. data/third_party/abseil-cpp/absl/time/duration.cc +0 -955
  1842. data/third_party/abseil-cpp/absl/time/format.cc +0 -160
  1843. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +0 -332
  1844. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +0 -632
  1845. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +0 -459
  1846. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +0 -102
  1847. data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +0 -94
  1848. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +0 -140
  1849. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +0 -52
  1850. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +0 -1029
  1851. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +0 -45
  1852. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +0 -77
  1853. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +0 -113
  1854. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +0 -93
  1855. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +0 -1027
  1856. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +0 -137
  1857. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +0 -315
  1858. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +0 -55
  1859. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +0 -236
  1860. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +0 -159
  1861. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +0 -132
  1862. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +0 -122
  1863. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +0 -115
  1864. data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +0 -31
  1865. data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +0 -24
  1866. data/third_party/abseil-cpp/absl/time/time.cc +0 -500
  1867. data/third_party/abseil-cpp/absl/time/time.h +0 -1620
  1868. data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -48
  1869. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
  1870. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -64
  1871. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
  1872. data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -404
  1873. data/third_party/abseil-cpp/absl/types/internal/span.h +0 -128
  1874. data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1646
  1875. data/third_party/abseil-cpp/absl/types/optional.h +0 -779
  1876. data/third_party/abseil-cpp/absl/types/span.h +0 -727
  1877. data/third_party/abseil-cpp/absl/types/variant.h +0 -866
  1878. data/third_party/abseil-cpp/absl/utility/utility.h +0 -350
  1879. data/third_party/address_sorting/address_sorting.c +0 -375
  1880. data/third_party/address_sorting/address_sorting_internal.h +0 -70
  1881. data/third_party/address_sorting/address_sorting_posix.c +0 -98
  1882. data/third_party/address_sorting/address_sorting_windows.c +0 -95
  1883. data/third_party/address_sorting/include/address_sorting/address_sorting.h +0 -115
  1884. data/third_party/boringssl-with-bazel/err_data.c +0 -1493
  1885. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +0 -284
  1886. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +0 -122
  1887. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -91
  1888. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +0 -87
  1889. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
  1890. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +0 -266
  1891. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +0 -88
  1892. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +0 -420
  1893. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +0 -298
  1894. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +0 -299
  1895. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +0 -77
  1896. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +0 -83
  1897. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +0 -650
  1898. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +0 -266
  1899. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +0 -212
  1900. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +0 -163
  1901. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -264
  1902. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
  1903. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +0 -452
  1904. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +0 -80
  1905. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +0 -101
  1906. data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
  1907. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +0 -102
  1908. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +0 -91
  1909. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +0 -224
  1910. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +0 -969
  1911. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +0 -710
  1912. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +0 -233
  1913. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +0 -332
  1914. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -131
  1915. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +0 -281
  1916. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
  1917. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +0 -482
  1918. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +0 -702
  1919. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +0 -324
  1920. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +0 -541
  1921. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -275
  1922. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +0 -311
  1923. data/third_party/boringssl-with-bazel/src/crypto/bio/hexdump.c +0 -192
  1924. data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +0 -111
  1925. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +0 -483
  1926. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -115
  1927. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +0 -192
  1928. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +0 -122
  1929. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +0 -156
  1930. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +0 -57
  1931. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +0 -470
  1932. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +0 -172
  1933. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +0 -52
  1934. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +0 -266
  1935. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +0 -728
  1936. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +0 -711
  1937. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +0 -96
  1938. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +0 -155
  1939. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -175
  1940. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +0 -45
  1941. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +0 -127
  1942. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +0 -152
  1943. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesccm.c +0 -447
  1944. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +0 -283
  1945. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +0 -891
  1946. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +0 -343
  1947. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +0 -85
  1948. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +0 -462
  1949. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +0 -87
  1950. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +0 -601
  1951. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +0 -226
  1952. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +0 -338
  1953. data/third_party/boringssl-with-bazel/src/crypto/cmac/cmac.c +0 -278
  1954. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +0 -821
  1955. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -127
  1956. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +0 -31
  1957. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-fuchsia.c +0 -55
  1958. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-linux.c +0 -62
  1959. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +0 -41
  1960. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +0 -229
  1961. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.h +0 -201
  1962. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +0 -38
  1963. data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +0 -291
  1964. data/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c +0 -38
  1965. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +0 -226
  1966. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +0 -2159
  1967. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +0 -7872
  1968. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +0 -146
  1969. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +0 -539
  1970. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +0 -160
  1971. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +0 -272
  1972. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -268
  1973. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +0 -967
  1974. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -390
  1975. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +0 -34
  1976. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +0 -559
  1977. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +0 -95
  1978. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +0 -385
  1979. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -56
  1980. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +0 -124
  1981. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +0 -267
  1982. data/third_party/boringssl-with-bazel/src/crypto/engine/engine.c +0 -99
  1983. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +0 -857
  1984. data/third_party/boringssl-with-bazel/src/crypto/err/internal.h +0 -58
  1985. data/third_party/boringssl-with-bazel/src/crypto/evp/digestsign.c +0 -231
  1986. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +0 -456
  1987. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +0 -547
  1988. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +0 -484
  1989. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +0 -269
  1990. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +0 -277
  1991. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +0 -286
  1992. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +0 -255
  1993. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +0 -104
  1994. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +0 -221
  1995. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +0 -648
  1996. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +0 -194
  1997. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +0 -110
  1998. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +0 -248
  1999. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c +0 -146
  2000. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +0 -489
  2001. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +0 -211
  2002. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +0 -151
  2003. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +0 -261
  2004. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -108
  2005. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +0 -1282
  2006. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +0 -238
  2007. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +0 -236
  2008. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +0 -122
  2009. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +0 -266
  2010. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/add.c +0 -316
  2011. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -541
  2012. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +0 -438
  2013. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +0 -230
  2014. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +0 -200
  2015. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -236
  2016. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +0 -902
  2017. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +0 -87
  2018. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +0 -1288
  2019. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -378
  2020. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +0 -326
  2021. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +0 -711
  2022. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +0 -715
  2023. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.c +0 -146
  2024. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +0 -502
  2025. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +0 -186
  2026. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +0 -749
  2027. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -1064
  2028. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +0 -341
  2029. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +0 -226
  2030. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +0 -104
  2031. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +0 -364
  2032. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +0 -498
  2033. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +0 -284
  2034. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +0 -648
  2035. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +0 -1473
  2036. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_des.c +0 -237
  2037. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +0 -128
  2038. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +0 -89
  2039. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +0 -784
  2040. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +0 -238
  2041. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +0 -217
  2042. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +0 -456
  2043. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +0 -282
  2044. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +0 -304
  2045. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/internal.h +0 -112
  2046. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +0 -195
  2047. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +0 -1268
  2048. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -472
  2049. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +0 -524
  2050. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +0 -100
  2051. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -772
  2052. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +0 -328
  2053. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +0 -1180
  2054. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -9497
  2055. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +0 -633
  2056. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.h +0 -153
  2057. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +0 -740
  2058. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +0 -297
  2059. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +0 -175
  2060. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +0 -357
  2061. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +0 -270
  2062. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +0 -255
  2063. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -270
  2064. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +0 -122
  2065. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +0 -338
  2066. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +0 -39
  2067. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +0 -32
  2068. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +0 -228
  2069. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +0 -240
  2070. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/internal.h +0 -37
  2071. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +0 -284
  2072. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +0 -178
  2073. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +0 -203
  2074. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +0 -201
  2075. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +0 -733
  2076. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +0 -304
  2077. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +0 -420
  2078. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +0 -97
  2079. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +0 -91
  2080. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +0 -202
  2081. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +0 -137
  2082. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +0 -49
  2083. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +0 -64
  2084. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +0 -184
  2085. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +0 -457
  2086. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +0 -401
  2087. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -243
  2088. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +0 -131
  2089. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +0 -695
  2090. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +0 -935
  2091. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +0 -1416
  2092. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +0 -79
  2093. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +0 -874
  2094. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +0 -53
  2095. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
  2096. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +0 -357
  2097. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +0 -321
  2098. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +0 -508
  2099. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +0 -39
  2100. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +0 -165
  2101. data/third_party/boringssl-with-bazel/src/crypto/hkdf/hkdf.c +0 -112
  2102. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +0 -618
  2103. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +0 -2198
  2104. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +0 -68
  2105. data/third_party/boringssl-with-bazel/src/crypto/internal.h +0 -959
  2106. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +0 -253
  2107. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +0 -353
  2108. data/third_party/boringssl-with-bazel/src/crypto/mem.c +0 -410
  2109. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +0 -553
  2110. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +0 -11585
  2111. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_xref.c +0 -122
  2112. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -252
  2113. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -358
  2114. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -769
  2115. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +0 -87
  2116. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -255
  2117. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -214
  2118. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -65
  2119. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -65
  2120. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +0 -58
  2121. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +0 -193
  2122. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -526
  2123. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -137
  2124. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +0 -316
  2125. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -530
  2126. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +0 -1383
  2127. data/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h +0 -41
  2128. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +0 -321
  2129. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +0 -307
  2130. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +0 -860
  2131. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +0 -49
  2132. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +0 -257
  2133. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +0 -56
  2134. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c +0 -46
  2135. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +0 -34
  2136. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +0 -34
  2137. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +0 -74
  2138. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +0 -73
  2139. data/third_party/boringssl-with-bazel/src/crypto/rc4/rc4.c +0 -98
  2140. data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -67
  2141. data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +0 -53
  2142. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +0 -324
  2143. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c +0 -22
  2144. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +0 -82
  2145. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +0 -425
  2146. data/third_party/boringssl-with-bazel/src/crypto/thread.c +0 -110
  2147. data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +0 -59
  2148. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -182
  2149. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +0 -260
  2150. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +0 -318
  2151. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +0 -1399
  2152. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +0 -858
  2153. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +0 -766
  2154. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +0 -96
  2155. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +0 -128
  2156. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +0 -118
  2157. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +0 -163
  2158. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +0 -826
  2159. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +0 -459
  2160. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +0 -277
  2161. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +0 -83
  2162. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +0 -404
  2163. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +0 -246
  2164. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +0 -400
  2165. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -130
  2166. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +0 -246
  2167. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -365
  2168. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +0 -116
  2169. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -90
  2170. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -358
  2171. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +0 -461
  2172. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +0 -106
  2173. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +0 -103
  2174. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +0 -212
  2175. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -830
  2176. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +0 -199
  2177. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +0 -304
  2178. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +0 -240
  2179. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +0 -331
  2180. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +0 -204
  2181. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +0 -281
  2182. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +0 -2456
  2183. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +0 -651
  2184. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +0 -284
  2185. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +0 -388
  2186. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +0 -84
  2187. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +0 -137
  2188. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +0 -153
  2189. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -386
  2190. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +0 -98
  2191. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +0 -565
  2192. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +0 -77
  2193. data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +0 -98
  2194. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +0 -544
  2195. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +0 -106
  2196. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -217
  2197. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +0 -106
  2198. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +0 -94
  2199. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +0 -80
  2200. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +0 -71
  2201. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +0 -394
  2202. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +0 -201
  2203. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +0 -138
  2204. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +0 -289
  2205. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
  2206. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
  2207. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
  2208. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
  2209. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
  2210. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
  2211. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +0 -226
  2212. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +0 -72
  2213. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +0 -640
  2214. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +0 -133
  2215. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +0 -144
  2216. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +0 -468
  2217. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +0 -500
  2218. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +0 -563
  2219. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +0 -106
  2220. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +0 -148
  2221. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +0 -266
  2222. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +0 -121
  2223. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +0 -218
  2224. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +0 -91
  2225. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +0 -379
  2226. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +0 -558
  2227. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +0 -68
  2228. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
  2229. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
  2230. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +0 -139
  2231. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +0 -154
  2232. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +0 -230
  2233. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +0 -929
  2234. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +0 -156
  2235. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +0 -1437
  2236. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -480
  2237. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +0 -207
  2238. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +0 -240
  2239. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +0 -2039
  2240. data/third_party/boringssl-with-bazel/src/include/openssl/asn1_mac.h +0 -18
  2241. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -718
  2242. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +0 -627
  2243. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +0 -198
  2244. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -939
  2245. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +0 -62
  2246. data/third_party/boringssl-with-bazel/src/include/openssl/blowfish.h +0 -93
  2247. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +0 -1057
  2248. data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +0 -137
  2249. data/third_party/boringssl-with-bazel/src/include/openssl/buffer.h +0 -18
  2250. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +0 -586
  2251. data/third_party/boringssl-with-bazel/src/include/openssl/cast.h +0 -96
  2252. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +0 -41
  2253. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -673
  2254. data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +0 -91
  2255. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +0 -183
  2256. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +0 -202
  2257. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +0 -169
  2258. data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +0 -201
  2259. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +0 -183
  2260. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +0 -353
  2261. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +0 -348
  2262. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +0 -443
  2263. data/third_party/boringssl-with-bazel/src/include/openssl/dtls1.h +0 -16
  2264. data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +0 -18
  2265. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +0 -442
  2266. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +0 -357
  2267. data/third_party/boringssl-with-bazel/src/include/openssl/ecdh.h +0 -118
  2268. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +0 -236
  2269. data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +0 -109
  2270. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +0 -466
  2271. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +0 -1083
  2272. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +0 -99
  2273. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +0 -203
  2274. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +0 -68
  2275. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +0 -186
  2276. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +0 -350
  2277. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +0 -102
  2278. data/third_party/boringssl-with-bazel/src/include/openssl/is_boringssl.h +0 -16
  2279. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +0 -81
  2280. data/third_party/boringssl-with-bazel/src/include/openssl/md4.h +0 -108
  2281. data/third_party/boringssl-with-bazel/src/include/openssl/md5.h +0 -109
  2282. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +0 -184
  2283. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +0 -4259
  2284. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +0 -256
  2285. data/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h +0 -18
  2286. data/third_party/boringssl-with-bazel/src/include/openssl/objects.h +0 -18
  2287. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +0 -70
  2288. data/third_party/boringssl-with-bazel/src/include/openssl/opensslv.h +0 -18
  2289. data/third_party/boringssl-with-bazel/src/include/openssl/ossl_typ.h +0 -18
  2290. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -483
  2291. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs12.h +0 -18
  2292. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +0 -239
  2293. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +0 -282
  2294. data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +0 -49
  2295. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +0 -108
  2296. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +0 -114
  2297. data/third_party/boringssl-with-bazel/src/include/openssl/rc4.h +0 -96
  2298. data/third_party/boringssl-with-bazel/src/include/openssl/ripemd.h +0 -108
  2299. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +0 -855
  2300. data/third_party/boringssl-with-bazel/src/include/openssl/safestack.h +0 -16
  2301. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +0 -294
  2302. data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +0 -37
  2303. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +0 -222
  2304. data/third_party/boringssl-with-bazel/src/include/openssl/srtp.h +0 -18
  2305. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +0 -5624
  2306. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +0 -333
  2307. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +0 -542
  2308. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +0 -191
  2309. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +0 -647
  2310. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +0 -310
  2311. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -90
  2312. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +0 -2419
  2313. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +0 -18
  2314. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +0 -1021
  2315. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +0 -192
  2316. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +0 -835
  2317. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +0 -268
  2318. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +0 -273
  2319. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +0 -232
  2320. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +0 -200
  2321. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +0 -353
  2322. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +0 -1084
  2323. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +0 -4325
  2324. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +0 -986
  2325. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +0 -758
  2326. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +0 -1986
  2327. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +0 -1956
  2328. data/third_party/boringssl-with-bazel/src/ssl/internal.h +0 -3953
  2329. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +0 -730
  2330. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -219
  2331. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +0 -453
  2332. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +0 -432
  2333. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +0 -896
  2334. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +0 -306
  2335. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +0 -1014
  2336. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +0 -1717
  2337. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +0 -585
  2338. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +0 -400
  2339. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +0 -3072
  2340. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +0 -837
  2341. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +0 -1342
  2342. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +0 -233
  2343. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +0 -272
  2344. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +0 -402
  2345. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +0 -1363
  2346. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +0 -384
  2347. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +0 -733
  2348. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +0 -1122
  2349. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +0 -582
  2350. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +0 -1349
  2351. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +0 -319
  2352. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +0 -705
  2353. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +0 -981
  2354. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +0 -619
  2355. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +0 -3147
  2356. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +0 -1226
  2357. data/third_party/cares/ares_build.h +0 -223
  2358. data/third_party/cares/cares/include/ares.h +0 -742
  2359. data/third_party/cares/cares/include/ares_dns.h +0 -112
  2360. data/third_party/cares/cares/include/ares_rules.h +0 -125
  2361. data/third_party/cares/cares/include/ares_version.h +0 -24
  2362. data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
  2363. data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
  2364. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -260
  2365. data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
  2366. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -264
  2367. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -499
  2368. data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
  2369. data/third_party/cares/cares/src/lib/ares_android.c +0 -444
  2370. data/third_party/cares/cares/src/lib/ares_android.h +0 -27
  2371. data/third_party/cares/cares/src/lib/ares_cancel.c +0 -63
  2372. data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
  2373. data/third_party/cares/cares/src/lib/ares_data.c +0 -240
  2374. data/third_party/cares/cares/src/lib/ares_data.h +0 -74
  2375. data/third_party/cares/cares/src/lib/ares_destroy.c +0 -113
  2376. data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -300
  2377. data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
  2378. data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
  2379. data/third_party/cares/cares/src/lib/ares_free_hostent.c +0 -43
  2380. data/third_party/cares/cares/src/lib/ares_free_string.c +0 -25
  2381. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +0 -59
  2382. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +0 -772
  2383. data/third_party/cares/cares/src/lib/ares_getenv.c +0 -28
  2384. data/third_party/cares/cares/src/lib/ares_getenv.h +0 -26
  2385. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +0 -287
  2386. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +0 -534
  2387. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +0 -447
  2388. data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
  2389. data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +0 -25
  2390. data/third_party/cares/cares/src/lib/ares_init.c +0 -2654
  2391. data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
  2392. data/third_party/cares/cares/src/lib/ares_ipv6.h +0 -85
  2393. data/third_party/cares/cares/src/lib/ares_library_init.c +0 -200
  2394. data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
  2395. data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
  2396. data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
  2397. data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
  2398. data/third_party/cares/cares/src/lib/ares_nameser.h +0 -482
  2399. data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
  2400. data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
  2401. data/third_party/cares/cares/src/lib/ares_options.c +0 -406
  2402. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -209
  2403. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -212
  2404. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
  2405. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
  2406. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
  2407. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
  2408. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
  2409. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
  2410. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
  2411. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
  2412. data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
  2413. data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
  2414. data/third_party/cares/cares/src/lib/ares_private.h +0 -423
  2415. data/third_party/cares/cares/src/lib/ares_process.c +0 -1548
  2416. data/third_party/cares/cares/src/lib/ares_query.c +0 -180
  2417. data/third_party/cares/cares/src/lib/ares_search.c +0 -321
  2418. data/third_party/cares/cares/src/lib/ares_send.c +0 -131
  2419. data/third_party/cares/cares/src/lib/ares_setup.h +0 -220
  2420. data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
  2421. data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
  2422. data/third_party/cares/cares/src/lib/ares_strdup.c +0 -49
  2423. data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
  2424. data/third_party/cares/cares/src/lib/ares_strerror.c +0 -56
  2425. data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -178
  2426. data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -43
  2427. data/third_party/cares/cares/src/lib/ares_timeout.c +0 -88
  2428. data/third_party/cares/cares/src/lib/ares_version.c +0 -11
  2429. data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
  2430. data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
  2431. data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
  2432. data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
  2433. data/third_party/cares/cares/src/lib/config-dos.h +0 -115
  2434. data/third_party/cares/cares/src/lib/config-win32.h +0 -351
  2435. data/third_party/cares/cares/src/lib/inet_net_pton.c +0 -444
  2436. data/third_party/cares/cares/src/lib/inet_ntop.c +0 -201
  2437. data/third_party/cares/cares/src/lib/setup_once.h +0 -554
  2438. data/third_party/cares/cares/src/lib/windows_port.c +0 -22
  2439. data/third_party/cares/config_darwin/ares_config.h +0 -428
  2440. data/third_party/cares/config_freebsd/ares_config.h +0 -505
  2441. data/third_party/cares/config_linux/ares_config.h +0 -461
  2442. data/third_party/cares/config_openbsd/ares_config.h +0 -505
  2443. data/third_party/re2/re2/bitmap256.h +0 -117
  2444. data/third_party/re2/re2/bitstate.cc +0 -385
  2445. data/third_party/re2/re2/compile.cc +0 -1261
  2446. data/third_party/re2/re2/dfa.cc +0 -2118
  2447. data/third_party/re2/re2/filtered_re2.cc +0 -137
  2448. data/third_party/re2/re2/filtered_re2.h +0 -114
  2449. data/third_party/re2/re2/mimics_pcre.cc +0 -197
  2450. data/third_party/re2/re2/nfa.cc +0 -713
  2451. data/third_party/re2/re2/onepass.cc +0 -623
  2452. data/third_party/re2/re2/parse.cc +0 -2483
  2453. data/third_party/re2/re2/perl_groups.cc +0 -119
  2454. data/third_party/re2/re2/pod_array.h +0 -55
  2455. data/third_party/re2/re2/prefilter.cc +0 -711
  2456. data/third_party/re2/re2/prefilter.h +0 -108
  2457. data/third_party/re2/re2/prefilter_tree.cc +0 -407
  2458. data/third_party/re2/re2/prefilter_tree.h +0 -139
  2459. data/third_party/re2/re2/prog.cc +0 -1166
  2460. data/third_party/re2/re2/prog.h +0 -455
  2461. data/third_party/re2/re2/re2.cc +0 -1331
  2462. data/third_party/re2/re2/re2.h +0 -1017
  2463. data/third_party/re2/re2/regexp.cc +0 -987
  2464. data/third_party/re2/re2/regexp.h +0 -665
  2465. data/third_party/re2/re2/set.cc +0 -176
  2466. data/third_party/re2/re2/set.h +0 -85
  2467. data/third_party/re2/re2/simplify.cc +0 -665
  2468. data/third_party/re2/re2/sparse_array.h +0 -392
  2469. data/third_party/re2/re2/sparse_set.h +0 -264
  2470. data/third_party/re2/re2/stringpiece.cc +0 -65
  2471. data/third_party/re2/re2/stringpiece.h +0 -210
  2472. data/third_party/re2/re2/tostring.cc +0 -351
  2473. data/third_party/re2/re2/unicode_casefold.cc +0 -582
  2474. data/third_party/re2/re2/unicode_casefold.h +0 -78
  2475. data/third_party/re2/re2/unicode_groups.cc +0 -6269
  2476. data/third_party/re2/re2/unicode_groups.h +0 -67
  2477. data/third_party/re2/re2/walker-inl.h +0 -246
  2478. data/third_party/re2/util/benchmark.h +0 -156
  2479. data/third_party/re2/util/flags.h +0 -26
  2480. data/third_party/re2/util/logging.h +0 -109
  2481. data/third_party/re2/util/malloc_counter.h +0 -19
  2482. data/third_party/re2/util/mix.h +0 -41
  2483. data/third_party/re2/util/mutex.h +0 -148
  2484. data/third_party/re2/util/pcre.cc +0 -1025
  2485. data/third_party/re2/util/pcre.h +0 -681
  2486. data/third_party/re2/util/rune.cc +0 -260
  2487. data/third_party/re2/util/strutil.cc +0 -149
  2488. data/third_party/re2/util/strutil.h +0 -21
  2489. data/third_party/re2/util/test.h +0 -50
  2490. data/third_party/re2/util/utf.h +0 -44
  2491. data/third_party/re2/util/util.h +0 -42
  2492. data/third_party/upb/third_party/utf8_range/naive.c +0 -92
  2493. data/third_party/upb/third_party/utf8_range/range2-neon.c +0 -157
  2494. data/third_party/upb/third_party/utf8_range/range2-sse.c +0 -170
  2495. data/third_party/upb/third_party/utf8_range/utf8_range.h +0 -9
  2496. data/third_party/upb/upb/arena.c +0 -277
  2497. data/third_party/upb/upb/arena.h +0 -225
  2498. data/third_party/upb/upb/array.c +0 -114
  2499. data/third_party/upb/upb/array.h +0 -83
  2500. data/third_party/upb/upb/collections.h +0 -36
  2501. data/third_party/upb/upb/decode.c +0 -1221
  2502. data/third_party/upb/upb/decode.h +0 -95
  2503. data/third_party/upb/upb/decode_fast.c +0 -1055
  2504. data/third_party/upb/upb/decode_fast.h +0 -153
  2505. data/third_party/upb/upb/def.c +0 -3269
  2506. data/third_party/upb/upb/def.h +0 -416
  2507. data/third_party/upb/upb/def.hpp +0 -441
  2508. data/third_party/upb/upb/encode.c +0 -613
  2509. data/third_party/upb/upb/encode.h +0 -81
  2510. data/third_party/upb/upb/extension_registry.c +0 -93
  2511. data/third_party/upb/upb/extension_registry.h +0 -84
  2512. data/third_party/upb/upb/internal/decode.h +0 -211
  2513. data/third_party/upb/upb/internal/table.h +0 -385
  2514. data/third_party/upb/upb/internal/upb.h +0 -68
  2515. data/third_party/upb/upb/internal/vsnprintf_compat.h +0 -52
  2516. data/third_party/upb/upb/json_decode.c +0 -1512
  2517. data/third_party/upb/upb/json_decode.h +0 -47
  2518. data/third_party/upb/upb/json_encode.c +0 -780
  2519. data/third_party/upb/upb/json_encode.h +0 -65
  2520. data/third_party/upb/upb/map.c +0 -108
  2521. data/third_party/upb/upb/map.h +0 -117
  2522. data/third_party/upb/upb/message_value.h +0 -66
  2523. data/third_party/upb/upb/mini_table.c +0 -1147
  2524. data/third_party/upb/upb/mini_table.h +0 -189
  2525. data/third_party/upb/upb/mini_table.hpp +0 -112
  2526. data/third_party/upb/upb/msg.c +0 -368
  2527. data/third_party/upb/upb/msg.h +0 -71
  2528. data/third_party/upb/upb/msg_internal.h +0 -837
  2529. data/third_party/upb/upb/port_def.inc +0 -262
  2530. data/third_party/upb/upb/port_undef.inc +0 -63
  2531. data/third_party/upb/upb/reflection.c +0 -323
  2532. data/third_party/upb/upb/reflection.h +0 -110
  2533. data/third_party/upb/upb/reflection.hpp +0 -37
  2534. data/third_party/upb/upb/status.c +0 -86
  2535. data/third_party/upb/upb/status.h +0 -66
  2536. data/third_party/upb/upb/table.c +0 -926
  2537. data/third_party/upb/upb/table_internal.h +0 -36
  2538. data/third_party/upb/upb/text_encode.c +0 -473
  2539. data/third_party/upb/upb/text_encode.h +0 -64
  2540. data/third_party/upb/upb/upb.c +0 -76
  2541. data/third_party/upb/upb/upb.h +0 -184
  2542. data/third_party/upb/upb/upb.hpp +0 -115
  2543. data/third_party/xxhash/xxhash.h +0 -5580
  2544. data/third_party/zlib/adler32.c +0 -186
  2545. data/third_party/zlib/compress.c +0 -86
  2546. data/third_party/zlib/crc32.c +0 -1116
  2547. data/third_party/zlib/crc32.h +0 -9446
  2548. data/third_party/zlib/deflate.c +0 -2211
  2549. data/third_party/zlib/deflate.h +0 -346
  2550. data/third_party/zlib/gzclose.c +0 -25
  2551. data/third_party/zlib/gzguts.h +0 -219
  2552. data/third_party/zlib/gzlib.c +0 -639
  2553. data/third_party/zlib/gzread.c +0 -652
  2554. data/third_party/zlib/gzwrite.c +0 -677
  2555. data/third_party/zlib/infback.c +0 -641
  2556. data/third_party/zlib/inffast.c +0 -323
  2557. data/third_party/zlib/inffast.h +0 -11
  2558. data/third_party/zlib/inffixed.h +0 -94
  2559. data/third_party/zlib/inflate.c +0 -1592
  2560. data/third_party/zlib/inflate.h +0 -126
  2561. data/third_party/zlib/inftrees.c +0 -304
  2562. data/third_party/zlib/inftrees.h +0 -62
  2563. data/third_party/zlib/trees.c +0 -1182
  2564. data/third_party/zlib/trees.h +0 -128
  2565. data/third_party/zlib/uncompr.c +0 -93
  2566. data/third_party/zlib/zconf.h +0 -534
  2567. data/third_party/zlib/zlib.h +0 -1935
  2568. data/third_party/zlib/zutil.c +0 -325
  2569. data/third_party/zlib/zutil.h +0 -274
@@ -1,2786 +0,0 @@
1
- // Copyright 2017 The Abseil Authors.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // https://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
-
15
- #include "absl/synchronization/mutex.h"
16
-
17
- #ifdef _WIN32
18
- #include <windows.h>
19
- #ifdef ERROR
20
- #undef ERROR
21
- #endif
22
- #else
23
- #include <fcntl.h>
24
- #include <pthread.h>
25
- #include <sched.h>
26
- #include <sys/time.h>
27
- #endif
28
-
29
- #include <assert.h>
30
- #include <errno.h>
31
- #include <stdio.h>
32
- #include <stdlib.h>
33
- #include <string.h>
34
- #include <time.h>
35
-
36
- #include <algorithm>
37
- #include <atomic>
38
- #include <cinttypes>
39
- #include <thread> // NOLINT(build/c++11)
40
-
41
- #include "absl/base/attributes.h"
42
- #include "absl/base/call_once.h"
43
- #include "absl/base/config.h"
44
- #include "absl/base/dynamic_annotations.h"
45
- #include "absl/base/internal/atomic_hook.h"
46
- #include "absl/base/internal/cycleclock.h"
47
- #include "absl/base/internal/hide_ptr.h"
48
- #include "absl/base/internal/low_level_alloc.h"
49
- #include "absl/base/internal/raw_logging.h"
50
- #include "absl/base/internal/spinlock.h"
51
- #include "absl/base/internal/sysinfo.h"
52
- #include "absl/base/internal/thread_identity.h"
53
- #include "absl/base/internal/tsan_mutex_interface.h"
54
- #include "absl/base/port.h"
55
- #include "absl/debugging/stacktrace.h"
56
- #include "absl/debugging/symbolize.h"
57
- #include "absl/synchronization/internal/graphcycles.h"
58
- #include "absl/synchronization/internal/per_thread_sem.h"
59
- #include "absl/time/time.h"
60
-
61
- using absl::base_internal::CurrentThreadIdentityIfPresent;
62
- using absl::base_internal::PerThreadSynch;
63
- using absl::base_internal::SchedulingGuard;
64
- using absl::base_internal::ThreadIdentity;
65
- using absl::synchronization_internal::GetOrCreateCurrentThreadIdentity;
66
- using absl::synchronization_internal::GraphCycles;
67
- using absl::synchronization_internal::GraphId;
68
- using absl::synchronization_internal::InvalidGraphId;
69
- using absl::synchronization_internal::KernelTimeout;
70
- using absl::synchronization_internal::PerThreadSem;
71
-
72
- extern "C" {
73
- ABSL_ATTRIBUTE_WEAK void ABSL_INTERNAL_C_SYMBOL(AbslInternalMutexYield)() {
74
- std::this_thread::yield();
75
- }
76
- } // extern "C"
77
-
78
- namespace absl {
79
- ABSL_NAMESPACE_BEGIN
80
-
81
- namespace {
82
-
83
- #if defined(ABSL_HAVE_THREAD_SANITIZER)
84
- constexpr OnDeadlockCycle kDeadlockDetectionDefault = OnDeadlockCycle::kIgnore;
85
- #else
86
- constexpr OnDeadlockCycle kDeadlockDetectionDefault = OnDeadlockCycle::kAbort;
87
- #endif
88
-
89
- ABSL_CONST_INIT std::atomic<OnDeadlockCycle> synch_deadlock_detection(
90
- kDeadlockDetectionDefault);
91
- ABSL_CONST_INIT std::atomic<bool> synch_check_invariants(false);
92
-
93
- ABSL_INTERNAL_ATOMIC_HOOK_ATTRIBUTES
94
- absl::base_internal::AtomicHook<void (*)(int64_t wait_cycles)>
95
- submit_profile_data;
96
- ABSL_INTERNAL_ATOMIC_HOOK_ATTRIBUTES absl::base_internal::AtomicHook<void (*)(
97
- const char *msg, const void *obj, int64_t wait_cycles)>
98
- mutex_tracer;
99
- ABSL_INTERNAL_ATOMIC_HOOK_ATTRIBUTES
100
- absl::base_internal::AtomicHook<void (*)(const char *msg, const void *cv)>
101
- cond_var_tracer;
102
- ABSL_INTERNAL_ATOMIC_HOOK_ATTRIBUTES absl::base_internal::AtomicHook<
103
- bool (*)(const void *pc, char *out, int out_size)>
104
- symbolizer(absl::Symbolize);
105
-
106
- } // namespace
107
-
108
- static inline bool EvalConditionAnnotated(const Condition *cond, Mutex *mu,
109
- bool locking, bool trylock,
110
- bool read_lock);
111
-
112
- void RegisterMutexProfiler(void (*fn)(int64_t wait_cycles)) {
113
- submit_profile_data.Store(fn);
114
- }
115
-
116
- void RegisterMutexTracer(void (*fn)(const char *msg, const void *obj,
117
- int64_t wait_cycles)) {
118
- mutex_tracer.Store(fn);
119
- }
120
-
121
- void RegisterCondVarTracer(void (*fn)(const char *msg, const void *cv)) {
122
- cond_var_tracer.Store(fn);
123
- }
124
-
125
- void RegisterSymbolizer(bool (*fn)(const void *pc, char *out, int out_size)) {
126
- symbolizer.Store(fn);
127
- }
128
-
129
- namespace {
130
- // Represents the strategy for spin and yield.
131
- // See the comment in GetMutexGlobals() for more information.
132
- enum DelayMode { AGGRESSIVE, GENTLE };
133
-
134
- struct ABSL_CACHELINE_ALIGNED MutexGlobals {
135
- absl::once_flag once;
136
- int spinloop_iterations = 0;
137
- int32_t mutex_sleep_limit[2] = {};
138
- };
139
-
140
- const MutexGlobals &GetMutexGlobals() {
141
- ABSL_CONST_INIT static MutexGlobals data;
142
- absl::base_internal::LowLevelCallOnce(&data.once, [&]() {
143
- const int num_cpus = absl::base_internal::NumCPUs();
144
- data.spinloop_iterations = num_cpus > 1 ? 1500 : 0;
145
- // If this a uniprocessor, only yield/sleep. Otherwise, if the mode is
146
- // aggressive then spin many times before yielding. If the mode is
147
- // gentle then spin only a few times before yielding. Aggressive spinning
148
- // is used to ensure that an Unlock() call, which must get the spin lock
149
- // for any thread to make progress gets it without undue delay.
150
- if (num_cpus > 1) {
151
- data.mutex_sleep_limit[AGGRESSIVE] = 5000;
152
- data.mutex_sleep_limit[GENTLE] = 250;
153
- } else {
154
- data.mutex_sleep_limit[AGGRESSIVE] = 0;
155
- data.mutex_sleep_limit[GENTLE] = 0;
156
- }
157
- });
158
- return data;
159
- }
160
- } // namespace
161
-
162
- namespace synchronization_internal {
163
- // Returns the Mutex delay on iteration `c` depending on the given `mode`.
164
- // The returned value should be used as `c` for the next call to `MutexDelay`.
165
- int MutexDelay(int32_t c, int mode) {
166
- const int32_t limit = GetMutexGlobals().mutex_sleep_limit[mode];
167
- if (c < limit) {
168
- // Spin.
169
- c++;
170
- } else {
171
- SchedulingGuard::ScopedEnable enable_rescheduling;
172
- ABSL_TSAN_MUTEX_PRE_DIVERT(nullptr, 0);
173
- if (c == limit) {
174
- // Yield once.
175
- ABSL_INTERNAL_C_SYMBOL(AbslInternalMutexYield)();
176
- c++;
177
- } else {
178
- // Then wait.
179
- absl::SleepFor(absl::Microseconds(10));
180
- c = 0;
181
- }
182
- ABSL_TSAN_MUTEX_POST_DIVERT(nullptr, 0);
183
- }
184
- return c;
185
- }
186
- } // namespace synchronization_internal
187
-
188
- // --------------------------Generic atomic ops
189
- // Ensure that "(*pv & bits) == bits" by doing an atomic update of "*pv" to
190
- // "*pv | bits" if necessary. Wait until (*pv & wait_until_clear)==0
191
- // before making any change.
192
- // This is used to set flags in mutex and condition variable words.
193
- static void AtomicSetBits(std::atomic<intptr_t>* pv, intptr_t bits,
194
- intptr_t wait_until_clear) {
195
- intptr_t v;
196
- do {
197
- v = pv->load(std::memory_order_relaxed);
198
- } while ((v & bits) != bits &&
199
- ((v & wait_until_clear) != 0 ||
200
- !pv->compare_exchange_weak(v, v | bits,
201
- std::memory_order_release,
202
- std::memory_order_relaxed)));
203
- }
204
-
205
- // Ensure that "(*pv & bits) == 0" by doing an atomic update of "*pv" to
206
- // "*pv & ~bits" if necessary. Wait until (*pv & wait_until_clear)==0
207
- // before making any change.
208
- // This is used to unset flags in mutex and condition variable words.
209
- static void AtomicClearBits(std::atomic<intptr_t>* pv, intptr_t bits,
210
- intptr_t wait_until_clear) {
211
- intptr_t v;
212
- do {
213
- v = pv->load(std::memory_order_relaxed);
214
- } while ((v & bits) != 0 &&
215
- ((v & wait_until_clear) != 0 ||
216
- !pv->compare_exchange_weak(v, v & ~bits,
217
- std::memory_order_release,
218
- std::memory_order_relaxed)));
219
- }
220
-
221
- //------------------------------------------------------------------
222
-
223
- // Data for doing deadlock detection.
224
- ABSL_CONST_INIT static absl::base_internal::SpinLock deadlock_graph_mu(
225
- absl::kConstInit, base_internal::SCHEDULE_KERNEL_ONLY);
226
-
227
- // Graph used to detect deadlocks.
228
- ABSL_CONST_INIT static GraphCycles *deadlock_graph
229
- ABSL_GUARDED_BY(deadlock_graph_mu) ABSL_PT_GUARDED_BY(deadlock_graph_mu);
230
-
231
- //------------------------------------------------------------------
232
- // An event mechanism for debugging mutex use.
233
- // It also allows mutexes to be given names for those who can't handle
234
- // addresses, and instead like to give their data structures names like
235
- // "Henry", "Fido", or "Rupert IV, King of Yondavia".
236
-
237
- namespace { // to prevent name pollution
238
- enum { // Mutex and CondVar events passed as "ev" to PostSynchEvent
239
- // Mutex events
240
- SYNCH_EV_TRYLOCK_SUCCESS,
241
- SYNCH_EV_TRYLOCK_FAILED,
242
- SYNCH_EV_READERTRYLOCK_SUCCESS,
243
- SYNCH_EV_READERTRYLOCK_FAILED,
244
- SYNCH_EV_LOCK,
245
- SYNCH_EV_LOCK_RETURNING,
246
- SYNCH_EV_READERLOCK,
247
- SYNCH_EV_READERLOCK_RETURNING,
248
- SYNCH_EV_UNLOCK,
249
- SYNCH_EV_READERUNLOCK,
250
-
251
- // CondVar events
252
- SYNCH_EV_WAIT,
253
- SYNCH_EV_WAIT_RETURNING,
254
- SYNCH_EV_SIGNAL,
255
- SYNCH_EV_SIGNALALL,
256
- };
257
-
258
- enum { // Event flags
259
- SYNCH_F_R = 0x01, // reader event
260
- SYNCH_F_LCK = 0x02, // PostSynchEvent called with mutex held
261
- SYNCH_F_TRY = 0x04, // TryLock or ReaderTryLock
262
- SYNCH_F_UNLOCK = 0x08, // Unlock or ReaderUnlock
263
-
264
- SYNCH_F_LCK_W = SYNCH_F_LCK,
265
- SYNCH_F_LCK_R = SYNCH_F_LCK | SYNCH_F_R,
266
- };
267
- } // anonymous namespace
268
-
269
- // Properties of the events.
270
- static const struct {
271
- int flags;
272
- const char *msg;
273
- } event_properties[] = {
274
- {SYNCH_F_LCK_W | SYNCH_F_TRY, "TryLock succeeded "},
275
- {0, "TryLock failed "},
276
- {SYNCH_F_LCK_R | SYNCH_F_TRY, "ReaderTryLock succeeded "},
277
- {0, "ReaderTryLock failed "},
278
- {0, "Lock blocking "},
279
- {SYNCH_F_LCK_W, "Lock returning "},
280
- {0, "ReaderLock blocking "},
281
- {SYNCH_F_LCK_R, "ReaderLock returning "},
282
- {SYNCH_F_LCK_W | SYNCH_F_UNLOCK, "Unlock "},
283
- {SYNCH_F_LCK_R | SYNCH_F_UNLOCK, "ReaderUnlock "},
284
- {0, "Wait on "},
285
- {0, "Wait unblocked "},
286
- {0, "Signal on "},
287
- {0, "SignalAll on "},
288
- };
289
-
290
- ABSL_CONST_INIT static absl::base_internal::SpinLock synch_event_mu(
291
- absl::kConstInit, base_internal::SCHEDULE_KERNEL_ONLY);
292
-
293
- // Hash table size; should be prime > 2.
294
- // Can't be too small, as it's used for deadlock detection information.
295
- static constexpr uint32_t kNSynchEvent = 1031;
296
-
297
- static struct SynchEvent { // this is a trivial hash table for the events
298
- // struct is freed when refcount reaches 0
299
- int refcount ABSL_GUARDED_BY(synch_event_mu);
300
-
301
- // buckets have linear, 0-terminated chains
302
- SynchEvent *next ABSL_GUARDED_BY(synch_event_mu);
303
-
304
- // Constant after initialization
305
- uintptr_t masked_addr; // object at this address is called "name"
306
-
307
- // No explicit synchronization used. Instead we assume that the
308
- // client who enables/disables invariants/logging on a Mutex does so
309
- // while the Mutex is not being concurrently accessed by others.
310
- void (*invariant)(void *arg); // called on each event
311
- void *arg; // first arg to (*invariant)()
312
- bool log; // logging turned on
313
-
314
- // Constant after initialization
315
- char name[1]; // actually longer---NUL-terminated string
316
- } * synch_event[kNSynchEvent] ABSL_GUARDED_BY(synch_event_mu);
317
-
318
- // Ensure that the object at "addr" has a SynchEvent struct associated with it,
319
- // set "bits" in the word there (waiting until lockbit is clear before doing
320
- // so), and return a refcounted reference that will remain valid until
321
- // UnrefSynchEvent() is called. If a new SynchEvent is allocated,
322
- // the string name is copied into it.
323
- // When used with a mutex, the caller should also ensure that kMuEvent
324
- // is set in the mutex word, and similarly for condition variables and kCVEvent.
325
- static SynchEvent *EnsureSynchEvent(std::atomic<intptr_t> *addr,
326
- const char *name, intptr_t bits,
327
- intptr_t lockbit) {
328
- uint32_t h = reinterpret_cast<intptr_t>(addr) % kNSynchEvent;
329
- SynchEvent *e;
330
- // first look for existing SynchEvent struct..
331
- synch_event_mu.Lock();
332
- for (e = synch_event[h];
333
- e != nullptr && e->masked_addr != base_internal::HidePtr(addr);
334
- e = e->next) {
335
- }
336
- if (e == nullptr) { // no SynchEvent struct found; make one.
337
- if (name == nullptr) {
338
- name = "";
339
- }
340
- size_t l = strlen(name);
341
- e = reinterpret_cast<SynchEvent *>(
342
- base_internal::LowLevelAlloc::Alloc(sizeof(*e) + l));
343
- e->refcount = 2; // one for return value, one for linked list
344
- e->masked_addr = base_internal::HidePtr(addr);
345
- e->invariant = nullptr;
346
- e->arg = nullptr;
347
- e->log = false;
348
- strcpy(e->name, name); // NOLINT(runtime/printf)
349
- e->next = synch_event[h];
350
- AtomicSetBits(addr, bits, lockbit);
351
- synch_event[h] = e;
352
- } else {
353
- e->refcount++; // for return value
354
- }
355
- synch_event_mu.Unlock();
356
- return e;
357
- }
358
-
359
- // Deallocate the SynchEvent *e, whose refcount has fallen to zero.
360
- static void DeleteSynchEvent(SynchEvent *e) {
361
- base_internal::LowLevelAlloc::Free(e);
362
- }
363
-
364
- // Decrement the reference count of *e, or do nothing if e==null.
365
- static void UnrefSynchEvent(SynchEvent *e) {
366
- if (e != nullptr) {
367
- synch_event_mu.Lock();
368
- bool del = (--(e->refcount) == 0);
369
- synch_event_mu.Unlock();
370
- if (del) {
371
- DeleteSynchEvent(e);
372
- }
373
- }
374
- }
375
-
376
- // Forget the mapping from the object (Mutex or CondVar) at address addr
377
- // to SynchEvent object, and clear "bits" in its word (waiting until lockbit
378
- // is clear before doing so).
379
- static void ForgetSynchEvent(std::atomic<intptr_t> *addr, intptr_t bits,
380
- intptr_t lockbit) {
381
- uint32_t h = reinterpret_cast<intptr_t>(addr) % kNSynchEvent;
382
- SynchEvent **pe;
383
- SynchEvent *e;
384
- synch_event_mu.Lock();
385
- for (pe = &synch_event[h];
386
- (e = *pe) != nullptr && e->masked_addr != base_internal::HidePtr(addr);
387
- pe = &e->next) {
388
- }
389
- bool del = false;
390
- if (e != nullptr) {
391
- *pe = e->next;
392
- del = (--(e->refcount) == 0);
393
- }
394
- AtomicClearBits(addr, bits, lockbit);
395
- synch_event_mu.Unlock();
396
- if (del) {
397
- DeleteSynchEvent(e);
398
- }
399
- }
400
-
401
- // Return a refcounted reference to the SynchEvent of the object at address
402
- // "addr", if any. The pointer returned is valid until the UnrefSynchEvent() is
403
- // called.
404
- static SynchEvent *GetSynchEvent(const void *addr) {
405
- uint32_t h = reinterpret_cast<intptr_t>(addr) % kNSynchEvent;
406
- SynchEvent *e;
407
- synch_event_mu.Lock();
408
- for (e = synch_event[h];
409
- e != nullptr && e->masked_addr != base_internal::HidePtr(addr);
410
- e = e->next) {
411
- }
412
- if (e != nullptr) {
413
- e->refcount++;
414
- }
415
- synch_event_mu.Unlock();
416
- return e;
417
- }
418
-
419
- // Called when an event "ev" occurs on a Mutex of CondVar "obj"
420
- // if event recording is on
421
- static void PostSynchEvent(void *obj, int ev) {
422
- SynchEvent *e = GetSynchEvent(obj);
423
- // logging is on if event recording is on and either there's no event struct,
424
- // or it explicitly says to log
425
- if (e == nullptr || e->log) {
426
- void *pcs[40];
427
- int n = absl::GetStackTrace(pcs, ABSL_ARRAYSIZE(pcs), 1);
428
- // A buffer with enough space for the ASCII for all the PCs, even on a
429
- // 64-bit machine.
430
- char buffer[ABSL_ARRAYSIZE(pcs) * 24];
431
- int pos = snprintf(buffer, sizeof (buffer), " @");
432
- for (int i = 0; i != n; i++) {
433
- pos += snprintf(&buffer[pos], sizeof (buffer) - pos, " %p", pcs[i]);
434
- }
435
- ABSL_RAW_LOG(INFO, "%s%p %s %s", event_properties[ev].msg, obj,
436
- (e == nullptr ? "" : e->name), buffer);
437
- }
438
- const int flags = event_properties[ev].flags;
439
- if ((flags & SYNCH_F_LCK) != 0 && e != nullptr && e->invariant != nullptr) {
440
- // Calling the invariant as is causes problems under ThreadSanitizer.
441
- // We are currently inside of Mutex Lock/Unlock and are ignoring all
442
- // memory accesses and synchronization. If the invariant transitively
443
- // synchronizes something else and we ignore the synchronization, we will
444
- // get false positive race reports later.
445
- // Reuse EvalConditionAnnotated to properly call into user code.
446
- struct local {
447
- static bool pred(SynchEvent *ev) {
448
- (*ev->invariant)(ev->arg);
449
- return false;
450
- }
451
- };
452
- Condition cond(&local::pred, e);
453
- Mutex *mu = static_cast<Mutex *>(obj);
454
- const bool locking = (flags & SYNCH_F_UNLOCK) == 0;
455
- const bool trylock = (flags & SYNCH_F_TRY) != 0;
456
- const bool read_lock = (flags & SYNCH_F_R) != 0;
457
- EvalConditionAnnotated(&cond, mu, locking, trylock, read_lock);
458
- }
459
- UnrefSynchEvent(e);
460
- }
461
-
462
- //------------------------------------------------------------------
463
-
464
- // The SynchWaitParams struct encapsulates the way in which a thread is waiting:
465
- // whether it has a timeout, the condition, exclusive/shared, and whether a
466
- // condition variable wait has an associated Mutex (as opposed to another
467
- // type of lock). It also points to the PerThreadSynch struct of its thread.
468
- // cv_word tells Enqueue() to enqueue on a CondVar using CondVarEnqueue().
469
- //
470
- // This structure is held on the stack rather than directly in
471
- // PerThreadSynch because a thread can be waiting on multiple Mutexes if,
472
- // while waiting on one Mutex, the implementation calls a client callback
473
- // (such as a Condition function) that acquires another Mutex. We don't
474
- // strictly need to allow this, but programmers become confused if we do not
475
- // allow them to use functions such a LOG() within Condition functions. The
476
- // PerThreadSynch struct points at the most recent SynchWaitParams struct when
477
- // the thread is on a Mutex's waiter queue.
478
- struct SynchWaitParams {
479
- SynchWaitParams(Mutex::MuHow how_arg, const Condition *cond_arg,
480
- KernelTimeout timeout_arg, Mutex *cvmu_arg,
481
- PerThreadSynch *thread_arg,
482
- std::atomic<intptr_t> *cv_word_arg)
483
- : how(how_arg),
484
- cond(cond_arg),
485
- timeout(timeout_arg),
486
- cvmu(cvmu_arg),
487
- thread(thread_arg),
488
- cv_word(cv_word_arg),
489
- contention_start_cycles(base_internal::CycleClock::Now()) {}
490
-
491
- const Mutex::MuHow how; // How this thread needs to wait.
492
- const Condition *cond; // The condition that this thread is waiting for.
493
- // In Mutex, this field is set to zero if a timeout
494
- // expires.
495
- KernelTimeout timeout; // timeout expiry---absolute time
496
- // In Mutex, this field is set to zero if a timeout
497
- // expires.
498
- Mutex *const cvmu; // used for transfer from cond var to mutex
499
- PerThreadSynch *const thread; // thread that is waiting
500
-
501
- // If not null, thread should be enqueued on the CondVar whose state
502
- // word is cv_word instead of queueing normally on the Mutex.
503
- std::atomic<intptr_t> *cv_word;
504
-
505
- int64_t contention_start_cycles; // Time (in cycles) when this thread started
506
- // to contend for the mutex.
507
- };
508
-
509
- struct SynchLocksHeld {
510
- int n; // number of valid entries in locks[]
511
- bool overflow; // true iff we overflowed the array at some point
512
- struct {
513
- Mutex *mu; // lock acquired
514
- int32_t count; // times acquired
515
- GraphId id; // deadlock_graph id of acquired lock
516
- } locks[40];
517
- // If a thread overfills the array during deadlock detection, we
518
- // continue, discarding information as needed. If no overflow has
519
- // taken place, we can provide more error checking, such as
520
- // detecting when a thread releases a lock it does not hold.
521
- };
522
-
523
- // A sentinel value in lists that is not 0.
524
- // A 0 value is used to mean "not on a list".
525
- static PerThreadSynch *const kPerThreadSynchNull =
526
- reinterpret_cast<PerThreadSynch *>(1);
527
-
528
- static SynchLocksHeld *LocksHeldAlloc() {
529
- SynchLocksHeld *ret = reinterpret_cast<SynchLocksHeld *>(
530
- base_internal::LowLevelAlloc::Alloc(sizeof(SynchLocksHeld)));
531
- ret->n = 0;
532
- ret->overflow = false;
533
- return ret;
534
- }
535
-
536
- // Return the PerThreadSynch-struct for this thread.
537
- static PerThreadSynch *Synch_GetPerThread() {
538
- ThreadIdentity *identity = GetOrCreateCurrentThreadIdentity();
539
- return &identity->per_thread_synch;
540
- }
541
-
542
- static PerThreadSynch *Synch_GetPerThreadAnnotated(Mutex *mu) {
543
- if (mu) {
544
- ABSL_TSAN_MUTEX_PRE_DIVERT(mu, 0);
545
- }
546
- PerThreadSynch *w = Synch_GetPerThread();
547
- if (mu) {
548
- ABSL_TSAN_MUTEX_POST_DIVERT(mu, 0);
549
- }
550
- return w;
551
- }
552
-
553
- static SynchLocksHeld *Synch_GetAllLocks() {
554
- PerThreadSynch *s = Synch_GetPerThread();
555
- if (s->all_locks == nullptr) {
556
- s->all_locks = LocksHeldAlloc(); // Freed by ReclaimThreadIdentity.
557
- }
558
- return s->all_locks;
559
- }
560
-
561
- // Post on "w"'s associated PerThreadSem.
562
- void Mutex::IncrementSynchSem(Mutex *mu, PerThreadSynch *w) {
563
- if (mu) {
564
- ABSL_TSAN_MUTEX_PRE_DIVERT(mu, 0);
565
- }
566
- PerThreadSem::Post(w->thread_identity());
567
- if (mu) {
568
- ABSL_TSAN_MUTEX_POST_DIVERT(mu, 0);
569
- }
570
- }
571
-
572
- // Wait on "w"'s associated PerThreadSem; returns false if timeout expired.
573
- bool Mutex::DecrementSynchSem(Mutex *mu, PerThreadSynch *w, KernelTimeout t) {
574
- if (mu) {
575
- ABSL_TSAN_MUTEX_PRE_DIVERT(mu, 0);
576
- }
577
- assert(w == Synch_GetPerThread());
578
- static_cast<void>(w);
579
- bool res = PerThreadSem::Wait(t);
580
- if (mu) {
581
- ABSL_TSAN_MUTEX_POST_DIVERT(mu, 0);
582
- }
583
- return res;
584
- }
585
-
586
- // We're in a fatal signal handler that hopes to use Mutex and to get
587
- // lucky by not deadlocking. We try to improve its chances of success
588
- // by effectively disabling some of the consistency checks. This will
589
- // prevent certain ABSL_RAW_CHECK() statements from being triggered when
590
- // re-rentry is detected. The ABSL_RAW_CHECK() statements are those in the
591
- // Mutex code checking that the "waitp" field has not been reused.
592
- void Mutex::InternalAttemptToUseMutexInFatalSignalHandler() {
593
- // Fix the per-thread state only if it exists.
594
- ThreadIdentity *identity = CurrentThreadIdentityIfPresent();
595
- if (identity != nullptr) {
596
- identity->per_thread_synch.suppress_fatal_errors = true;
597
- }
598
- // Don't do deadlock detection when we are already failing.
599
- synch_deadlock_detection.store(OnDeadlockCycle::kIgnore,
600
- std::memory_order_release);
601
- }
602
-
603
- // --------------------------time support
604
-
605
- // Return the current time plus the timeout. Use the same clock as
606
- // PerThreadSem::Wait() for consistency. Unfortunately, we don't have
607
- // such a choice when a deadline is given directly.
608
- static absl::Time DeadlineFromTimeout(absl::Duration timeout) {
609
- #ifndef _WIN32
610
- struct timeval tv;
611
- gettimeofday(&tv, nullptr);
612
- return absl::TimeFromTimeval(tv) + timeout;
613
- #else
614
- return absl::Now() + timeout;
615
- #endif
616
- }
617
-
618
- // --------------------------Mutexes
619
-
620
- // In the layout below, the msb of the bottom byte is currently unused. Also,
621
- // the following constraints were considered in choosing the layout:
622
- // o Both the debug allocator's "uninitialized" and "freed" patterns (0xab and
623
- // 0xcd) are illegal: reader and writer lock both held.
624
- // o kMuWriter and kMuEvent should exceed kMuDesig and kMuWait, to enable the
625
- // bit-twiddling trick in Mutex::Unlock().
626
- // o kMuWriter / kMuReader == kMuWrWait / kMuWait,
627
- // to enable the bit-twiddling trick in CheckForMutexCorruption().
628
- static const intptr_t kMuReader = 0x0001L; // a reader holds the lock
629
- static const intptr_t kMuDesig = 0x0002L; // there's a designated waker
630
- static const intptr_t kMuWait = 0x0004L; // threads are waiting
631
- static const intptr_t kMuWriter = 0x0008L; // a writer holds the lock
632
- static const intptr_t kMuEvent = 0x0010L; // record this mutex's events
633
- // INVARIANT1: there's a thread that was blocked on the mutex, is
634
- // no longer, yet has not yet acquired the mutex. If there's a
635
- // designated waker, all threads can avoid taking the slow path in
636
- // unlock because the designated waker will subsequently acquire
637
- // the lock and wake someone. To maintain INVARIANT1 the bit is
638
- // set when a thread is unblocked(INV1a), and threads that were
639
- // unblocked reset the bit when they either acquire or re-block
640
- // (INV1b).
641
- static const intptr_t kMuWrWait = 0x0020L; // runnable writer is waiting
642
- // for a reader
643
- static const intptr_t kMuSpin = 0x0040L; // spinlock protects wait list
644
- static const intptr_t kMuLow = 0x00ffL; // mask all mutex bits
645
- static const intptr_t kMuHigh = ~kMuLow; // mask pointer/reader count
646
-
647
- // Hack to make constant values available to gdb pretty printer
648
- enum {
649
- kGdbMuSpin = kMuSpin,
650
- kGdbMuEvent = kMuEvent,
651
- kGdbMuWait = kMuWait,
652
- kGdbMuWriter = kMuWriter,
653
- kGdbMuDesig = kMuDesig,
654
- kGdbMuWrWait = kMuWrWait,
655
- kGdbMuReader = kMuReader,
656
- kGdbMuLow = kMuLow,
657
- };
658
-
659
- // kMuWrWait implies kMuWait.
660
- // kMuReader and kMuWriter are mutually exclusive.
661
- // If kMuReader is zero, there are no readers.
662
- // Otherwise, if kMuWait is zero, the high order bits contain a count of the
663
- // number of readers. Otherwise, the reader count is held in
664
- // PerThreadSynch::readers of the most recently queued waiter, again in the
665
- // bits above kMuLow.
666
- static const intptr_t kMuOne = 0x0100; // a count of one reader
667
-
668
- // flags passed to Enqueue and LockSlow{,WithTimeout,Loop}
669
- static const int kMuHasBlocked = 0x01; // already blocked (MUST == 1)
670
- static const int kMuIsCond = 0x02; // conditional waiter (CV or Condition)
671
-
672
- static_assert(PerThreadSynch::kAlignment > kMuLow,
673
- "PerThreadSynch::kAlignment must be greater than kMuLow");
674
-
675
- // This struct contains various bitmasks to be used in
676
- // acquiring and releasing a mutex in a particular mode.
677
- struct MuHowS {
678
- // if all the bits in fast_need_zero are zero, the lock can be acquired by
679
- // adding fast_add and oring fast_or. The bit kMuDesig should be reset iff
680
- // this is the designated waker.
681
- intptr_t fast_need_zero;
682
- intptr_t fast_or;
683
- intptr_t fast_add;
684
-
685
- intptr_t slow_need_zero; // fast_need_zero with events (e.g. logging)
686
-
687
- intptr_t slow_inc_need_zero; // if all the bits in slow_inc_need_zero are
688
- // zero a reader can acquire a read share by
689
- // setting the reader bit and incrementing
690
- // the reader count (in last waiter since
691
- // we're now slow-path). kMuWrWait be may
692
- // be ignored if we already waited once.
693
- };
694
-
695
- static const MuHowS kSharedS = {
696
- // shared or read lock
697
- kMuWriter | kMuWait | kMuEvent, // fast_need_zero
698
- kMuReader, // fast_or
699
- kMuOne, // fast_add
700
- kMuWriter | kMuWait, // slow_need_zero
701
- kMuSpin | kMuWriter | kMuWrWait, // slow_inc_need_zero
702
- };
703
- static const MuHowS kExclusiveS = {
704
- // exclusive or write lock
705
- kMuWriter | kMuReader | kMuEvent, // fast_need_zero
706
- kMuWriter, // fast_or
707
- 0, // fast_add
708
- kMuWriter | kMuReader, // slow_need_zero
709
- ~static_cast<intptr_t>(0), // slow_inc_need_zero
710
- };
711
- static const Mutex::MuHow kShared = &kSharedS; // shared lock
712
- static const Mutex::MuHow kExclusive = &kExclusiveS; // exclusive lock
713
-
714
- #ifdef NDEBUG
715
- static constexpr bool kDebugMode = false;
716
- #else
717
- static constexpr bool kDebugMode = true;
718
- #endif
719
-
720
- #ifdef ABSL_INTERNAL_HAVE_TSAN_INTERFACE
721
- static unsigned TsanFlags(Mutex::MuHow how) {
722
- return how == kShared ? __tsan_mutex_read_lock : 0;
723
- }
724
- #endif
725
-
726
- static bool DebugOnlyIsExiting() {
727
- return false;
728
- }
729
-
730
- Mutex::~Mutex() {
731
- intptr_t v = mu_.load(std::memory_order_relaxed);
732
- if ((v & kMuEvent) != 0 && !DebugOnlyIsExiting()) {
733
- ForgetSynchEvent(&this->mu_, kMuEvent, kMuSpin);
734
- }
735
- if (kDebugMode) {
736
- this->ForgetDeadlockInfo();
737
- }
738
- ABSL_TSAN_MUTEX_DESTROY(this, __tsan_mutex_not_static);
739
- }
740
-
741
- void Mutex::EnableDebugLog(const char *name) {
742
- SynchEvent *e = EnsureSynchEvent(&this->mu_, name, kMuEvent, kMuSpin);
743
- e->log = true;
744
- UnrefSynchEvent(e);
745
- }
746
-
747
- void EnableMutexInvariantDebugging(bool enabled) {
748
- synch_check_invariants.store(enabled, std::memory_order_release);
749
- }
750
-
751
- void Mutex::EnableInvariantDebugging(void (*invariant)(void *),
752
- void *arg) {
753
- if (synch_check_invariants.load(std::memory_order_acquire) &&
754
- invariant != nullptr) {
755
- SynchEvent *e = EnsureSynchEvent(&this->mu_, nullptr, kMuEvent, kMuSpin);
756
- e->invariant = invariant;
757
- e->arg = arg;
758
- UnrefSynchEvent(e);
759
- }
760
- }
761
-
762
- void SetMutexDeadlockDetectionMode(OnDeadlockCycle mode) {
763
- synch_deadlock_detection.store(mode, std::memory_order_release);
764
- }
765
-
766
- // Return true iff threads x and y are part of the same equivalence
767
- // class of waiters. An equivalence class is defined as the set of
768
- // waiters with the same condition, type of lock, and thread priority.
769
- //
770
- // Requires that x and y be waiting on the same Mutex queue.
771
- static bool MuEquivalentWaiter(PerThreadSynch *x, PerThreadSynch *y) {
772
- return x->waitp->how == y->waitp->how && x->priority == y->priority &&
773
- Condition::GuaranteedEqual(x->waitp->cond, y->waitp->cond);
774
- }
775
-
776
- // Given the contents of a mutex word containing a PerThreadSynch pointer,
777
- // return the pointer.
778
- static inline PerThreadSynch *GetPerThreadSynch(intptr_t v) {
779
- return reinterpret_cast<PerThreadSynch *>(v & kMuHigh);
780
- }
781
-
782
- // The next several routines maintain the per-thread next and skip fields
783
- // used in the Mutex waiter queue.
784
- // The queue is a circular singly-linked list, of which the "head" is the
785
- // last element, and head->next if the first element.
786
- // The skip field has the invariant:
787
- // For thread x, x->skip is one of:
788
- // - invalid (iff x is not in a Mutex wait queue),
789
- // - null, or
790
- // - a pointer to a distinct thread waiting later in the same Mutex queue
791
- // such that all threads in [x, x->skip] have the same condition, priority
792
- // and lock type (MuEquivalentWaiter() is true for all pairs in [x,
793
- // x->skip]).
794
- // In addition, if x->skip is valid, (x->may_skip || x->skip == null)
795
- //
796
- // By the spec of MuEquivalentWaiter(), it is not necessary when removing the
797
- // first runnable thread y from the front a Mutex queue to adjust the skip
798
- // field of another thread x because if x->skip==y, x->skip must (have) become
799
- // invalid before y is removed. The function TryRemove can remove a specified
800
- // thread from an arbitrary position in the queue whether runnable or not, so
801
- // it fixes up skip fields that would otherwise be left dangling.
802
- // The statement
803
- // if (x->may_skip && MuEquivalentWaiter(x, x->next)) { x->skip = x->next; }
804
- // maintains the invariant provided x is not the last waiter in a Mutex queue
805
- // The statement
806
- // if (x->skip != null) { x->skip = x->skip->skip; }
807
- // maintains the invariant.
808
-
809
- // Returns the last thread y in a mutex waiter queue such that all threads in
810
- // [x, y] inclusive share the same condition. Sets skip fields of some threads
811
- // in that range to optimize future evaluation of Skip() on x values in
812
- // the range. Requires thread x is in a mutex waiter queue.
813
- // The locking is unusual. Skip() is called under these conditions:
814
- // - spinlock is held in call from Enqueue(), with maybe_unlocking == false
815
- // - Mutex is held in call from UnlockSlow() by last unlocker, with
816
- // maybe_unlocking == true
817
- // - both Mutex and spinlock are held in call from DequeueAllWakeable() (from
818
- // UnlockSlow()) and TryRemove()
819
- // These cases are mutually exclusive, so Skip() never runs concurrently
820
- // with itself on the same Mutex. The skip chain is used in these other places
821
- // that cannot occur concurrently:
822
- // - FixSkip() (from TryRemove()) - spinlock and Mutex are held)
823
- // - Dequeue() (with spinlock and Mutex held)
824
- // - UnlockSlow() (with spinlock and Mutex held)
825
- // A more complex case is Enqueue()
826
- // - Enqueue() (with spinlock held and maybe_unlocking == false)
827
- // This is the first case in which Skip is called, above.
828
- // - Enqueue() (without spinlock held; but queue is empty and being freshly
829
- // formed)
830
- // - Enqueue() (with spinlock held and maybe_unlocking == true)
831
- // The first case has mutual exclusion, and the second isolation through
832
- // working on an otherwise unreachable data structure.
833
- // In the last case, Enqueue() is required to change no skip/next pointers
834
- // except those in the added node and the former "head" node. This implies
835
- // that the new node is added after head, and so must be the new head or the
836
- // new front of the queue.
837
- static PerThreadSynch *Skip(PerThreadSynch *x) {
838
- PerThreadSynch *x0 = nullptr;
839
- PerThreadSynch *x1 = x;
840
- PerThreadSynch *x2 = x->skip;
841
- if (x2 != nullptr) {
842
- // Each iteration attempts to advance sequence (x0,x1,x2) to next sequence
843
- // such that x1 == x0->skip && x2 == x1->skip
844
- while ((x0 = x1, x1 = x2, x2 = x2->skip) != nullptr) {
845
- x0->skip = x2; // short-circuit skip from x0 to x2
846
- }
847
- x->skip = x1; // short-circuit skip from x to result
848
- }
849
- return x1;
850
- }
851
-
852
- // "ancestor" appears before "to_be_removed" in the same Mutex waiter queue.
853
- // The latter is going to be removed out of order, because of a timeout.
854
- // Check whether "ancestor" has a skip field pointing to "to_be_removed",
855
- // and fix it if it does.
856
- static void FixSkip(PerThreadSynch *ancestor, PerThreadSynch *to_be_removed) {
857
- if (ancestor->skip == to_be_removed) { // ancestor->skip left dangling
858
- if (to_be_removed->skip != nullptr) {
859
- ancestor->skip = to_be_removed->skip; // can skip past to_be_removed
860
- } else if (ancestor->next != to_be_removed) { // they are not adjacent
861
- ancestor->skip = ancestor->next; // can skip one past ancestor
862
- } else {
863
- ancestor->skip = nullptr; // can't skip at all
864
- }
865
- }
866
- }
867
-
868
- static void CondVarEnqueue(SynchWaitParams *waitp);
869
-
870
- // Enqueue thread "waitp->thread" on a waiter queue.
871
- // Called with mutex spinlock held if head != nullptr
872
- // If head==nullptr and waitp->cv_word==nullptr, then Enqueue() is
873
- // idempotent; it alters no state associated with the existing (empty)
874
- // queue.
875
- //
876
- // If waitp->cv_word == nullptr, queue the thread at either the front or
877
- // the end (according to its priority) of the circular mutex waiter queue whose
878
- // head is "head", and return the new head. mu is the previous mutex state,
879
- // which contains the reader count (perhaps adjusted for the operation in
880
- // progress) if the list was empty and a read lock held, and the holder hint if
881
- // the list was empty and a write lock held. (flags & kMuIsCond) indicates
882
- // whether this thread was transferred from a CondVar or is waiting for a
883
- // non-trivial condition. In this case, Enqueue() never returns nullptr
884
- //
885
- // If waitp->cv_word != nullptr, CondVarEnqueue() is called, and "head" is
886
- // returned. This mechanism is used by CondVar to queue a thread on the
887
- // condition variable queue instead of the mutex queue in implementing Wait().
888
- // In this case, Enqueue() can return nullptr (if head==nullptr).
889
- static PerThreadSynch *Enqueue(PerThreadSynch *head,
890
- SynchWaitParams *waitp, intptr_t mu, int flags) {
891
- // If we have been given a cv_word, call CondVarEnqueue() and return
892
- // the previous head of the Mutex waiter queue.
893
- if (waitp->cv_word != nullptr) {
894
- CondVarEnqueue(waitp);
895
- return head;
896
- }
897
-
898
- PerThreadSynch *s = waitp->thread;
899
- ABSL_RAW_CHECK(
900
- s->waitp == nullptr || // normal case
901
- s->waitp == waitp || // Fer()---transfer from condition variable
902
- s->suppress_fatal_errors,
903
- "detected illegal recursion into Mutex code");
904
- s->waitp = waitp;
905
- s->skip = nullptr; // maintain skip invariant (see above)
906
- s->may_skip = true; // always true on entering queue
907
- s->wake = false; // not being woken
908
- s->cond_waiter = ((flags & kMuIsCond) != 0);
909
- if (head == nullptr) { // s is the only waiter
910
- s->next = s; // it's the only entry in the cycle
911
- s->readers = mu; // reader count is from mu word
912
- s->maybe_unlocking = false; // no one is searching an empty list
913
- head = s; // s is new head
914
- } else {
915
- PerThreadSynch *enqueue_after = nullptr; // we'll put s after this element
916
- #ifdef ABSL_HAVE_PTHREAD_GETSCHEDPARAM
917
- int64_t now_cycles = base_internal::CycleClock::Now();
918
- if (s->next_priority_read_cycles < now_cycles) {
919
- // Every so often, update our idea of the thread's priority.
920
- // pthread_getschedparam() is 5% of the block/wakeup time;
921
- // base_internal::CycleClock::Now() is 0.5%.
922
- int policy;
923
- struct sched_param param;
924
- const int err = pthread_getschedparam(pthread_self(), &policy, &param);
925
- if (err != 0) {
926
- ABSL_RAW_LOG(ERROR, "pthread_getschedparam failed: %d", err);
927
- } else {
928
- s->priority = param.sched_priority;
929
- s->next_priority_read_cycles =
930
- now_cycles +
931
- static_cast<int64_t>(base_internal::CycleClock::Frequency());
932
- }
933
- }
934
- if (s->priority > head->priority) { // s's priority is above head's
935
- // try to put s in priority-fifo order, or failing that at the front.
936
- if (!head->maybe_unlocking) {
937
- // No unlocker can be scanning the queue, so we can insert into the
938
- // middle of the queue.
939
- //
940
- // Within a skip chain, all waiters have the same priority, so we can
941
- // skip forward through the chains until we find one with a lower
942
- // priority than the waiter to be enqueued.
943
- PerThreadSynch *advance_to = head; // next value of enqueue_after
944
- do {
945
- enqueue_after = advance_to;
946
- // (side-effect: optimizes skip chain)
947
- advance_to = Skip(enqueue_after->next);
948
- } while (s->priority <= advance_to->priority);
949
- // termination guaranteed because s->priority > head->priority
950
- // and head is the end of a skip chain
951
- } else if (waitp->how == kExclusive &&
952
- Condition::GuaranteedEqual(waitp->cond, nullptr)) {
953
- // An unlocker could be scanning the queue, but we know it will recheck
954
- // the queue front for writers that have no condition, which is what s
955
- // is, so an insert at front is safe.
956
- enqueue_after = head; // add after head, at front
957
- }
958
- }
959
- #endif
960
- if (enqueue_after != nullptr) {
961
- s->next = enqueue_after->next;
962
- enqueue_after->next = s;
963
-
964
- // enqueue_after can be: head, Skip(...), or cur.
965
- // The first two imply enqueue_after->skip == nullptr, and
966
- // the last is used only if MuEquivalentWaiter(s, cur).
967
- // We require this because clearing enqueue_after->skip
968
- // is impossible; enqueue_after's predecessors might also
969
- // incorrectly skip over s if we were to allow other
970
- // insertion points.
971
- ABSL_RAW_CHECK(enqueue_after->skip == nullptr ||
972
- MuEquivalentWaiter(enqueue_after, s),
973
- "Mutex Enqueue failure");
974
-
975
- if (enqueue_after != head && enqueue_after->may_skip &&
976
- MuEquivalentWaiter(enqueue_after, enqueue_after->next)) {
977
- // enqueue_after can skip to its new successor, s
978
- enqueue_after->skip = enqueue_after->next;
979
- }
980
- if (MuEquivalentWaiter(s, s->next)) { // s->may_skip is known to be true
981
- s->skip = s->next; // s may skip to its successor
982
- }
983
- } else { // enqueue not done any other way, so
984
- // we're inserting s at the back
985
- // s will become new head; copy data from head into it
986
- s->next = head->next; // add s after head
987
- head->next = s;
988
- s->readers = head->readers; // reader count is from previous head
989
- s->maybe_unlocking = head->maybe_unlocking; // same for unlock hint
990
- if (head->may_skip && MuEquivalentWaiter(head, s)) {
991
- // head now has successor; may skip
992
- head->skip = s;
993
- }
994
- head = s; // s is new head
995
- }
996
- }
997
- s->state.store(PerThreadSynch::kQueued, std::memory_order_relaxed);
998
- return head;
999
- }
1000
-
1001
- // Dequeue the successor pw->next of thread pw from the Mutex waiter queue
1002
- // whose last element is head. The new head element is returned, or null
1003
- // if the list is made empty.
1004
- // Dequeue is called with both spinlock and Mutex held.
1005
- static PerThreadSynch *Dequeue(PerThreadSynch *head, PerThreadSynch *pw) {
1006
- PerThreadSynch *w = pw->next;
1007
- pw->next = w->next; // snip w out of list
1008
- if (head == w) { // we removed the head
1009
- head = (pw == w) ? nullptr : pw; // either emptied list, or pw is new head
1010
- } else if (pw != head && MuEquivalentWaiter(pw, pw->next)) {
1011
- // pw can skip to its new successor
1012
- if (pw->next->skip !=
1013
- nullptr) { // either skip to its successors skip target
1014
- pw->skip = pw->next->skip;
1015
- } else { // or to pw's successor
1016
- pw->skip = pw->next;
1017
- }
1018
- }
1019
- return head;
1020
- }
1021
-
1022
- // Traverse the elements [ pw->next, h] of the circular list whose last element
1023
- // is head.
1024
- // Remove all elements with wake==true and place them in the
1025
- // singly-linked list wake_list in the order found. Assumes that
1026
- // there is only one such element if the element has how == kExclusive.
1027
- // Return the new head.
1028
- static PerThreadSynch *DequeueAllWakeable(PerThreadSynch *head,
1029
- PerThreadSynch *pw,
1030
- PerThreadSynch **wake_tail) {
1031
- PerThreadSynch *orig_h = head;
1032
- PerThreadSynch *w = pw->next;
1033
- bool skipped = false;
1034
- do {
1035
- if (w->wake) { // remove this element
1036
- ABSL_RAW_CHECK(pw->skip == nullptr, "bad skip in DequeueAllWakeable");
1037
- // we're removing pw's successor so either pw->skip is zero or we should
1038
- // already have removed pw since if pw->skip!=null, pw has the same
1039
- // condition as w.
1040
- head = Dequeue(head, pw);
1041
- w->next = *wake_tail; // keep list terminated
1042
- *wake_tail = w; // add w to wake_list;
1043
- wake_tail = &w->next; // next addition to end
1044
- if (w->waitp->how == kExclusive) { // wake at most 1 writer
1045
- break;
1046
- }
1047
- } else { // not waking this one; skip
1048
- pw = Skip(w); // skip as much as possible
1049
- skipped = true;
1050
- }
1051
- w = pw->next;
1052
- // We want to stop processing after we've considered the original head,
1053
- // orig_h. We can't test for w==orig_h in the loop because w may skip over
1054
- // it; we are guaranteed only that w's predecessor will not skip over
1055
- // orig_h. When we've considered orig_h, either we've processed it and
1056
- // removed it (so orig_h != head), or we considered it and skipped it (so
1057
- // skipped==true && pw == head because skipping from head always skips by
1058
- // just one, leaving pw pointing at head). So we want to
1059
- // continue the loop with the negation of that expression.
1060
- } while (orig_h == head && (pw != head || !skipped));
1061
- return head;
1062
- }
1063
-
1064
- // Try to remove thread s from the list of waiters on this mutex.
1065
- // Does nothing if s is not on the waiter list.
1066
- void Mutex::TryRemove(PerThreadSynch *s) {
1067
- SchedulingGuard::ScopedDisable disable_rescheduling;
1068
- intptr_t v = mu_.load(std::memory_order_relaxed);
1069
- // acquire spinlock & lock
1070
- if ((v & (kMuWait | kMuSpin | kMuWriter | kMuReader)) == kMuWait &&
1071
- mu_.compare_exchange_strong(v, v | kMuSpin | kMuWriter,
1072
- std::memory_order_acquire,
1073
- std::memory_order_relaxed)) {
1074
- PerThreadSynch *h = GetPerThreadSynch(v);
1075
- if (h != nullptr) {
1076
- PerThreadSynch *pw = h; // pw is w's predecessor
1077
- PerThreadSynch *w;
1078
- if ((w = pw->next) != s) { // search for thread,
1079
- do { // processing at least one element
1080
- // If the current element isn't equivalent to the waiter to be
1081
- // removed, we can skip the entire chain.
1082
- if (!MuEquivalentWaiter(s, w)) {
1083
- pw = Skip(w); // so skip all that won't match
1084
- // we don't have to worry about dangling skip fields
1085
- // in the threads we skipped; none can point to s
1086
- // because they are in a different equivalence class.
1087
- } else { // seeking same condition
1088
- FixSkip(w, s); // fix up any skip pointer from w to s
1089
- pw = w;
1090
- }
1091
- // don't search further if we found the thread, or we're about to
1092
- // process the first thread again.
1093
- } while ((w = pw->next) != s && pw != h);
1094
- }
1095
- if (w == s) { // found thread; remove it
1096
- // pw->skip may be non-zero here; the loop above ensured that
1097
- // no ancestor of s can skip to s, so removal is safe anyway.
1098
- h = Dequeue(h, pw);
1099
- s->next = nullptr;
1100
- s->state.store(PerThreadSynch::kAvailable, std::memory_order_release);
1101
- }
1102
- }
1103
- intptr_t nv;
1104
- do { // release spinlock and lock
1105
- v = mu_.load(std::memory_order_relaxed);
1106
- nv = v & (kMuDesig | kMuEvent);
1107
- if (h != nullptr) {
1108
- nv |= kMuWait | reinterpret_cast<intptr_t>(h);
1109
- h->readers = 0; // we hold writer lock
1110
- h->maybe_unlocking = false; // finished unlocking
1111
- }
1112
- } while (!mu_.compare_exchange_weak(v, nv,
1113
- std::memory_order_release,
1114
- std::memory_order_relaxed));
1115
- }
1116
- }
1117
-
1118
- // Wait until thread "s", which must be the current thread, is removed from the
1119
- // this mutex's waiter queue. If "s->waitp->timeout" has a timeout, wake up
1120
- // if the wait extends past the absolute time specified, even if "s" is still
1121
- // on the mutex queue. In this case, remove "s" from the queue and return
1122
- // true, otherwise return false.
1123
- ABSL_XRAY_LOG_ARGS(1) void Mutex::Block(PerThreadSynch *s) {
1124
- while (s->state.load(std::memory_order_acquire) == PerThreadSynch::kQueued) {
1125
- if (!DecrementSynchSem(this, s, s->waitp->timeout)) {
1126
- // After a timeout, we go into a spin loop until we remove ourselves
1127
- // from the queue, or someone else removes us. We can't be sure to be
1128
- // able to remove ourselves in a single lock acquisition because this
1129
- // mutex may be held, and the holder has the right to read the centre
1130
- // of the waiter queue without holding the spinlock.
1131
- this->TryRemove(s);
1132
- int c = 0;
1133
- while (s->next != nullptr) {
1134
- c = synchronization_internal::MutexDelay(c, GENTLE);
1135
- this->TryRemove(s);
1136
- }
1137
- if (kDebugMode) {
1138
- // This ensures that we test the case that TryRemove() is called when s
1139
- // is not on the queue.
1140
- this->TryRemove(s);
1141
- }
1142
- s->waitp->timeout = KernelTimeout::Never(); // timeout is satisfied
1143
- s->waitp->cond = nullptr; // condition no longer relevant for wakeups
1144
- }
1145
- }
1146
- ABSL_RAW_CHECK(s->waitp != nullptr || s->suppress_fatal_errors,
1147
- "detected illegal recursion in Mutex code");
1148
- s->waitp = nullptr;
1149
- }
1150
-
1151
- // Wake thread w, and return the next thread in the list.
1152
- PerThreadSynch *Mutex::Wakeup(PerThreadSynch *w) {
1153
- PerThreadSynch *next = w->next;
1154
- w->next = nullptr;
1155
- w->state.store(PerThreadSynch::kAvailable, std::memory_order_release);
1156
- IncrementSynchSem(this, w);
1157
-
1158
- return next;
1159
- }
1160
-
1161
- static GraphId GetGraphIdLocked(Mutex *mu)
1162
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(deadlock_graph_mu) {
1163
- if (!deadlock_graph) { // (re)create the deadlock graph.
1164
- deadlock_graph =
1165
- new (base_internal::LowLevelAlloc::Alloc(sizeof(*deadlock_graph)))
1166
- GraphCycles;
1167
- }
1168
- return deadlock_graph->GetId(mu);
1169
- }
1170
-
1171
- static GraphId GetGraphId(Mutex *mu) ABSL_LOCKS_EXCLUDED(deadlock_graph_mu) {
1172
- deadlock_graph_mu.Lock();
1173
- GraphId id = GetGraphIdLocked(mu);
1174
- deadlock_graph_mu.Unlock();
1175
- return id;
1176
- }
1177
-
1178
- // Record a lock acquisition. This is used in debug mode for deadlock
1179
- // detection. The held_locks pointer points to the relevant data
1180
- // structure for each case.
1181
- static void LockEnter(Mutex* mu, GraphId id, SynchLocksHeld *held_locks) {
1182
- int n = held_locks->n;
1183
- int i = 0;
1184
- while (i != n && held_locks->locks[i].id != id) {
1185
- i++;
1186
- }
1187
- if (i == n) {
1188
- if (n == ABSL_ARRAYSIZE(held_locks->locks)) {
1189
- held_locks->overflow = true; // lost some data
1190
- } else { // we have room for lock
1191
- held_locks->locks[i].mu = mu;
1192
- held_locks->locks[i].count = 1;
1193
- held_locks->locks[i].id = id;
1194
- held_locks->n = n + 1;
1195
- }
1196
- } else {
1197
- held_locks->locks[i].count++;
1198
- }
1199
- }
1200
-
1201
- // Record a lock release. Each call to LockEnter(mu, id, x) should be
1202
- // eventually followed by a call to LockLeave(mu, id, x) by the same thread.
1203
- // It does not process the event if is not needed when deadlock detection is
1204
- // disabled.
1205
- static void LockLeave(Mutex* mu, GraphId id, SynchLocksHeld *held_locks) {
1206
- int n = held_locks->n;
1207
- int i = 0;
1208
- while (i != n && held_locks->locks[i].id != id) {
1209
- i++;
1210
- }
1211
- if (i == n) {
1212
- if (!held_locks->overflow) {
1213
- // The deadlock id may have been reassigned after ForgetDeadlockInfo,
1214
- // but in that case mu should still be present.
1215
- i = 0;
1216
- while (i != n && held_locks->locks[i].mu != mu) {
1217
- i++;
1218
- }
1219
- if (i == n) { // mu missing means releasing unheld lock
1220
- SynchEvent *mu_events = GetSynchEvent(mu);
1221
- ABSL_RAW_LOG(FATAL,
1222
- "thread releasing lock it does not hold: %p %s; "
1223
- ,
1224
- static_cast<void *>(mu),
1225
- mu_events == nullptr ? "" : mu_events->name);
1226
- }
1227
- }
1228
- } else if (held_locks->locks[i].count == 1) {
1229
- held_locks->n = n - 1;
1230
- held_locks->locks[i] = held_locks->locks[n - 1];
1231
- held_locks->locks[n - 1].id = InvalidGraphId();
1232
- held_locks->locks[n - 1].mu =
1233
- nullptr; // clear mu to please the leak detector.
1234
- } else {
1235
- assert(held_locks->locks[i].count > 0);
1236
- held_locks->locks[i].count--;
1237
- }
1238
- }
1239
-
1240
- // Call LockEnter() if in debug mode and deadlock detection is enabled.
1241
- static inline void DebugOnlyLockEnter(Mutex *mu) {
1242
- if (kDebugMode) {
1243
- if (synch_deadlock_detection.load(std::memory_order_acquire) !=
1244
- OnDeadlockCycle::kIgnore) {
1245
- LockEnter(mu, GetGraphId(mu), Synch_GetAllLocks());
1246
- }
1247
- }
1248
- }
1249
-
1250
- // Call LockEnter() if in debug mode and deadlock detection is enabled.
1251
- static inline void DebugOnlyLockEnter(Mutex *mu, GraphId id) {
1252
- if (kDebugMode) {
1253
- if (synch_deadlock_detection.load(std::memory_order_acquire) !=
1254
- OnDeadlockCycle::kIgnore) {
1255
- LockEnter(mu, id, Synch_GetAllLocks());
1256
- }
1257
- }
1258
- }
1259
-
1260
- // Call LockLeave() if in debug mode and deadlock detection is enabled.
1261
- static inline void DebugOnlyLockLeave(Mutex *mu) {
1262
- if (kDebugMode) {
1263
- if (synch_deadlock_detection.load(std::memory_order_acquire) !=
1264
- OnDeadlockCycle::kIgnore) {
1265
- LockLeave(mu, GetGraphId(mu), Synch_GetAllLocks());
1266
- }
1267
- }
1268
- }
1269
-
1270
- static char *StackString(void **pcs, int n, char *buf, int maxlen,
1271
- bool symbolize) {
1272
- static const int kSymLen = 200;
1273
- char sym[kSymLen];
1274
- int len = 0;
1275
- for (int i = 0; i != n; i++) {
1276
- if (symbolize) {
1277
- if (!symbolizer(pcs[i], sym, kSymLen)) {
1278
- sym[0] = '\0';
1279
- }
1280
- snprintf(buf + len, maxlen - len, "%s\t@ %p %s\n",
1281
- (i == 0 ? "\n" : ""),
1282
- pcs[i], sym);
1283
- } else {
1284
- snprintf(buf + len, maxlen - len, " %p", pcs[i]);
1285
- }
1286
- len += strlen(&buf[len]);
1287
- }
1288
- return buf;
1289
- }
1290
-
1291
- static char *CurrentStackString(char *buf, int maxlen, bool symbolize) {
1292
- void *pcs[40];
1293
- return StackString(pcs, absl::GetStackTrace(pcs, ABSL_ARRAYSIZE(pcs), 2), buf,
1294
- maxlen, symbolize);
1295
- }
1296
-
1297
- namespace {
1298
- enum { kMaxDeadlockPathLen = 10 }; // maximum length of a deadlock cycle;
1299
- // a path this long would be remarkable
1300
- // Buffers required to report a deadlock.
1301
- // We do not allocate them on stack to avoid large stack frame.
1302
- struct DeadlockReportBuffers {
1303
- char buf[6100];
1304
- GraphId path[kMaxDeadlockPathLen];
1305
- };
1306
-
1307
- struct ScopedDeadlockReportBuffers {
1308
- ScopedDeadlockReportBuffers() {
1309
- b = reinterpret_cast<DeadlockReportBuffers *>(
1310
- base_internal::LowLevelAlloc::Alloc(sizeof(*b)));
1311
- }
1312
- ~ScopedDeadlockReportBuffers() { base_internal::LowLevelAlloc::Free(b); }
1313
- DeadlockReportBuffers *b;
1314
- };
1315
-
1316
- // Helper to pass to GraphCycles::UpdateStackTrace.
1317
- int GetStack(void** stack, int max_depth) {
1318
- return absl::GetStackTrace(stack, max_depth, 3);
1319
- }
1320
- } // anonymous namespace
1321
-
1322
- // Called in debug mode when a thread is about to acquire a lock in a way that
1323
- // may block.
1324
- static GraphId DeadlockCheck(Mutex *mu) {
1325
- if (synch_deadlock_detection.load(std::memory_order_acquire) ==
1326
- OnDeadlockCycle::kIgnore) {
1327
- return InvalidGraphId();
1328
- }
1329
-
1330
- SynchLocksHeld *all_locks = Synch_GetAllLocks();
1331
-
1332
- absl::base_internal::SpinLockHolder lock(&deadlock_graph_mu);
1333
- const GraphId mu_id = GetGraphIdLocked(mu);
1334
-
1335
- if (all_locks->n == 0) {
1336
- // There are no other locks held. Return now so that we don't need to
1337
- // call GetSynchEvent(). This way we do not record the stack trace
1338
- // for this Mutex. It's ok, since if this Mutex is involved in a deadlock,
1339
- // it can't always be the first lock acquired by a thread.
1340
- return mu_id;
1341
- }
1342
-
1343
- // We prefer to keep stack traces that show a thread holding and acquiring
1344
- // as many locks as possible. This increases the chances that a given edge
1345
- // in the acquires-before graph will be represented in the stack traces
1346
- // recorded for the locks.
1347
- deadlock_graph->UpdateStackTrace(mu_id, all_locks->n + 1, GetStack);
1348
-
1349
- // For each other mutex already held by this thread:
1350
- for (int i = 0; i != all_locks->n; i++) {
1351
- const GraphId other_node_id = all_locks->locks[i].id;
1352
- const Mutex *other =
1353
- static_cast<const Mutex *>(deadlock_graph->Ptr(other_node_id));
1354
- if (other == nullptr) {
1355
- // Ignore stale lock
1356
- continue;
1357
- }
1358
-
1359
- // Add the acquired-before edge to the graph.
1360
- if (!deadlock_graph->InsertEdge(other_node_id, mu_id)) {
1361
- ScopedDeadlockReportBuffers scoped_buffers;
1362
- DeadlockReportBuffers *b = scoped_buffers.b;
1363
- static int number_of_reported_deadlocks = 0;
1364
- number_of_reported_deadlocks++;
1365
- // Symbolize only 2 first deadlock report to avoid huge slowdowns.
1366
- bool symbolize = number_of_reported_deadlocks <= 2;
1367
- ABSL_RAW_LOG(ERROR, "Potential Mutex deadlock: %s",
1368
- CurrentStackString(b->buf, sizeof (b->buf), symbolize));
1369
- int len = 0;
1370
- for (int j = 0; j != all_locks->n; j++) {
1371
- void* pr = deadlock_graph->Ptr(all_locks->locks[j].id);
1372
- if (pr != nullptr) {
1373
- snprintf(b->buf + len, sizeof (b->buf) - len, " %p", pr);
1374
- len += static_cast<int>(strlen(&b->buf[len]));
1375
- }
1376
- }
1377
- ABSL_RAW_LOG(ERROR,
1378
- "Acquiring absl::Mutex %p while holding %s; a cycle in the "
1379
- "historical lock ordering graph has been observed",
1380
- static_cast<void *>(mu), b->buf);
1381
- ABSL_RAW_LOG(ERROR, "Cycle: ");
1382
- int path_len = deadlock_graph->FindPath(
1383
- mu_id, other_node_id, ABSL_ARRAYSIZE(b->path), b->path);
1384
- for (int j = 0; j != path_len; j++) {
1385
- GraphId id = b->path[j];
1386
- Mutex *path_mu = static_cast<Mutex *>(deadlock_graph->Ptr(id));
1387
- if (path_mu == nullptr) continue;
1388
- void** stack;
1389
- int depth = deadlock_graph->GetStackTrace(id, &stack);
1390
- snprintf(b->buf, sizeof(b->buf),
1391
- "mutex@%p stack: ", static_cast<void *>(path_mu));
1392
- StackString(stack, depth, b->buf + strlen(b->buf),
1393
- static_cast<int>(sizeof(b->buf) - strlen(b->buf)),
1394
- symbolize);
1395
- ABSL_RAW_LOG(ERROR, "%s", b->buf);
1396
- }
1397
- if (synch_deadlock_detection.load(std::memory_order_acquire) ==
1398
- OnDeadlockCycle::kAbort) {
1399
- deadlock_graph_mu.Unlock(); // avoid deadlock in fatal sighandler
1400
- ABSL_RAW_LOG(FATAL, "dying due to potential deadlock");
1401
- return mu_id;
1402
- }
1403
- break; // report at most one potential deadlock per acquisition
1404
- }
1405
- }
1406
-
1407
- return mu_id;
1408
- }
1409
-
1410
- // Invoke DeadlockCheck() iff we're in debug mode and
1411
- // deadlock checking has been enabled.
1412
- static inline GraphId DebugOnlyDeadlockCheck(Mutex *mu) {
1413
- if (kDebugMode && synch_deadlock_detection.load(std::memory_order_acquire) !=
1414
- OnDeadlockCycle::kIgnore) {
1415
- return DeadlockCheck(mu);
1416
- } else {
1417
- return InvalidGraphId();
1418
- }
1419
- }
1420
-
1421
- void Mutex::ForgetDeadlockInfo() {
1422
- if (kDebugMode && synch_deadlock_detection.load(std::memory_order_acquire) !=
1423
- OnDeadlockCycle::kIgnore) {
1424
- deadlock_graph_mu.Lock();
1425
- if (deadlock_graph != nullptr) {
1426
- deadlock_graph->RemoveNode(this);
1427
- }
1428
- deadlock_graph_mu.Unlock();
1429
- }
1430
- }
1431
-
1432
- void Mutex::AssertNotHeld() const {
1433
- // We have the data to allow this check only if in debug mode and deadlock
1434
- // detection is enabled.
1435
- if (kDebugMode &&
1436
- (mu_.load(std::memory_order_relaxed) & (kMuWriter | kMuReader)) != 0 &&
1437
- synch_deadlock_detection.load(std::memory_order_acquire) !=
1438
- OnDeadlockCycle::kIgnore) {
1439
- GraphId id = GetGraphId(const_cast<Mutex *>(this));
1440
- SynchLocksHeld *locks = Synch_GetAllLocks();
1441
- for (int i = 0; i != locks->n; i++) {
1442
- if (locks->locks[i].id == id) {
1443
- SynchEvent *mu_events = GetSynchEvent(this);
1444
- ABSL_RAW_LOG(FATAL, "thread should not hold mutex %p %s",
1445
- static_cast<const void *>(this),
1446
- (mu_events == nullptr ? "" : mu_events->name));
1447
- }
1448
- }
1449
- }
1450
- }
1451
-
1452
- // Attempt to acquire *mu, and return whether successful. The implementation
1453
- // may spin for a short while if the lock cannot be acquired immediately.
1454
- static bool TryAcquireWithSpinning(std::atomic<intptr_t>* mu) {
1455
- int c = GetMutexGlobals().spinloop_iterations;
1456
- do { // do/while somewhat faster on AMD
1457
- intptr_t v = mu->load(std::memory_order_relaxed);
1458
- if ((v & (kMuReader|kMuEvent)) != 0) {
1459
- return false; // a reader or tracing -> give up
1460
- } else if (((v & kMuWriter) == 0) && // no holder -> try to acquire
1461
- mu->compare_exchange_strong(v, kMuWriter | v,
1462
- std::memory_order_acquire,
1463
- std::memory_order_relaxed)) {
1464
- return true;
1465
- }
1466
- } while (--c > 0);
1467
- return false;
1468
- }
1469
-
1470
- ABSL_XRAY_LOG_ARGS(1) void Mutex::Lock() {
1471
- ABSL_TSAN_MUTEX_PRE_LOCK(this, 0);
1472
- GraphId id = DebugOnlyDeadlockCheck(this);
1473
- intptr_t v = mu_.load(std::memory_order_relaxed);
1474
- // try fast acquire, then spin loop
1475
- if ((v & (kMuWriter | kMuReader | kMuEvent)) != 0 ||
1476
- !mu_.compare_exchange_strong(v, kMuWriter | v,
1477
- std::memory_order_acquire,
1478
- std::memory_order_relaxed)) {
1479
- // try spin acquire, then slow loop
1480
- if (!TryAcquireWithSpinning(&this->mu_)) {
1481
- this->LockSlow(kExclusive, nullptr, 0);
1482
- }
1483
- }
1484
- DebugOnlyLockEnter(this, id);
1485
- ABSL_TSAN_MUTEX_POST_LOCK(this, 0, 0);
1486
- }
1487
-
1488
- ABSL_XRAY_LOG_ARGS(1) void Mutex::ReaderLock() {
1489
- ABSL_TSAN_MUTEX_PRE_LOCK(this, __tsan_mutex_read_lock);
1490
- GraphId id = DebugOnlyDeadlockCheck(this);
1491
- intptr_t v = mu_.load(std::memory_order_relaxed);
1492
- // try fast acquire, then slow loop
1493
- if ((v & (kMuWriter | kMuWait | kMuEvent)) != 0 ||
1494
- !mu_.compare_exchange_strong(v, (kMuReader | v) + kMuOne,
1495
- std::memory_order_acquire,
1496
- std::memory_order_relaxed)) {
1497
- this->LockSlow(kShared, nullptr, 0);
1498
- }
1499
- DebugOnlyLockEnter(this, id);
1500
- ABSL_TSAN_MUTEX_POST_LOCK(this, __tsan_mutex_read_lock, 0);
1501
- }
1502
-
1503
- void Mutex::LockWhen(const Condition &cond) {
1504
- ABSL_TSAN_MUTEX_PRE_LOCK(this, 0);
1505
- GraphId id = DebugOnlyDeadlockCheck(this);
1506
- this->LockSlow(kExclusive, &cond, 0);
1507
- DebugOnlyLockEnter(this, id);
1508
- ABSL_TSAN_MUTEX_POST_LOCK(this, 0, 0);
1509
- }
1510
-
1511
- bool Mutex::LockWhenWithTimeout(const Condition &cond, absl::Duration timeout) {
1512
- return LockWhenWithDeadline(cond, DeadlineFromTimeout(timeout));
1513
- }
1514
-
1515
- bool Mutex::LockWhenWithDeadline(const Condition &cond, absl::Time deadline) {
1516
- ABSL_TSAN_MUTEX_PRE_LOCK(this, 0);
1517
- GraphId id = DebugOnlyDeadlockCheck(this);
1518
- bool res = LockSlowWithDeadline(kExclusive, &cond,
1519
- KernelTimeout(deadline), 0);
1520
- DebugOnlyLockEnter(this, id);
1521
- ABSL_TSAN_MUTEX_POST_LOCK(this, 0, 0);
1522
- return res;
1523
- }
1524
-
1525
- void Mutex::ReaderLockWhen(const Condition &cond) {
1526
- ABSL_TSAN_MUTEX_PRE_LOCK(this, __tsan_mutex_read_lock);
1527
- GraphId id = DebugOnlyDeadlockCheck(this);
1528
- this->LockSlow(kShared, &cond, 0);
1529
- DebugOnlyLockEnter(this, id);
1530
- ABSL_TSAN_MUTEX_POST_LOCK(this, __tsan_mutex_read_lock, 0);
1531
- }
1532
-
1533
- bool Mutex::ReaderLockWhenWithTimeout(const Condition &cond,
1534
- absl::Duration timeout) {
1535
- return ReaderLockWhenWithDeadline(cond, DeadlineFromTimeout(timeout));
1536
- }
1537
-
1538
- bool Mutex::ReaderLockWhenWithDeadline(const Condition &cond,
1539
- absl::Time deadline) {
1540
- ABSL_TSAN_MUTEX_PRE_LOCK(this, __tsan_mutex_read_lock);
1541
- GraphId id = DebugOnlyDeadlockCheck(this);
1542
- bool res = LockSlowWithDeadline(kShared, &cond, KernelTimeout(deadline), 0);
1543
- DebugOnlyLockEnter(this, id);
1544
- ABSL_TSAN_MUTEX_POST_LOCK(this, __tsan_mutex_read_lock, 0);
1545
- return res;
1546
- }
1547
-
1548
- void Mutex::Await(const Condition &cond) {
1549
- if (cond.Eval()) { // condition already true; nothing to do
1550
- if (kDebugMode) {
1551
- this->AssertReaderHeld();
1552
- }
1553
- } else { // normal case
1554
- ABSL_RAW_CHECK(this->AwaitCommon(cond, KernelTimeout::Never()),
1555
- "condition untrue on return from Await");
1556
- }
1557
- }
1558
-
1559
- bool Mutex::AwaitWithTimeout(const Condition &cond, absl::Duration timeout) {
1560
- return AwaitWithDeadline(cond, DeadlineFromTimeout(timeout));
1561
- }
1562
-
1563
- bool Mutex::AwaitWithDeadline(const Condition &cond, absl::Time deadline) {
1564
- if (cond.Eval()) { // condition already true; nothing to do
1565
- if (kDebugMode) {
1566
- this->AssertReaderHeld();
1567
- }
1568
- return true;
1569
- }
1570
-
1571
- KernelTimeout t{deadline};
1572
- bool res = this->AwaitCommon(cond, t);
1573
- ABSL_RAW_CHECK(res || t.has_timeout(),
1574
- "condition untrue on return from Await");
1575
- return res;
1576
- }
1577
-
1578
- bool Mutex::AwaitCommon(const Condition &cond, KernelTimeout t) {
1579
- this->AssertReaderHeld();
1580
- MuHow how =
1581
- (mu_.load(std::memory_order_relaxed) & kMuWriter) ? kExclusive : kShared;
1582
- ABSL_TSAN_MUTEX_PRE_UNLOCK(this, TsanFlags(how));
1583
- SynchWaitParams waitp(
1584
- how, &cond, t, nullptr /*no cvmu*/, Synch_GetPerThreadAnnotated(this),
1585
- nullptr /*no cv_word*/);
1586
- int flags = kMuHasBlocked;
1587
- if (!Condition::GuaranteedEqual(&cond, nullptr)) {
1588
- flags |= kMuIsCond;
1589
- }
1590
- this->UnlockSlow(&waitp);
1591
- this->Block(waitp.thread);
1592
- ABSL_TSAN_MUTEX_POST_UNLOCK(this, TsanFlags(how));
1593
- ABSL_TSAN_MUTEX_PRE_LOCK(this, TsanFlags(how));
1594
- this->LockSlowLoop(&waitp, flags);
1595
- bool res = waitp.cond != nullptr || // => cond known true from LockSlowLoop
1596
- EvalConditionAnnotated(&cond, this, true, false, how == kShared);
1597
- ABSL_TSAN_MUTEX_POST_LOCK(this, TsanFlags(how), 0);
1598
- return res;
1599
- }
1600
-
1601
- ABSL_XRAY_LOG_ARGS(1) bool Mutex::TryLock() {
1602
- ABSL_TSAN_MUTEX_PRE_LOCK(this, __tsan_mutex_try_lock);
1603
- intptr_t v = mu_.load(std::memory_order_relaxed);
1604
- if ((v & (kMuWriter | kMuReader | kMuEvent)) == 0 && // try fast acquire
1605
- mu_.compare_exchange_strong(v, kMuWriter | v,
1606
- std::memory_order_acquire,
1607
- std::memory_order_relaxed)) {
1608
- DebugOnlyLockEnter(this);
1609
- ABSL_TSAN_MUTEX_POST_LOCK(this, __tsan_mutex_try_lock, 0);
1610
- return true;
1611
- }
1612
- if ((v & kMuEvent) != 0) { // we're recording events
1613
- if ((v & kExclusive->slow_need_zero) == 0 && // try fast acquire
1614
- mu_.compare_exchange_strong(
1615
- v, (kExclusive->fast_or | v) + kExclusive->fast_add,
1616
- std::memory_order_acquire, std::memory_order_relaxed)) {
1617
- DebugOnlyLockEnter(this);
1618
- PostSynchEvent(this, SYNCH_EV_TRYLOCK_SUCCESS);
1619
- ABSL_TSAN_MUTEX_POST_LOCK(this, __tsan_mutex_try_lock, 0);
1620
- return true;
1621
- } else {
1622
- PostSynchEvent(this, SYNCH_EV_TRYLOCK_FAILED);
1623
- }
1624
- }
1625
- ABSL_TSAN_MUTEX_POST_LOCK(
1626
- this, __tsan_mutex_try_lock | __tsan_mutex_try_lock_failed, 0);
1627
- return false;
1628
- }
1629
-
1630
- ABSL_XRAY_LOG_ARGS(1) bool Mutex::ReaderTryLock() {
1631
- ABSL_TSAN_MUTEX_PRE_LOCK(this,
1632
- __tsan_mutex_read_lock | __tsan_mutex_try_lock);
1633
- intptr_t v = mu_.load(std::memory_order_relaxed);
1634
- // The while-loops (here and below) iterate only if the mutex word keeps
1635
- // changing (typically because the reader count changes) under the CAS. We
1636
- // limit the number of attempts to avoid having to think about livelock.
1637
- int loop_limit = 5;
1638
- while ((v & (kMuWriter|kMuWait|kMuEvent)) == 0 && loop_limit != 0) {
1639
- if (mu_.compare_exchange_strong(v, (kMuReader | v) + kMuOne,
1640
- std::memory_order_acquire,
1641
- std::memory_order_relaxed)) {
1642
- DebugOnlyLockEnter(this);
1643
- ABSL_TSAN_MUTEX_POST_LOCK(
1644
- this, __tsan_mutex_read_lock | __tsan_mutex_try_lock, 0);
1645
- return true;
1646
- }
1647
- loop_limit--;
1648
- v = mu_.load(std::memory_order_relaxed);
1649
- }
1650
- if ((v & kMuEvent) != 0) { // we're recording events
1651
- loop_limit = 5;
1652
- while ((v & kShared->slow_need_zero) == 0 && loop_limit != 0) {
1653
- if (mu_.compare_exchange_strong(v, (kMuReader | v) + kMuOne,
1654
- std::memory_order_acquire,
1655
- std::memory_order_relaxed)) {
1656
- DebugOnlyLockEnter(this);
1657
- PostSynchEvent(this, SYNCH_EV_READERTRYLOCK_SUCCESS);
1658
- ABSL_TSAN_MUTEX_POST_LOCK(
1659
- this, __tsan_mutex_read_lock | __tsan_mutex_try_lock, 0);
1660
- return true;
1661
- }
1662
- loop_limit--;
1663
- v = mu_.load(std::memory_order_relaxed);
1664
- }
1665
- if ((v & kMuEvent) != 0) {
1666
- PostSynchEvent(this, SYNCH_EV_READERTRYLOCK_FAILED);
1667
- }
1668
- }
1669
- ABSL_TSAN_MUTEX_POST_LOCK(this,
1670
- __tsan_mutex_read_lock | __tsan_mutex_try_lock |
1671
- __tsan_mutex_try_lock_failed,
1672
- 0);
1673
- return false;
1674
- }
1675
-
1676
- ABSL_XRAY_LOG_ARGS(1) void Mutex::Unlock() {
1677
- ABSL_TSAN_MUTEX_PRE_UNLOCK(this, 0);
1678
- DebugOnlyLockLeave(this);
1679
- intptr_t v = mu_.load(std::memory_order_relaxed);
1680
-
1681
- if (kDebugMode && ((v & (kMuWriter | kMuReader)) != kMuWriter)) {
1682
- ABSL_RAW_LOG(FATAL, "Mutex unlocked when destroyed or not locked: v=0x%x",
1683
- static_cast<unsigned>(v));
1684
- }
1685
-
1686
- // should_try_cas is whether we'll try a compare-and-swap immediately.
1687
- // NOTE: optimized out when kDebugMode is false.
1688
- bool should_try_cas = ((v & (kMuEvent | kMuWriter)) == kMuWriter &&
1689
- (v & (kMuWait | kMuDesig)) != kMuWait);
1690
- // But, we can use an alternate computation of it, that compilers
1691
- // currently don't find on their own. When that changes, this function
1692
- // can be simplified.
1693
- intptr_t x = (v ^ (kMuWriter | kMuWait)) & (kMuWriter | kMuEvent);
1694
- intptr_t y = (v ^ (kMuWriter | kMuWait)) & (kMuWait | kMuDesig);
1695
- // Claim: "x == 0 && y > 0" is equal to should_try_cas.
1696
- // Also, because kMuWriter and kMuEvent exceed kMuDesig and kMuWait,
1697
- // all possible non-zero values for x exceed all possible values for y.
1698
- // Therefore, (x == 0 && y > 0) == (x < y).
1699
- if (kDebugMode && should_try_cas != (x < y)) {
1700
- // We would usually use PRIdPTR here, but is not correctly implemented
1701
- // within the android toolchain.
1702
- ABSL_RAW_LOG(FATAL, "internal logic error %llx %llx %llx\n",
1703
- static_cast<long long>(v), static_cast<long long>(x),
1704
- static_cast<long long>(y));
1705
- }
1706
- if (x < y &&
1707
- mu_.compare_exchange_strong(v, v & ~(kMuWrWait | kMuWriter),
1708
- std::memory_order_release,
1709
- std::memory_order_relaxed)) {
1710
- // fast writer release (writer with no waiters or with designated waker)
1711
- } else {
1712
- this->UnlockSlow(nullptr /*no waitp*/); // take slow path
1713
- }
1714
- ABSL_TSAN_MUTEX_POST_UNLOCK(this, 0);
1715
- }
1716
-
1717
- // Requires v to represent a reader-locked state.
1718
- static bool ExactlyOneReader(intptr_t v) {
1719
- assert((v & (kMuWriter|kMuReader)) == kMuReader);
1720
- assert((v & kMuHigh) != 0);
1721
- // The more straightforward "(v & kMuHigh) == kMuOne" also works, but
1722
- // on some architectures the following generates slightly smaller code.
1723
- // It may be faster too.
1724
- constexpr intptr_t kMuMultipleWaitersMask = kMuHigh ^ kMuOne;
1725
- return (v & kMuMultipleWaitersMask) == 0;
1726
- }
1727
-
1728
- ABSL_XRAY_LOG_ARGS(1) void Mutex::ReaderUnlock() {
1729
- ABSL_TSAN_MUTEX_PRE_UNLOCK(this, __tsan_mutex_read_lock);
1730
- DebugOnlyLockLeave(this);
1731
- intptr_t v = mu_.load(std::memory_order_relaxed);
1732
- assert((v & (kMuWriter|kMuReader)) == kMuReader);
1733
- if ((v & (kMuReader|kMuWait|kMuEvent)) == kMuReader) {
1734
- // fast reader release (reader with no waiters)
1735
- intptr_t clear = ExactlyOneReader(v) ? kMuReader|kMuOne : kMuOne;
1736
- if (mu_.compare_exchange_strong(v, v - clear,
1737
- std::memory_order_release,
1738
- std::memory_order_relaxed)) {
1739
- ABSL_TSAN_MUTEX_POST_UNLOCK(this, __tsan_mutex_read_lock);
1740
- return;
1741
- }
1742
- }
1743
- this->UnlockSlow(nullptr /*no waitp*/); // take slow path
1744
- ABSL_TSAN_MUTEX_POST_UNLOCK(this, __tsan_mutex_read_lock);
1745
- }
1746
-
1747
- // Clears the designated waker flag in the mutex if this thread has blocked, and
1748
- // therefore may be the designated waker.
1749
- static intptr_t ClearDesignatedWakerMask(int flag) {
1750
- assert(flag >= 0);
1751
- assert(flag <= 1);
1752
- switch (flag) {
1753
- case 0: // not blocked
1754
- return ~static_cast<intptr_t>(0);
1755
- case 1: // blocked; turn off the designated waker bit
1756
- return ~static_cast<intptr_t>(kMuDesig);
1757
- }
1758
- ABSL_INTERNAL_UNREACHABLE;
1759
- }
1760
-
1761
- // Conditionally ignores the existence of waiting writers if a reader that has
1762
- // already blocked once wakes up.
1763
- static intptr_t IgnoreWaitingWritersMask(int flag) {
1764
- assert(flag >= 0);
1765
- assert(flag <= 1);
1766
- switch (flag) {
1767
- case 0: // not blocked
1768
- return ~static_cast<intptr_t>(0);
1769
- case 1: // blocked; pretend there are no waiting writers
1770
- return ~static_cast<intptr_t>(kMuWrWait);
1771
- }
1772
- ABSL_INTERNAL_UNREACHABLE;
1773
- }
1774
-
1775
- // Internal version of LockWhen(). See LockSlowWithDeadline()
1776
- ABSL_ATTRIBUTE_NOINLINE void Mutex::LockSlow(MuHow how, const Condition *cond,
1777
- int flags) {
1778
- ABSL_RAW_CHECK(
1779
- this->LockSlowWithDeadline(how, cond, KernelTimeout::Never(), flags),
1780
- "condition untrue on return from LockSlow");
1781
- }
1782
-
1783
- // Compute cond->Eval() and tell race detectors that we do it under mutex mu.
1784
- static inline bool EvalConditionAnnotated(const Condition *cond, Mutex *mu,
1785
- bool locking, bool trylock,
1786
- bool read_lock) {
1787
- // Delicate annotation dance.
1788
- // We are currently inside of read/write lock/unlock operation.
1789
- // All memory accesses are ignored inside of mutex operations + for unlock
1790
- // operation tsan considers that we've already released the mutex.
1791
- bool res = false;
1792
- #ifdef ABSL_INTERNAL_HAVE_TSAN_INTERFACE
1793
- const int flags = read_lock ? __tsan_mutex_read_lock : 0;
1794
- const int tryflags = flags | (trylock ? __tsan_mutex_try_lock : 0);
1795
- #endif
1796
- if (locking) {
1797
- // For lock we pretend that we have finished the operation,
1798
- // evaluate the predicate, then unlock the mutex and start locking it again
1799
- // to match the annotation at the end of outer lock operation.
1800
- // Note: we can't simply do POST_LOCK, Eval, PRE_LOCK, because then tsan
1801
- // will think the lock acquisition is recursive which will trigger
1802
- // deadlock detector.
1803
- ABSL_TSAN_MUTEX_POST_LOCK(mu, tryflags, 0);
1804
- res = cond->Eval();
1805
- // There is no "try" version of Unlock, so use flags instead of tryflags.
1806
- ABSL_TSAN_MUTEX_PRE_UNLOCK(mu, flags);
1807
- ABSL_TSAN_MUTEX_POST_UNLOCK(mu, flags);
1808
- ABSL_TSAN_MUTEX_PRE_LOCK(mu, tryflags);
1809
- } else {
1810
- // Similarly, for unlock we pretend that we have unlocked the mutex,
1811
- // lock the mutex, evaluate the predicate, and start unlocking it again
1812
- // to match the annotation at the end of outer unlock operation.
1813
- ABSL_TSAN_MUTEX_POST_UNLOCK(mu, flags);
1814
- ABSL_TSAN_MUTEX_PRE_LOCK(mu, flags);
1815
- ABSL_TSAN_MUTEX_POST_LOCK(mu, flags, 0);
1816
- res = cond->Eval();
1817
- ABSL_TSAN_MUTEX_PRE_UNLOCK(mu, flags);
1818
- }
1819
- // Prevent unused param warnings in non-TSAN builds.
1820
- static_cast<void>(mu);
1821
- static_cast<void>(trylock);
1822
- static_cast<void>(read_lock);
1823
- return res;
1824
- }
1825
-
1826
- // Compute cond->Eval() hiding it from race detectors.
1827
- // We are hiding it because inside of UnlockSlow we can evaluate a predicate
1828
- // that was just added by a concurrent Lock operation; Lock adds the predicate
1829
- // to the internal Mutex list without actually acquiring the Mutex
1830
- // (it only acquires the internal spinlock, which is rightfully invisible for
1831
- // tsan). As the result there is no tsan-visible synchronization between the
1832
- // addition and this thread. So if we would enable race detection here,
1833
- // it would race with the predicate initialization.
1834
- static inline bool EvalConditionIgnored(Mutex *mu, const Condition *cond) {
1835
- // Memory accesses are already ignored inside of lock/unlock operations,
1836
- // but synchronization operations are also ignored. When we evaluate the
1837
- // predicate we must ignore only memory accesses but not synchronization,
1838
- // because missed synchronization can lead to false reports later.
1839
- // So we "divert" (which un-ignores both memory accesses and synchronization)
1840
- // and then separately turn on ignores of memory accesses.
1841
- ABSL_TSAN_MUTEX_PRE_DIVERT(mu, 0);
1842
- ABSL_ANNOTATE_IGNORE_READS_AND_WRITES_BEGIN();
1843
- bool res = cond->Eval();
1844
- ABSL_ANNOTATE_IGNORE_READS_AND_WRITES_END();
1845
- ABSL_TSAN_MUTEX_POST_DIVERT(mu, 0);
1846
- static_cast<void>(mu); // Prevent unused param warning in non-TSAN builds.
1847
- return res;
1848
- }
1849
-
1850
- // Internal equivalent of *LockWhenWithDeadline(), where
1851
- // "t" represents the absolute timeout; !t.has_timeout() means "forever".
1852
- // "how" is "kShared" (for ReaderLockWhen) or "kExclusive" (for LockWhen)
1853
- // In flags, bits are ored together:
1854
- // - kMuHasBlocked indicates that the client has already blocked on the call so
1855
- // the designated waker bit must be cleared and waiting writers should not
1856
- // obstruct this call
1857
- // - kMuIsCond indicates that this is a conditional acquire (condition variable,
1858
- // Await, LockWhen) so contention profiling should be suppressed.
1859
- bool Mutex::LockSlowWithDeadline(MuHow how, const Condition *cond,
1860
- KernelTimeout t, int flags) {
1861
- intptr_t v = mu_.load(std::memory_order_relaxed);
1862
- bool unlock = false;
1863
- if ((v & how->fast_need_zero) == 0 && // try fast acquire
1864
- mu_.compare_exchange_strong(
1865
- v,
1866
- (how->fast_or |
1867
- (v & ClearDesignatedWakerMask(flags & kMuHasBlocked))) +
1868
- how->fast_add,
1869
- std::memory_order_acquire, std::memory_order_relaxed)) {
1870
- if (cond == nullptr ||
1871
- EvalConditionAnnotated(cond, this, true, false, how == kShared)) {
1872
- return true;
1873
- }
1874
- unlock = true;
1875
- }
1876
- SynchWaitParams waitp(
1877
- how, cond, t, nullptr /*no cvmu*/, Synch_GetPerThreadAnnotated(this),
1878
- nullptr /*no cv_word*/);
1879
- if (!Condition::GuaranteedEqual(cond, nullptr)) {
1880
- flags |= kMuIsCond;
1881
- }
1882
- if (unlock) {
1883
- this->UnlockSlow(&waitp);
1884
- this->Block(waitp.thread);
1885
- flags |= kMuHasBlocked;
1886
- }
1887
- this->LockSlowLoop(&waitp, flags);
1888
- return waitp.cond != nullptr || // => cond known true from LockSlowLoop
1889
- cond == nullptr ||
1890
- EvalConditionAnnotated(cond, this, true, false, how == kShared);
1891
- }
1892
-
1893
- // RAW_CHECK_FMT() takes a condition, a printf-style format string, and
1894
- // the printf-style argument list. The format string must be a literal.
1895
- // Arguments after the first are not evaluated unless the condition is true.
1896
- #define RAW_CHECK_FMT(cond, ...) \
1897
- do { \
1898
- if (ABSL_PREDICT_FALSE(!(cond))) { \
1899
- ABSL_RAW_LOG(FATAL, "Check " #cond " failed: " __VA_ARGS__); \
1900
- } \
1901
- } while (0)
1902
-
1903
- static void CheckForMutexCorruption(intptr_t v, const char* label) {
1904
- // Test for either of two situations that should not occur in v:
1905
- // kMuWriter and kMuReader
1906
- // kMuWrWait and !kMuWait
1907
- const uintptr_t w = v ^ kMuWait;
1908
- // By flipping that bit, we can now test for:
1909
- // kMuWriter and kMuReader in w
1910
- // kMuWrWait and kMuWait in w
1911
- // We've chosen these two pairs of values to be so that they will overlap,
1912
- // respectively, when the word is left shifted by three. This allows us to
1913
- // save a branch in the common (correct) case of them not being coincident.
1914
- static_assert(kMuReader << 3 == kMuWriter, "must match");
1915
- static_assert(kMuWait << 3 == kMuWrWait, "must match");
1916
- if (ABSL_PREDICT_TRUE((w & (w << 3) & (kMuWriter | kMuWrWait)) == 0)) return;
1917
- RAW_CHECK_FMT((v & (kMuWriter | kMuReader)) != (kMuWriter | kMuReader),
1918
- "%s: Mutex corrupt: both reader and writer lock held: %p",
1919
- label, reinterpret_cast<void *>(v));
1920
- RAW_CHECK_FMT((v & (kMuWait | kMuWrWait)) != kMuWrWait,
1921
- "%s: Mutex corrupt: waiting writer with no waiters: %p",
1922
- label, reinterpret_cast<void *>(v));
1923
- assert(false);
1924
- }
1925
-
1926
- void Mutex::LockSlowLoop(SynchWaitParams *waitp, int flags) {
1927
- SchedulingGuard::ScopedDisable disable_rescheduling;
1928
- int c = 0;
1929
- intptr_t v = mu_.load(std::memory_order_relaxed);
1930
- if ((v & kMuEvent) != 0) {
1931
- PostSynchEvent(this,
1932
- waitp->how == kExclusive? SYNCH_EV_LOCK: SYNCH_EV_READERLOCK);
1933
- }
1934
- ABSL_RAW_CHECK(
1935
- waitp->thread->waitp == nullptr || waitp->thread->suppress_fatal_errors,
1936
- "detected illegal recursion into Mutex code");
1937
- for (;;) {
1938
- v = mu_.load(std::memory_order_relaxed);
1939
- CheckForMutexCorruption(v, "Lock");
1940
- if ((v & waitp->how->slow_need_zero) == 0) {
1941
- if (mu_.compare_exchange_strong(
1942
- v,
1943
- (waitp->how->fast_or |
1944
- (v & ClearDesignatedWakerMask(flags & kMuHasBlocked))) +
1945
- waitp->how->fast_add,
1946
- std::memory_order_acquire, std::memory_order_relaxed)) {
1947
- if (waitp->cond == nullptr ||
1948
- EvalConditionAnnotated(waitp->cond, this, true, false,
1949
- waitp->how == kShared)) {
1950
- break; // we timed out, or condition true, so return
1951
- }
1952
- this->UnlockSlow(waitp); // got lock but condition false
1953
- this->Block(waitp->thread);
1954
- flags |= kMuHasBlocked;
1955
- c = 0;
1956
- }
1957
- } else { // need to access waiter list
1958
- bool dowait = false;
1959
- if ((v & (kMuSpin|kMuWait)) == 0) { // no waiters
1960
- // This thread tries to become the one and only waiter.
1961
- PerThreadSynch *new_h = Enqueue(nullptr, waitp, v, flags);
1962
- intptr_t nv =
1963
- (v & ClearDesignatedWakerMask(flags & kMuHasBlocked) & kMuLow) |
1964
- kMuWait;
1965
- ABSL_RAW_CHECK(new_h != nullptr, "Enqueue to empty list failed");
1966
- if (waitp->how == kExclusive && (v & kMuReader) != 0) {
1967
- nv |= kMuWrWait;
1968
- }
1969
- if (mu_.compare_exchange_strong(
1970
- v, reinterpret_cast<intptr_t>(new_h) | nv,
1971
- std::memory_order_release, std::memory_order_relaxed)) {
1972
- dowait = true;
1973
- } else { // attempted Enqueue() failed
1974
- // zero out the waitp field set by Enqueue()
1975
- waitp->thread->waitp = nullptr;
1976
- }
1977
- } else if ((v & waitp->how->slow_inc_need_zero &
1978
- IgnoreWaitingWritersMask(flags & kMuHasBlocked)) == 0) {
1979
- // This is a reader that needs to increment the reader count,
1980
- // but the count is currently held in the last waiter.
1981
- if (mu_.compare_exchange_strong(
1982
- v,
1983
- (v & ClearDesignatedWakerMask(flags & kMuHasBlocked)) |
1984
- kMuSpin | kMuReader,
1985
- std::memory_order_acquire, std::memory_order_relaxed)) {
1986
- PerThreadSynch *h = GetPerThreadSynch(v);
1987
- h->readers += kMuOne; // inc reader count in waiter
1988
- do { // release spinlock
1989
- v = mu_.load(std::memory_order_relaxed);
1990
- } while (!mu_.compare_exchange_weak(v, (v & ~kMuSpin) | kMuReader,
1991
- std::memory_order_release,
1992
- std::memory_order_relaxed));
1993
- if (waitp->cond == nullptr ||
1994
- EvalConditionAnnotated(waitp->cond, this, true, false,
1995
- waitp->how == kShared)) {
1996
- break; // we timed out, or condition true, so return
1997
- }
1998
- this->UnlockSlow(waitp); // got lock but condition false
1999
- this->Block(waitp->thread);
2000
- flags |= kMuHasBlocked;
2001
- c = 0;
2002
- }
2003
- } else if ((v & kMuSpin) == 0 && // attempt to queue ourselves
2004
- mu_.compare_exchange_strong(
2005
- v,
2006
- (v & ClearDesignatedWakerMask(flags & kMuHasBlocked)) |
2007
- kMuSpin | kMuWait,
2008
- std::memory_order_acquire, std::memory_order_relaxed)) {
2009
- PerThreadSynch *h = GetPerThreadSynch(v);
2010
- PerThreadSynch *new_h = Enqueue(h, waitp, v, flags);
2011
- intptr_t wr_wait = 0;
2012
- ABSL_RAW_CHECK(new_h != nullptr, "Enqueue to list failed");
2013
- if (waitp->how == kExclusive && (v & kMuReader) != 0) {
2014
- wr_wait = kMuWrWait; // give priority to a waiting writer
2015
- }
2016
- do { // release spinlock
2017
- v = mu_.load(std::memory_order_relaxed);
2018
- } while (!mu_.compare_exchange_weak(
2019
- v, (v & (kMuLow & ~kMuSpin)) | kMuWait | wr_wait |
2020
- reinterpret_cast<intptr_t>(new_h),
2021
- std::memory_order_release, std::memory_order_relaxed));
2022
- dowait = true;
2023
- }
2024
- if (dowait) {
2025
- this->Block(waitp->thread); // wait until removed from list or timeout
2026
- flags |= kMuHasBlocked;
2027
- c = 0;
2028
- }
2029
- }
2030
- ABSL_RAW_CHECK(
2031
- waitp->thread->waitp == nullptr || waitp->thread->suppress_fatal_errors,
2032
- "detected illegal recursion into Mutex code");
2033
- // delay, then try again
2034
- c = synchronization_internal::MutexDelay(c, GENTLE);
2035
- }
2036
- ABSL_RAW_CHECK(
2037
- waitp->thread->waitp == nullptr || waitp->thread->suppress_fatal_errors,
2038
- "detected illegal recursion into Mutex code");
2039
- if ((v & kMuEvent) != 0) {
2040
- PostSynchEvent(this,
2041
- waitp->how == kExclusive? SYNCH_EV_LOCK_RETURNING :
2042
- SYNCH_EV_READERLOCK_RETURNING);
2043
- }
2044
- }
2045
-
2046
- // Unlock this mutex, which is held by the current thread.
2047
- // If waitp is non-zero, it must be the wait parameters for the current thread
2048
- // which holds the lock but is not runnable because its condition is false
2049
- // or it is in the process of blocking on a condition variable; it must requeue
2050
- // itself on the mutex/condvar to wait for its condition to become true.
2051
- ABSL_ATTRIBUTE_NOINLINE void Mutex::UnlockSlow(SynchWaitParams *waitp) {
2052
- SchedulingGuard::ScopedDisable disable_rescheduling;
2053
- intptr_t v = mu_.load(std::memory_order_relaxed);
2054
- this->AssertReaderHeld();
2055
- CheckForMutexCorruption(v, "Unlock");
2056
- if ((v & kMuEvent) != 0) {
2057
- PostSynchEvent(this,
2058
- (v & kMuWriter) != 0? SYNCH_EV_UNLOCK: SYNCH_EV_READERUNLOCK);
2059
- }
2060
- int c = 0;
2061
- // the waiter under consideration to wake, or zero
2062
- PerThreadSynch *w = nullptr;
2063
- // the predecessor to w or zero
2064
- PerThreadSynch *pw = nullptr;
2065
- // head of the list searched previously, or zero
2066
- PerThreadSynch *old_h = nullptr;
2067
- // a condition that's known to be false.
2068
- const Condition *known_false = nullptr;
2069
- PerThreadSynch *wake_list = kPerThreadSynchNull; // list of threads to wake
2070
- intptr_t wr_wait = 0; // set to kMuWrWait if we wake a reader and a
2071
- // later writer could have acquired the lock
2072
- // (starvation avoidance)
2073
- ABSL_RAW_CHECK(waitp == nullptr || waitp->thread->waitp == nullptr ||
2074
- waitp->thread->suppress_fatal_errors,
2075
- "detected illegal recursion into Mutex code");
2076
- // This loop finds threads wake_list to wakeup if any, and removes them from
2077
- // the list of waiters. In addition, it places waitp.thread on the queue of
2078
- // waiters if waitp is non-zero.
2079
- for (;;) {
2080
- v = mu_.load(std::memory_order_relaxed);
2081
- if ((v & kMuWriter) != 0 && (v & (kMuWait | kMuDesig)) != kMuWait &&
2082
- waitp == nullptr) {
2083
- // fast writer release (writer with no waiters or with designated waker)
2084
- if (mu_.compare_exchange_strong(v, v & ~(kMuWrWait | kMuWriter),
2085
- std::memory_order_release,
2086
- std::memory_order_relaxed)) {
2087
- return;
2088
- }
2089
- } else if ((v & (kMuReader | kMuWait)) == kMuReader && waitp == nullptr) {
2090
- // fast reader release (reader with no waiters)
2091
- intptr_t clear = ExactlyOneReader(v) ? kMuReader | kMuOne : kMuOne;
2092
- if (mu_.compare_exchange_strong(v, v - clear,
2093
- std::memory_order_release,
2094
- std::memory_order_relaxed)) {
2095
- return;
2096
- }
2097
- } else if ((v & kMuSpin) == 0 && // attempt to get spinlock
2098
- mu_.compare_exchange_strong(v, v | kMuSpin,
2099
- std::memory_order_acquire,
2100
- std::memory_order_relaxed)) {
2101
- if ((v & kMuWait) == 0) { // no one to wake
2102
- intptr_t nv;
2103
- bool do_enqueue = true; // always Enqueue() the first time
2104
- ABSL_RAW_CHECK(waitp != nullptr,
2105
- "UnlockSlow is confused"); // about to sleep
2106
- do { // must loop to release spinlock as reader count may change
2107
- v = mu_.load(std::memory_order_relaxed);
2108
- // decrement reader count if there are readers
2109
- intptr_t new_readers = (v >= kMuOne)? v - kMuOne : v;
2110
- PerThreadSynch *new_h = nullptr;
2111
- if (do_enqueue) {
2112
- // If we are enqueuing on a CondVar (waitp->cv_word != nullptr) then
2113
- // we must not retry here. The initial attempt will always have
2114
- // succeeded, further attempts would enqueue us against *this due to
2115
- // Fer() handling.
2116
- do_enqueue = (waitp->cv_word == nullptr);
2117
- new_h = Enqueue(nullptr, waitp, new_readers, kMuIsCond);
2118
- }
2119
- intptr_t clear = kMuWrWait | kMuWriter; // by default clear write bit
2120
- if ((v & kMuWriter) == 0 && ExactlyOneReader(v)) { // last reader
2121
- clear = kMuWrWait | kMuReader; // clear read bit
2122
- }
2123
- nv = (v & kMuLow & ~clear & ~kMuSpin);
2124
- if (new_h != nullptr) {
2125
- nv |= kMuWait | reinterpret_cast<intptr_t>(new_h);
2126
- } else { // new_h could be nullptr if we queued ourselves on a
2127
- // CondVar
2128
- // In that case, we must place the reader count back in the mutex
2129
- // word, as Enqueue() did not store it in the new waiter.
2130
- nv |= new_readers & kMuHigh;
2131
- }
2132
- // release spinlock & our lock; retry if reader-count changed
2133
- // (writer count cannot change since we hold lock)
2134
- } while (!mu_.compare_exchange_weak(v, nv,
2135
- std::memory_order_release,
2136
- std::memory_order_relaxed));
2137
- break;
2138
- }
2139
-
2140
- // There are waiters.
2141
- // Set h to the head of the circular waiter list.
2142
- PerThreadSynch *h = GetPerThreadSynch(v);
2143
- if ((v & kMuReader) != 0 && (h->readers & kMuHigh) > kMuOne) {
2144
- // a reader but not the last
2145
- h->readers -= kMuOne; // release our lock
2146
- intptr_t nv = v; // normally just release spinlock
2147
- if (waitp != nullptr) { // but waitp!=nullptr => must queue ourselves
2148
- PerThreadSynch *new_h = Enqueue(h, waitp, v, kMuIsCond);
2149
- ABSL_RAW_CHECK(new_h != nullptr,
2150
- "waiters disappeared during Enqueue()!");
2151
- nv &= kMuLow;
2152
- nv |= kMuWait | reinterpret_cast<intptr_t>(new_h);
2153
- }
2154
- mu_.store(nv, std::memory_order_release); // release spinlock
2155
- // can release with a store because there were waiters
2156
- break;
2157
- }
2158
-
2159
- // Either we didn't search before, or we marked the queue
2160
- // as "maybe_unlocking" and no one else should have changed it.
2161
- ABSL_RAW_CHECK(old_h == nullptr || h->maybe_unlocking,
2162
- "Mutex queue changed beneath us");
2163
-
2164
- // The lock is becoming free, and there's a waiter
2165
- if (old_h != nullptr &&
2166
- !old_h->may_skip) { // we used old_h as a terminator
2167
- old_h->may_skip = true; // allow old_h to skip once more
2168
- ABSL_RAW_CHECK(old_h->skip == nullptr, "illegal skip from head");
2169
- if (h != old_h && MuEquivalentWaiter(old_h, old_h->next)) {
2170
- old_h->skip = old_h->next; // old_h not head & can skip to successor
2171
- }
2172
- }
2173
- if (h->next->waitp->how == kExclusive &&
2174
- Condition::GuaranteedEqual(h->next->waitp->cond, nullptr)) {
2175
- // easy case: writer with no condition; no need to search
2176
- pw = h; // wake w, the successor of h (=pw)
2177
- w = h->next;
2178
- w->wake = true;
2179
- // We are waking up a writer. This writer may be racing against
2180
- // an already awake reader for the lock. We want the
2181
- // writer to usually win this race,
2182
- // because if it doesn't, we can potentially keep taking a reader
2183
- // perpetually and writers will starve. Worse than
2184
- // that, this can also starve other readers if kMuWrWait gets set
2185
- // later.
2186
- wr_wait = kMuWrWait;
2187
- } else if (w != nullptr && (w->waitp->how == kExclusive || h == old_h)) {
2188
- // we found a waiter w to wake on a previous iteration and either it's
2189
- // a writer, or we've searched the entire list so we have all the
2190
- // readers.
2191
- if (pw == nullptr) { // if w's predecessor is unknown, it must be h
2192
- pw = h;
2193
- }
2194
- } else {
2195
- // At this point we don't know all the waiters to wake, and the first
2196
- // waiter has a condition or is a reader. We avoid searching over
2197
- // waiters we've searched on previous iterations by starting at
2198
- // old_h if it's set. If old_h==h, there's no one to wakeup at all.
2199
- if (old_h == h) { // we've searched before, and nothing's new
2200
- // so there's no one to wake.
2201
- intptr_t nv = (v & ~(kMuReader|kMuWriter|kMuWrWait));
2202
- h->readers = 0;
2203
- h->maybe_unlocking = false; // finished unlocking
2204
- if (waitp != nullptr) { // we must queue ourselves and sleep
2205
- PerThreadSynch *new_h = Enqueue(h, waitp, v, kMuIsCond);
2206
- nv &= kMuLow;
2207
- if (new_h != nullptr) {
2208
- nv |= kMuWait | reinterpret_cast<intptr_t>(new_h);
2209
- } // else new_h could be nullptr if we queued ourselves on a
2210
- // CondVar
2211
- }
2212
- // release spinlock & lock
2213
- // can release with a store because there were waiters
2214
- mu_.store(nv, std::memory_order_release);
2215
- break;
2216
- }
2217
-
2218
- // set up to walk the list
2219
- PerThreadSynch *w_walk; // current waiter during list walk
2220
- PerThreadSynch *pw_walk; // previous waiter during list walk
2221
- if (old_h != nullptr) { // we've searched up to old_h before
2222
- pw_walk = old_h;
2223
- w_walk = old_h->next;
2224
- } else { // no prior search, start at beginning
2225
- pw_walk =
2226
- nullptr; // h->next's predecessor may change; don't record it
2227
- w_walk = h->next;
2228
- }
2229
-
2230
- h->may_skip = false; // ensure we never skip past h in future searches
2231
- // even if other waiters are queued after it.
2232
- ABSL_RAW_CHECK(h->skip == nullptr, "illegal skip from head");
2233
-
2234
- h->maybe_unlocking = true; // we're about to scan the waiter list
2235
- // without the spinlock held.
2236
- // Enqueue must be conservative about
2237
- // priority queuing.
2238
-
2239
- // We must release the spinlock to evaluate the conditions.
2240
- mu_.store(v, std::memory_order_release); // release just spinlock
2241
- // can release with a store because there were waiters
2242
-
2243
- // h is the last waiter queued, and w_walk the first unsearched waiter.
2244
- // Without the spinlock, the locations mu_ and h->next may now change
2245
- // underneath us, but since we hold the lock itself, the only legal
2246
- // change is to add waiters between h and w_walk. Therefore, it's safe
2247
- // to walk the path from w_walk to h inclusive. (TryRemove() can remove
2248
- // a waiter anywhere, but it acquires both the spinlock and the Mutex)
2249
-
2250
- old_h = h; // remember we searched to here
2251
-
2252
- // Walk the path upto and including h looking for waiters we can wake.
2253
- while (pw_walk != h) {
2254
- w_walk->wake = false;
2255
- if (w_walk->waitp->cond ==
2256
- nullptr || // no condition => vacuously true OR
2257
- (w_walk->waitp->cond != known_false &&
2258
- // this thread's condition is not known false, AND
2259
- // is in fact true
2260
- EvalConditionIgnored(this, w_walk->waitp->cond))) {
2261
- if (w == nullptr) {
2262
- w_walk->wake = true; // can wake this waiter
2263
- w = w_walk;
2264
- pw = pw_walk;
2265
- if (w_walk->waitp->how == kExclusive) {
2266
- wr_wait = kMuWrWait;
2267
- break; // bail if waking this writer
2268
- }
2269
- } else if (w_walk->waitp->how == kShared) { // wake if a reader
2270
- w_walk->wake = true;
2271
- } else { // writer with true condition
2272
- wr_wait = kMuWrWait;
2273
- }
2274
- } else { // can't wake; condition false
2275
- known_false = w_walk->waitp->cond; // remember last false condition
2276
- }
2277
- if (w_walk->wake) { // we're waking reader w_walk
2278
- pw_walk = w_walk; // don't skip similar waiters
2279
- } else { // not waking; skip as much as possible
2280
- pw_walk = Skip(w_walk);
2281
- }
2282
- // If pw_walk == h, then load of pw_walk->next can race with
2283
- // concurrent write in Enqueue(). However, at the same time
2284
- // we do not need to do the load, because we will bail out
2285
- // from the loop anyway.
2286
- if (pw_walk != h) {
2287
- w_walk = pw_walk->next;
2288
- }
2289
- }
2290
-
2291
- continue; // restart for(;;)-loop to wakeup w or to find more waiters
2292
- }
2293
- ABSL_RAW_CHECK(pw->next == w, "pw not w's predecessor");
2294
- // The first (and perhaps only) waiter we've chosen to wake is w, whose
2295
- // predecessor is pw. If w is a reader, we must wake all the other
2296
- // waiters with wake==true as well. We may also need to queue
2297
- // ourselves if waitp != null. The spinlock and the lock are still
2298
- // held.
2299
-
2300
- // This traverses the list in [ pw->next, h ], where h is the head,
2301
- // removing all elements with wake==true and placing them in the
2302
- // singly-linked list wake_list. Returns the new head.
2303
- h = DequeueAllWakeable(h, pw, &wake_list);
2304
-
2305
- intptr_t nv = (v & kMuEvent) | kMuDesig;
2306
- // assume no waiters left,
2307
- // set kMuDesig for INV1a
2308
-
2309
- if (waitp != nullptr) { // we must queue ourselves and sleep
2310
- h = Enqueue(h, waitp, v, kMuIsCond);
2311
- // h is new last waiter; could be null if we queued ourselves on a
2312
- // CondVar
2313
- }
2314
-
2315
- ABSL_RAW_CHECK(wake_list != kPerThreadSynchNull,
2316
- "unexpected empty wake list");
2317
-
2318
- if (h != nullptr) { // there are waiters left
2319
- h->readers = 0;
2320
- h->maybe_unlocking = false; // finished unlocking
2321
- nv |= wr_wait | kMuWait | reinterpret_cast<intptr_t>(h);
2322
- }
2323
-
2324
- // release both spinlock & lock
2325
- // can release with a store because there were waiters
2326
- mu_.store(nv, std::memory_order_release);
2327
- break; // out of for(;;)-loop
2328
- }
2329
- // aggressive here; no one can proceed till we do
2330
- c = synchronization_internal::MutexDelay(c, AGGRESSIVE);
2331
- } // end of for(;;)-loop
2332
-
2333
- if (wake_list != kPerThreadSynchNull) {
2334
- int64_t wait_cycles = 0;
2335
- int64_t now = base_internal::CycleClock::Now();
2336
- do {
2337
- // Sample lock contention events only if the waiter was trying to acquire
2338
- // the lock, not waiting on a condition variable or Condition.
2339
- if (!wake_list->cond_waiter) {
2340
- wait_cycles += (now - wake_list->waitp->contention_start_cycles);
2341
- wake_list->waitp->contention_start_cycles = now;
2342
- }
2343
- wake_list = Wakeup(wake_list); // wake waiters
2344
- } while (wake_list != kPerThreadSynchNull);
2345
- if (wait_cycles > 0) {
2346
- mutex_tracer("slow release", this, wait_cycles);
2347
- ABSL_TSAN_MUTEX_PRE_DIVERT(this, 0);
2348
- submit_profile_data(wait_cycles);
2349
- ABSL_TSAN_MUTEX_POST_DIVERT(this, 0);
2350
- }
2351
- }
2352
- }
2353
-
2354
- // Used by CondVar implementation to reacquire mutex after waking from
2355
- // condition variable. This routine is used instead of Lock() because the
2356
- // waiting thread may have been moved from the condition variable queue to the
2357
- // mutex queue without a wakeup, by Trans(). In that case, when the thread is
2358
- // finally woken, the woken thread will believe it has been woken from the
2359
- // condition variable (i.e. its PC will be in when in the CondVar code), when
2360
- // in fact it has just been woken from the mutex. Thus, it must enter the slow
2361
- // path of the mutex in the same state as if it had just woken from the mutex.
2362
- // That is, it must ensure to clear kMuDesig (INV1b).
2363
- void Mutex::Trans(MuHow how) {
2364
- this->LockSlow(how, nullptr, kMuHasBlocked | kMuIsCond);
2365
- }
2366
-
2367
- // Used by CondVar implementation to effectively wake thread w from the
2368
- // condition variable. If this mutex is free, we simply wake the thread.
2369
- // It will later acquire the mutex with high probability. Otherwise, we
2370
- // enqueue thread w on this mutex.
2371
- void Mutex::Fer(PerThreadSynch *w) {
2372
- SchedulingGuard::ScopedDisable disable_rescheduling;
2373
- int c = 0;
2374
- ABSL_RAW_CHECK(w->waitp->cond == nullptr,
2375
- "Mutex::Fer while waiting on Condition");
2376
- ABSL_RAW_CHECK(!w->waitp->timeout.has_timeout(),
2377
- "Mutex::Fer while in timed wait");
2378
- ABSL_RAW_CHECK(w->waitp->cv_word == nullptr,
2379
- "Mutex::Fer with pending CondVar queueing");
2380
- for (;;) {
2381
- intptr_t v = mu_.load(std::memory_order_relaxed);
2382
- // Note: must not queue if the mutex is unlocked (nobody will wake it).
2383
- // For example, we can have only kMuWait (conditional) or maybe
2384
- // kMuWait|kMuWrWait.
2385
- // conflicting != 0 implies that the waking thread cannot currently take
2386
- // the mutex, which in turn implies that someone else has it and can wake
2387
- // us if we queue.
2388
- const intptr_t conflicting =
2389
- kMuWriter | (w->waitp->how == kShared ? 0 : kMuReader);
2390
- if ((v & conflicting) == 0) {
2391
- w->next = nullptr;
2392
- w->state.store(PerThreadSynch::kAvailable, std::memory_order_release);
2393
- IncrementSynchSem(this, w);
2394
- return;
2395
- } else {
2396
- if ((v & (kMuSpin|kMuWait)) == 0) { // no waiters
2397
- // This thread tries to become the one and only waiter.
2398
- PerThreadSynch *new_h = Enqueue(nullptr, w->waitp, v, kMuIsCond);
2399
- ABSL_RAW_CHECK(new_h != nullptr,
2400
- "Enqueue failed"); // we must queue ourselves
2401
- if (mu_.compare_exchange_strong(
2402
- v, reinterpret_cast<intptr_t>(new_h) | (v & kMuLow) | kMuWait,
2403
- std::memory_order_release, std::memory_order_relaxed)) {
2404
- return;
2405
- }
2406
- } else if ((v & kMuSpin) == 0 &&
2407
- mu_.compare_exchange_strong(v, v | kMuSpin | kMuWait)) {
2408
- PerThreadSynch *h = GetPerThreadSynch(v);
2409
- PerThreadSynch *new_h = Enqueue(h, w->waitp, v, kMuIsCond);
2410
- ABSL_RAW_CHECK(new_h != nullptr,
2411
- "Enqueue failed"); // we must queue ourselves
2412
- do {
2413
- v = mu_.load(std::memory_order_relaxed);
2414
- } while (!mu_.compare_exchange_weak(
2415
- v,
2416
- (v & kMuLow & ~kMuSpin) | kMuWait |
2417
- reinterpret_cast<intptr_t>(new_h),
2418
- std::memory_order_release, std::memory_order_relaxed));
2419
- return;
2420
- }
2421
- }
2422
- c = synchronization_internal::MutexDelay(c, GENTLE);
2423
- }
2424
- }
2425
-
2426
- void Mutex::AssertHeld() const {
2427
- if ((mu_.load(std::memory_order_relaxed) & kMuWriter) == 0) {
2428
- SynchEvent *e = GetSynchEvent(this);
2429
- ABSL_RAW_LOG(FATAL, "thread should hold write lock on Mutex %p %s",
2430
- static_cast<const void *>(this),
2431
- (e == nullptr ? "" : e->name));
2432
- }
2433
- }
2434
-
2435
- void Mutex::AssertReaderHeld() const {
2436
- if ((mu_.load(std::memory_order_relaxed) & (kMuReader | kMuWriter)) == 0) {
2437
- SynchEvent *e = GetSynchEvent(this);
2438
- ABSL_RAW_LOG(
2439
- FATAL, "thread should hold at least a read lock on Mutex %p %s",
2440
- static_cast<const void *>(this), (e == nullptr ? "" : e->name));
2441
- }
2442
- }
2443
-
2444
- // -------------------------------- condition variables
2445
- static const intptr_t kCvSpin = 0x0001L; // spinlock protects waiter list
2446
- static const intptr_t kCvEvent = 0x0002L; // record events
2447
-
2448
- static const intptr_t kCvLow = 0x0003L; // low order bits of CV
2449
-
2450
- // Hack to make constant values available to gdb pretty printer
2451
- enum { kGdbCvSpin = kCvSpin, kGdbCvEvent = kCvEvent, kGdbCvLow = kCvLow, };
2452
-
2453
- static_assert(PerThreadSynch::kAlignment > kCvLow,
2454
- "PerThreadSynch::kAlignment must be greater than kCvLow");
2455
-
2456
- void CondVar::EnableDebugLog(const char *name) {
2457
- SynchEvent *e = EnsureSynchEvent(&this->cv_, name, kCvEvent, kCvSpin);
2458
- e->log = true;
2459
- UnrefSynchEvent(e);
2460
- }
2461
-
2462
- CondVar::~CondVar() {
2463
- if ((cv_.load(std::memory_order_relaxed) & kCvEvent) != 0) {
2464
- ForgetSynchEvent(&this->cv_, kCvEvent, kCvSpin);
2465
- }
2466
- }
2467
-
2468
-
2469
- // Remove thread s from the list of waiters on this condition variable.
2470
- void CondVar::Remove(PerThreadSynch *s) {
2471
- SchedulingGuard::ScopedDisable disable_rescheduling;
2472
- intptr_t v;
2473
- int c = 0;
2474
- for (v = cv_.load(std::memory_order_relaxed);;
2475
- v = cv_.load(std::memory_order_relaxed)) {
2476
- if ((v & kCvSpin) == 0 && // attempt to acquire spinlock
2477
- cv_.compare_exchange_strong(v, v | kCvSpin,
2478
- std::memory_order_acquire,
2479
- std::memory_order_relaxed)) {
2480
- PerThreadSynch *h = reinterpret_cast<PerThreadSynch *>(v & ~kCvLow);
2481
- if (h != nullptr) {
2482
- PerThreadSynch *w = h;
2483
- while (w->next != s && w->next != h) { // search for thread
2484
- w = w->next;
2485
- }
2486
- if (w->next == s) { // found thread; remove it
2487
- w->next = s->next;
2488
- if (h == s) {
2489
- h = (w == s) ? nullptr : w;
2490
- }
2491
- s->next = nullptr;
2492
- s->state.store(PerThreadSynch::kAvailable, std::memory_order_release);
2493
- }
2494
- }
2495
- // release spinlock
2496
- cv_.store((v & kCvEvent) | reinterpret_cast<intptr_t>(h),
2497
- std::memory_order_release);
2498
- return;
2499
- } else {
2500
- // try again after a delay
2501
- c = synchronization_internal::MutexDelay(c, GENTLE);
2502
- }
2503
- }
2504
- }
2505
-
2506
- // Queue thread waitp->thread on condition variable word cv_word using
2507
- // wait parameters waitp.
2508
- // We split this into a separate routine, rather than simply doing it as part
2509
- // of WaitCommon(). If we were to queue ourselves on the condition variable
2510
- // before calling Mutex::UnlockSlow(), the Mutex code might be re-entered (via
2511
- // the logging code, or via a Condition function) and might potentially attempt
2512
- // to block this thread. That would be a problem if the thread were already on
2513
- // a condition variable waiter queue. Thus, we use the waitp->cv_word to tell
2514
- // the unlock code to call CondVarEnqueue() to queue the thread on the condition
2515
- // variable queue just before the mutex is to be unlocked, and (most
2516
- // importantly) after any call to an external routine that might re-enter the
2517
- // mutex code.
2518
- static void CondVarEnqueue(SynchWaitParams *waitp) {
2519
- // This thread might be transferred to the Mutex queue by Fer() when
2520
- // we are woken. To make sure that is what happens, Enqueue() doesn't
2521
- // call CondVarEnqueue() again but instead uses its normal code. We
2522
- // must do this before we queue ourselves so that cv_word will be null
2523
- // when seen by the dequeuer, who may wish immediately to requeue
2524
- // this thread on another queue.
2525
- std::atomic<intptr_t> *cv_word = waitp->cv_word;
2526
- waitp->cv_word = nullptr;
2527
-
2528
- intptr_t v = cv_word->load(std::memory_order_relaxed);
2529
- int c = 0;
2530
- while ((v & kCvSpin) != 0 || // acquire spinlock
2531
- !cv_word->compare_exchange_weak(v, v | kCvSpin,
2532
- std::memory_order_acquire,
2533
- std::memory_order_relaxed)) {
2534
- c = synchronization_internal::MutexDelay(c, GENTLE);
2535
- v = cv_word->load(std::memory_order_relaxed);
2536
- }
2537
- ABSL_RAW_CHECK(waitp->thread->waitp == nullptr, "waiting when shouldn't be");
2538
- waitp->thread->waitp = waitp; // prepare ourselves for waiting
2539
- PerThreadSynch *h = reinterpret_cast<PerThreadSynch *>(v & ~kCvLow);
2540
- if (h == nullptr) { // add this thread to waiter list
2541
- waitp->thread->next = waitp->thread;
2542
- } else {
2543
- waitp->thread->next = h->next;
2544
- h->next = waitp->thread;
2545
- }
2546
- waitp->thread->state.store(PerThreadSynch::kQueued,
2547
- std::memory_order_relaxed);
2548
- cv_word->store((v & kCvEvent) | reinterpret_cast<intptr_t>(waitp->thread),
2549
- std::memory_order_release);
2550
- }
2551
-
2552
- bool CondVar::WaitCommon(Mutex *mutex, KernelTimeout t) {
2553
- bool rc = false; // return value; true iff we timed-out
2554
-
2555
- intptr_t mutex_v = mutex->mu_.load(std::memory_order_relaxed);
2556
- Mutex::MuHow mutex_how = ((mutex_v & kMuWriter) != 0) ? kExclusive : kShared;
2557
- ABSL_TSAN_MUTEX_PRE_UNLOCK(mutex, TsanFlags(mutex_how));
2558
-
2559
- // maybe trace this call
2560
- intptr_t v = cv_.load(std::memory_order_relaxed);
2561
- cond_var_tracer("Wait", this);
2562
- if ((v & kCvEvent) != 0) {
2563
- PostSynchEvent(this, SYNCH_EV_WAIT);
2564
- }
2565
-
2566
- // Release mu and wait on condition variable.
2567
- SynchWaitParams waitp(mutex_how, nullptr, t, mutex,
2568
- Synch_GetPerThreadAnnotated(mutex), &cv_);
2569
- // UnlockSlow() will call CondVarEnqueue() just before releasing the
2570
- // Mutex, thus queuing this thread on the condition variable. See
2571
- // CondVarEnqueue() for the reasons.
2572
- mutex->UnlockSlow(&waitp);
2573
-
2574
- // wait for signal
2575
- while (waitp.thread->state.load(std::memory_order_acquire) ==
2576
- PerThreadSynch::kQueued) {
2577
- if (!Mutex::DecrementSynchSem(mutex, waitp.thread, t)) {
2578
- // DecrementSynchSem returned due to timeout.
2579
- // Now we will either (1) remove ourselves from the wait list in Remove
2580
- // below, in which case Remove will set thread.state = kAvailable and
2581
- // we will not call DecrementSynchSem again; or (2) Signal/SignalAll
2582
- // has removed us concurrently and is calling Wakeup, which will set
2583
- // thread.state = kAvailable and post to the semaphore.
2584
- // It's important to reset the timeout for the case (2) because otherwise
2585
- // we can live-lock in this loop since DecrementSynchSem will always
2586
- // return immediately due to timeout, but Signal/SignalAll is not
2587
- // necessary set thread.state = kAvailable yet (and is not scheduled
2588
- // due to thread priorities or other scheduler artifacts).
2589
- // Note this could also be resolved if Signal/SignalAll would set
2590
- // thread.state = kAvailable while holding the wait list spin lock.
2591
- // But this can't be easily done for SignalAll since it grabs the whole
2592
- // wait list with a single compare-exchange and does not really grab
2593
- // the spin lock.
2594
- t = KernelTimeout::Never();
2595
- this->Remove(waitp.thread);
2596
- rc = true;
2597
- }
2598
- }
2599
-
2600
- ABSL_RAW_CHECK(waitp.thread->waitp != nullptr, "not waiting when should be");
2601
- waitp.thread->waitp = nullptr; // cleanup
2602
-
2603
- // maybe trace this call
2604
- cond_var_tracer("Unwait", this);
2605
- if ((v & kCvEvent) != 0) {
2606
- PostSynchEvent(this, SYNCH_EV_WAIT_RETURNING);
2607
- }
2608
-
2609
- // From synchronization point of view Wait is unlock of the mutex followed
2610
- // by lock of the mutex. We've annotated start of unlock in the beginning
2611
- // of the function. Now, finish unlock and annotate lock of the mutex.
2612
- // (Trans is effectively lock).
2613
- ABSL_TSAN_MUTEX_POST_UNLOCK(mutex, TsanFlags(mutex_how));
2614
- ABSL_TSAN_MUTEX_PRE_LOCK(mutex, TsanFlags(mutex_how));
2615
- mutex->Trans(mutex_how); // Reacquire mutex
2616
- ABSL_TSAN_MUTEX_POST_LOCK(mutex, TsanFlags(mutex_how), 0);
2617
- return rc;
2618
- }
2619
-
2620
- bool CondVar::WaitWithTimeout(Mutex *mu, absl::Duration timeout) {
2621
- return WaitWithDeadline(mu, DeadlineFromTimeout(timeout));
2622
- }
2623
-
2624
- bool CondVar::WaitWithDeadline(Mutex *mu, absl::Time deadline) {
2625
- return WaitCommon(mu, KernelTimeout(deadline));
2626
- }
2627
-
2628
- void CondVar::Wait(Mutex *mu) {
2629
- WaitCommon(mu, KernelTimeout::Never());
2630
- }
2631
-
2632
- // Wake thread w
2633
- // If it was a timed wait, w will be waiting on w->cv
2634
- // Otherwise, if it was not a Mutex mutex, w will be waiting on w->sem
2635
- // Otherwise, w is transferred to the Mutex mutex via Mutex::Fer().
2636
- void CondVar::Wakeup(PerThreadSynch *w) {
2637
- if (w->waitp->timeout.has_timeout() || w->waitp->cvmu == nullptr) {
2638
- // The waiting thread only needs to observe "w->state == kAvailable" to be
2639
- // released, we must cache "cvmu" before clearing "next".
2640
- Mutex *mu = w->waitp->cvmu;
2641
- w->next = nullptr;
2642
- w->state.store(PerThreadSynch::kAvailable, std::memory_order_release);
2643
- Mutex::IncrementSynchSem(mu, w);
2644
- } else {
2645
- w->waitp->cvmu->Fer(w);
2646
- }
2647
- }
2648
-
2649
- void CondVar::Signal() {
2650
- SchedulingGuard::ScopedDisable disable_rescheduling;
2651
- ABSL_TSAN_MUTEX_PRE_SIGNAL(nullptr, 0);
2652
- intptr_t v;
2653
- int c = 0;
2654
- for (v = cv_.load(std::memory_order_relaxed); v != 0;
2655
- v = cv_.load(std::memory_order_relaxed)) {
2656
- if ((v & kCvSpin) == 0 && // attempt to acquire spinlock
2657
- cv_.compare_exchange_strong(v, v | kCvSpin,
2658
- std::memory_order_acquire,
2659
- std::memory_order_relaxed)) {
2660
- PerThreadSynch *h = reinterpret_cast<PerThreadSynch *>(v & ~kCvLow);
2661
- PerThreadSynch *w = nullptr;
2662
- if (h != nullptr) { // remove first waiter
2663
- w = h->next;
2664
- if (w == h) {
2665
- h = nullptr;
2666
- } else {
2667
- h->next = w->next;
2668
- }
2669
- }
2670
- // release spinlock
2671
- cv_.store((v & kCvEvent) | reinterpret_cast<intptr_t>(h),
2672
- std::memory_order_release);
2673
- if (w != nullptr) {
2674
- CondVar::Wakeup(w); // wake waiter, if there was one
2675
- cond_var_tracer("Signal wakeup", this);
2676
- }
2677
- if ((v & kCvEvent) != 0) {
2678
- PostSynchEvent(this, SYNCH_EV_SIGNAL);
2679
- }
2680
- ABSL_TSAN_MUTEX_POST_SIGNAL(nullptr, 0);
2681
- return;
2682
- } else {
2683
- c = synchronization_internal::MutexDelay(c, GENTLE);
2684
- }
2685
- }
2686
- ABSL_TSAN_MUTEX_POST_SIGNAL(nullptr, 0);
2687
- }
2688
-
2689
- void CondVar::SignalAll () {
2690
- ABSL_TSAN_MUTEX_PRE_SIGNAL(nullptr, 0);
2691
- intptr_t v;
2692
- int c = 0;
2693
- for (v = cv_.load(std::memory_order_relaxed); v != 0;
2694
- v = cv_.load(std::memory_order_relaxed)) {
2695
- // empty the list if spinlock free
2696
- // We do this by simply setting the list to empty using
2697
- // compare and swap. We then have the entire list in our hands,
2698
- // which cannot be changing since we grabbed it while no one
2699
- // held the lock.
2700
- if ((v & kCvSpin) == 0 &&
2701
- cv_.compare_exchange_strong(v, v & kCvEvent, std::memory_order_acquire,
2702
- std::memory_order_relaxed)) {
2703
- PerThreadSynch *h = reinterpret_cast<PerThreadSynch *>(v & ~kCvLow);
2704
- if (h != nullptr) {
2705
- PerThreadSynch *w;
2706
- PerThreadSynch *n = h->next;
2707
- do { // for every thread, wake it up
2708
- w = n;
2709
- n = n->next;
2710
- CondVar::Wakeup(w);
2711
- } while (w != h);
2712
- cond_var_tracer("SignalAll wakeup", this);
2713
- }
2714
- if ((v & kCvEvent) != 0) {
2715
- PostSynchEvent(this, SYNCH_EV_SIGNALALL);
2716
- }
2717
- ABSL_TSAN_MUTEX_POST_SIGNAL(nullptr, 0);
2718
- return;
2719
- } else {
2720
- // try again after a delay
2721
- c = synchronization_internal::MutexDelay(c, GENTLE);
2722
- }
2723
- }
2724
- ABSL_TSAN_MUTEX_POST_SIGNAL(nullptr, 0);
2725
- }
2726
-
2727
- void ReleasableMutexLock::Release() {
2728
- ABSL_RAW_CHECK(this->mu_ != nullptr,
2729
- "ReleasableMutexLock::Release may only be called once");
2730
- this->mu_->Unlock();
2731
- this->mu_ = nullptr;
2732
- }
2733
-
2734
- #ifdef ABSL_HAVE_THREAD_SANITIZER
2735
- extern "C" void __tsan_read1(void *addr);
2736
- #else
2737
- #define __tsan_read1(addr) // do nothing if TSan not enabled
2738
- #endif
2739
-
2740
- // A function that just returns its argument, dereferenced
2741
- static bool Dereference(void *arg) {
2742
- // ThreadSanitizer does not instrument this file for memory accesses.
2743
- // This function dereferences a user variable that can participate
2744
- // in a data race, so we need to manually tell TSan about this memory access.
2745
- __tsan_read1(arg);
2746
- return *(static_cast<bool *>(arg));
2747
- }
2748
-
2749
- Condition::Condition() {} // null constructor, used for kTrue only
2750
- const Condition Condition::kTrue;
2751
-
2752
- Condition::Condition(bool (*func)(void *), void *arg)
2753
- : eval_(&CallVoidPtrFunction),
2754
- function_(func),
2755
- method_(nullptr),
2756
- arg_(arg) {}
2757
-
2758
- bool Condition::CallVoidPtrFunction(const Condition *c) {
2759
- return (*c->function_)(c->arg_);
2760
- }
2761
-
2762
- Condition::Condition(const bool *cond)
2763
- : eval_(CallVoidPtrFunction),
2764
- function_(Dereference),
2765
- method_(nullptr),
2766
- // const_cast is safe since Dereference does not modify arg
2767
- arg_(const_cast<bool *>(cond)) {}
2768
-
2769
- bool Condition::Eval() const {
2770
- // eval_ == null for kTrue
2771
- return (this->eval_ == nullptr) || (*this->eval_)(this);
2772
- }
2773
-
2774
- bool Condition::GuaranteedEqual(const Condition *a, const Condition *b) {
2775
- if (a == nullptr) {
2776
- return b == nullptr || b->eval_ == nullptr;
2777
- }
2778
- if (b == nullptr || b->eval_ == nullptr) {
2779
- return a->eval_ == nullptr;
2780
- }
2781
- return a->eval_ == b->eval_ && a->function_ == b->function_ &&
2782
- a->arg_ == b->arg_ && a->method_ == b->method_;
2783
- }
2784
-
2785
- ABSL_NAMESPACE_END
2786
- } // namespace absl