aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--BUILD3
-rw-r--r--build.yaml50
-rw-r--r--gRPC.podspec2
-rw-r--r--src/core/iomgr/block_annotate.h44
-rw-r--r--src/core/iomgr/pollset_multipoller_with_epoll.c5
-rw-r--r--src/core/iomgr/pollset_multipoller_with_poll_posix.c3
-rw-r--r--src/core/iomgr/pollset_posix.c3
-rw-r--r--src/core/iomgr/resolve_address_posix.c6
-rw-r--r--src/core/iomgr/resolve_address_windows.c3
-rw-r--r--tools/doxygen/Doxyfile.core.internal1
-rw-r--r--tools/run_tests/sources_and_headers.json4
-rw-r--r--vsprojects/vcxproj/grpc/grpc.vcxproj1
-rw-r--r--vsprojects/vcxproj/grpc/grpc.vcxproj.filters3
-rw-r--r--vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj1
-rw-r--r--vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters3
15 files changed, 107 insertions, 25 deletions
diff --git a/BUILD b/BUILD
index c1aa80a1dd..69b5c32070 100644
--- a/BUILD
+++ b/BUILD
@@ -179,6 +179,7 @@ cc_library(
"src/core/iomgr/alarm.h",
"src/core/iomgr/alarm_heap.h",
"src/core/iomgr/alarm_internal.h",
+ "src/core/iomgr/block_annotate.h",
"src/core/iomgr/endpoint.h",
"src/core/iomgr/endpoint_pair.h",
"src/core/iomgr/fd_posix.h",
@@ -455,6 +456,7 @@ cc_library(
"src/core/iomgr/alarm.h",
"src/core/iomgr/alarm_heap.h",
"src/core/iomgr/alarm_internal.h",
+ "src/core/iomgr/block_annotate.h",
"src/core/iomgr/endpoint.h",
"src/core/iomgr/endpoint_pair.h",
"src/core/iomgr/fd_posix.h",
@@ -1227,6 +1229,7 @@ objc_library(
"src/core/iomgr/alarm.h",
"src/core/iomgr/alarm_heap.h",
"src/core/iomgr/alarm_internal.h",
+ "src/core/iomgr/block_annotate.h",
"src/core/iomgr/endpoint.h",
"src/core/iomgr/endpoint_pair.h",
"src/core/iomgr/fd_posix.h",
diff --git a/build.yaml b/build.yaml
index 7ab70485c5..4479ca655c 100644
--- a/build.yaml
+++ b/build.yaml
@@ -55,31 +55,31 @@ filegroups:
src/core/client_config/uri_parser.h, src/core/compression/message_compress.h,
src/core/debug/trace.h, src/core/httpcli/format_request.h, src/core/httpcli/httpcli.h,
src/core/httpcli/parser.h, src/core/iomgr/alarm.h, src/core/iomgr/alarm_heap.h,
- src/core/iomgr/alarm_internal.h, src/core/iomgr/endpoint.h, src/core/iomgr/endpoint_pair.h,
- src/core/iomgr/fd_posix.h, src/core/iomgr/iocp_windows.h, src/core/iomgr/iomgr.h,
- src/core/iomgr/iomgr_internal.h, src/core/iomgr/iomgr_posix.h, src/core/iomgr/pollset.h,
- src/core/iomgr/pollset_posix.h, src/core/iomgr/pollset_set.h, src/core/iomgr/pollset_set_posix.h,
- src/core/iomgr/pollset_set_windows.h, src/core/iomgr/pollset_windows.h, src/core/iomgr/resolve_address.h,
- src/core/iomgr/sockaddr.h, src/core/iomgr/sockaddr_posix.h, src/core/iomgr/sockaddr_utils.h,
- src/core/iomgr/sockaddr_win32.h, src/core/iomgr/socket_utils_posix.h, src/core/iomgr/socket_windows.h,
- src/core/iomgr/tcp_client.h, src/core/iomgr/tcp_posix.h, src/core/iomgr/tcp_server.h,
- src/core/iomgr/tcp_windows.h, src/core/iomgr/time_averaged_stats.h, src/core/iomgr/udp_server.h,
- src/core/iomgr/wakeup_fd_pipe.h, src/core/iomgr/wakeup_fd_posix.h, src/core/json/json.h,
- src/core/json/json_common.h, src/core/json/json_reader.h, src/core/json/json_writer.h,
- src/core/profiling/timers.h, src/core/statistics/census_interface.h, src/core/statistics/census_rpc_stats.h,
- src/core/surface/byte_buffer_queue.h, src/core/surface/call.h, src/core/surface/channel.h,
- src/core/surface/completion_queue.h, src/core/surface/event_string.h, src/core/surface/init.h,
- src/core/surface/server.h, src/core/surface/surface_trace.h, src/core/transport/chttp2/alpn.h,
- src/core/transport/chttp2/bin_encoder.h, src/core/transport/chttp2/frame.h, src/core/transport/chttp2/frame_data.h,
- src/core/transport/chttp2/frame_goaway.h, src/core/transport/chttp2/frame_ping.h,
- src/core/transport/chttp2/frame_rst_stream.h, src/core/transport/chttp2/frame_settings.h,
- src/core/transport/chttp2/frame_window_update.h, src/core/transport/chttp2/hpack_parser.h,
- src/core/transport/chttp2/hpack_table.h, src/core/transport/chttp2/http2_errors.h,
- src/core/transport/chttp2/huffsyms.h, src/core/transport/chttp2/incoming_metadata.h,
- src/core/transport/chttp2/internal.h, src/core/transport/chttp2/status_conversion.h,
- src/core/transport/chttp2/stream_encoder.h, src/core/transport/chttp2/stream_map.h,
- src/core/transport/chttp2/timeout_encoding.h, src/core/transport/chttp2/varint.h,
- src/core/transport/chttp2_transport.h, src/core/transport/connectivity_state.h,
+ src/core/iomgr/alarm_internal.h, src/core/iomgr/block_annotate.h, src/core/iomgr/endpoint.h,
+ src/core/iomgr/endpoint_pair.h, src/core/iomgr/fd_posix.h, src/core/iomgr/iocp_windows.h,
+ src/core/iomgr/iomgr.h, src/core/iomgr/iomgr_internal.h, src/core/iomgr/iomgr_posix.h,
+ src/core/iomgr/pollset.h, src/core/iomgr/pollset_posix.h, src/core/iomgr/pollset_set.h,
+ src/core/iomgr/pollset_set_posix.h, src/core/iomgr/pollset_set_windows.h, src/core/iomgr/pollset_windows.h,
+ src/core/iomgr/resolve_address.h, src/core/iomgr/sockaddr.h, src/core/iomgr/sockaddr_posix.h,
+ src/core/iomgr/sockaddr_utils.h, src/core/iomgr/sockaddr_win32.h, src/core/iomgr/socket_utils_posix.h,
+ src/core/iomgr/socket_windows.h, src/core/iomgr/tcp_client.h, src/core/iomgr/tcp_posix.h,
+ src/core/iomgr/tcp_server.h, src/core/iomgr/tcp_windows.h, src/core/iomgr/time_averaged_stats.h,
+ src/core/iomgr/udp_server.h, src/core/iomgr/wakeup_fd_pipe.h, src/core/iomgr/wakeup_fd_posix.h,
+ src/core/json/json.h, src/core/json/json_common.h, src/core/json/json_reader.h,
+ src/core/json/json_writer.h, src/core/profiling/timers.h, src/core/statistics/census_interface.h,
+ src/core/statistics/census_rpc_stats.h, src/core/surface/byte_buffer_queue.h,
+ src/core/surface/call.h, src/core/surface/channel.h, src/core/surface/completion_queue.h,
+ src/core/surface/event_string.h, src/core/surface/init.h, src/core/surface/server.h,
+ src/core/surface/surface_trace.h, src/core/transport/chttp2/alpn.h, src/core/transport/chttp2/bin_encoder.h,
+ src/core/transport/chttp2/frame.h, src/core/transport/chttp2/frame_data.h, src/core/transport/chttp2/frame_goaway.h,
+ src/core/transport/chttp2/frame_ping.h, src/core/transport/chttp2/frame_rst_stream.h,
+ src/core/transport/chttp2/frame_settings.h, src/core/transport/chttp2/frame_window_update.h,
+ src/core/transport/chttp2/hpack_parser.h, src/core/transport/chttp2/hpack_table.h,
+ src/core/transport/chttp2/http2_errors.h, src/core/transport/chttp2/huffsyms.h,
+ src/core/transport/chttp2/incoming_metadata.h, src/core/transport/chttp2/internal.h,
+ src/core/transport/chttp2/status_conversion.h, src/core/transport/chttp2/stream_encoder.h,
+ src/core/transport/chttp2/stream_map.h, src/core/transport/chttp2/timeout_encoding.h,
+ src/core/transport/chttp2/varint.h, src/core/transport/chttp2_transport.h, src/core/transport/connectivity_state.h,
src/core/transport/metadata.h, src/core/transport/stream_op.h, src/core/transport/transport.h,
src/core/transport/transport_impl.h]
src: [src/core/census/grpc_context.c, src/core/census/grpc_filter.c, src/core/channel/channel_args.c,
diff --git a/gRPC.podspec b/gRPC.podspec
index 5a16504787..38d6b2861f 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -181,6 +181,7 @@ Pod::Spec.new do |s|
'src/core/iomgr/alarm.h',
'src/core/iomgr/alarm_heap.h',
'src/core/iomgr/alarm_internal.h',
+ 'src/core/iomgr/block_annotate.h',
'src/core/iomgr/endpoint.h',
'src/core/iomgr/endpoint_pair.h',
'src/core/iomgr/fd_posix.h',
@@ -461,6 +462,7 @@ Pod::Spec.new do |s|
'src/core/iomgr/alarm.h',
'src/core/iomgr/alarm_heap.h',
'src/core/iomgr/alarm_internal.h',
+ 'src/core/iomgr/block_annotate.h',
'src/core/iomgr/endpoint.h',
'src/core/iomgr/endpoint_pair.h',
'src/core/iomgr/fd_posix.h',
diff --git a/src/core/iomgr/block_annotate.h b/src/core/iomgr/block_annotate.h
new file mode 100644
index 0000000000..c962da0a89
--- /dev/null
+++ b/src/core/iomgr/block_annotate.h
@@ -0,0 +1,44 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_INTERNAL_CORE_IOMGR_BLOCK_ANNOTATE_H
+#define GRPC_INTERNAL_CORE_IOMGR_BLOCK_ANNOTATE_H
+
+/* These annotations identify the beginning and end of regions where
+ the code may block for reasons other than synchronization functions.
+ These include poll, epoll, and getaddrinfo. */
+
+#define GRPC_IOMGR_START_BLOCKING_REGION do {} while (0)
+#define GRPC_IOMGR_END_BLOCKING_REGION do {} while (0)
+
+#endif /* GRPC_INTERNAL_CORE_IOMGR_BLOCK_ANNOTATE_H */
diff --git a/src/core/iomgr/pollset_multipoller_with_epoll.c b/src/core/iomgr/pollset_multipoller_with_epoll.c
index 481bdc4ede..39746d501b 100644
--- a/src/core/iomgr/pollset_multipoller_with_epoll.c
+++ b/src/core/iomgr/pollset_multipoller_with_epoll.c
@@ -41,6 +41,7 @@
#include <sys/epoll.h>
#include <unistd.h>
+#include "src/core/iomgr/block_annotate.h"
#include "src/core/iomgr/fd_posix.h"
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
@@ -180,7 +181,9 @@ static void multipoll_with_epoll_pollset_maybe_work(
pfds[1].events = POLLIN;
pfds[1].revents = 0;
+ GRPC_IOMGR_START_BLOCKING_REGION;
poll_rv = grpc_poll_function(pfds, 2, timeout_ms);
+ GRPC_IOMGR_END_BLOCKING_REGION;
if (poll_rv < 0) {
if (errno != EINTR) {
@@ -194,7 +197,9 @@ static void multipoll_with_epoll_pollset_maybe_work(
}
if (pfds[1].revents) {
do {
+ GRPC_IOMGR_START_BLOCKING_REGION;
ep_rv = epoll_wait(h->epoll_fd, ep_ev, GRPC_EPOLL_MAX_EVENTS, 0);
+ GRPC_IOMGR_END_BLOCKING_REGION;
if (ep_rv < 0) {
if (errno != EINTR) {
gpr_log(GPR_ERROR, "epoll_wait() failed: %s", strerror(errno));
diff --git a/src/core/iomgr/pollset_multipoller_with_poll_posix.c b/src/core/iomgr/pollset_multipoller_with_poll_posix.c
index cae260cab0..0b12aaca6d 100644
--- a/src/core/iomgr/pollset_multipoller_with_poll_posix.c
+++ b/src/core/iomgr/pollset_multipoller_with_poll_posix.c
@@ -42,6 +42,7 @@
#include <stdlib.h>
#include <string.h>
+#include "src/core/iomgr/block_annotate.h"
#include "src/core/iomgr/fd_posix.h"
#include "src/core/iomgr/iomgr_internal.h"
#include <grpc/support/alloc.h>
@@ -145,7 +146,9 @@ static void multipoll_with_poll_pollset_maybe_work(
POLLOUT, &watchers[i]);
}
+ GRPC_IOMGR_START_BLOCKING_REGION;
r = grpc_poll_function(pfds, pfd_count, timeout);
+ GRPC_IOMGR_END_BLOCKING_REGION;
for (i = 1; i < pfd_count; i++) {
grpc_fd_end_poll(&watchers[i], pfds[i].revents & POLLIN,
diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c
index f3e424e83c..cfdfbcf606 100644
--- a/src/core/iomgr/pollset_posix.c
+++ b/src/core/iomgr/pollset_posix.c
@@ -43,6 +43,7 @@
#include <unistd.h>
#include "src/core/iomgr/alarm_internal.h"
+#include "src/core/iomgr/block_annotate.h"
#include "src/core/iomgr/fd_posix.h"
#include "src/core/iomgr/iomgr_internal.h"
#include "src/core/iomgr/socket_utils_posix.h"
@@ -453,7 +454,9 @@ static void basic_pollset_maybe_work(grpc_pollset *pollset,
/* poll fd count (argument 2) is shortened by one if we have no events
to poll on - such that it only includes the kicker */
+ GRPC_IOMGR_START_BLOCKING_REGION;
r = grpc_poll_function(pfd, nfds, timeout);
+ GRPC_IOMGR_END_BLOCKING_REGION;
GRPC_TIMER_MARK(GRPC_PTAG_POLL_FINISHED, r);
if (fd) {
diff --git a/src/core/iomgr/resolve_address_posix.c b/src/core/iomgr/resolve_address_posix.c
index 91754ebaaa..e7ebe3a2e6 100644
--- a/src/core/iomgr/resolve_address_posix.c
+++ b/src/core/iomgr/resolve_address_posix.c
@@ -41,6 +41,7 @@
#include <sys/un.h>
#include <string.h>
+#include "src/core/iomgr/block_annotate.h"
#include "src/core/iomgr/iomgr_internal.h"
#include "src/core/iomgr/sockaddr_utils.h"
#include "src/core/support/string.h"
@@ -103,13 +104,18 @@ grpc_resolved_addresses *grpc_blocking_resolve_address(
hints.ai_socktype = SOCK_STREAM; /* stream socket */
hints.ai_flags = AI_PASSIVE; /* for wildcard IP address */
+ GRPC_IOMGR_START_BLOCKING_REGION;
s = getaddrinfo(host, port, &hints, &result);
+ GRPC_IOMGR_END_BLOCKING_REGION;
+
if (s != 0) {
/* Retry if well-known service name is recognized */
char *svc[][2] = {{"http", "80"}, {"https", "443"}};
for (i = 0; i < GPR_ARRAY_SIZE(svc); i++) {
if (strcmp(port, svc[i][0]) == 0) {
+ GRPC_IOMGR_START_BLOCKING_REGION;
s = getaddrinfo(host, svc[i][1], &hints, &result);
+ GRPC_IOMGR_END_BLOCKING_REGION;
break;
}
}
diff --git a/src/core/iomgr/resolve_address_windows.c b/src/core/iomgr/resolve_address_windows.c
index fb5fd0d4f6..e9297a7895 100644
--- a/src/core/iomgr/resolve_address_windows.c
+++ b/src/core/iomgr/resolve_address_windows.c
@@ -40,6 +40,7 @@
#include <sys/types.h>
#include <string.h>
+#include "src/core/iomgr/block_annotate.h"
#include "src/core/iomgr/iomgr_internal.h"
#include "src/core/iomgr/sockaddr_utils.h"
#include "src/core/support/string.h"
@@ -88,7 +89,9 @@ grpc_resolved_addresses *grpc_blocking_resolve_address(
hints.ai_socktype = SOCK_STREAM; /* stream socket */
hints.ai_flags = AI_PASSIVE; /* for wildcard IP address */
+ GRPC_IOMGR_START_BLOCKING_REGION;
s = getaddrinfo(host, port, &hints, &result);
+ GRPC_IOMGR_END_BLOCKING_REGION;
if (s != 0) {
gpr_log(GPR_ERROR, "getaddrinfo: %s", gai_strerror(s));
goto done;
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index 8b88d54331..f38bee2bc0 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -815,6 +815,7 @@ src/core/httpcli/parser.h \
src/core/iomgr/alarm.h \
src/core/iomgr/alarm_heap.h \
src/core/iomgr/alarm_internal.h \
+src/core/iomgr/block_annotate.h \
src/core/iomgr/endpoint.h \
src/core/iomgr/endpoint_pair.h \
src/core/iomgr/fd_posix.h \
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index 3696e2d1d8..28361adee9 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -12311,6 +12311,7 @@
"src/core/iomgr/alarm.h",
"src/core/iomgr/alarm_heap.h",
"src/core/iomgr/alarm_internal.h",
+ "src/core/iomgr/block_annotate.h",
"src/core/iomgr/endpoint.h",
"src/core/iomgr/endpoint_pair.h",
"src/core/iomgr/fd_posix.h",
@@ -12482,6 +12483,7 @@
"src/core/iomgr/alarm_heap.c",
"src/core/iomgr/alarm_heap.h",
"src/core/iomgr/alarm_internal.h",
+ "src/core/iomgr/block_annotate.h",
"src/core/iomgr/endpoint.c",
"src/core/iomgr/endpoint.h",
"src/core/iomgr/endpoint_pair.h",
@@ -12800,6 +12802,7 @@
"src/core/iomgr/alarm.h",
"src/core/iomgr/alarm_heap.h",
"src/core/iomgr/alarm_internal.h",
+ "src/core/iomgr/block_annotate.h",
"src/core/iomgr/endpoint.h",
"src/core/iomgr/endpoint_pair.h",
"src/core/iomgr/fd_posix.h",
@@ -12956,6 +12959,7 @@
"src/core/iomgr/alarm_heap.c",
"src/core/iomgr/alarm_heap.h",
"src/core/iomgr/alarm_internal.h",
+ "src/core/iomgr/block_annotate.h",
"src/core/iomgr/endpoint.c",
"src/core/iomgr/endpoint.h",
"src/core/iomgr/endpoint_pair.h",
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj
index a09e813a5a..007ad41999 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj
@@ -277,6 +277,7 @@
<ClInclude Include="..\..\..\src\core\iomgr\alarm.h" />
<ClInclude Include="..\..\..\src\core\iomgr\alarm_heap.h" />
<ClInclude Include="..\..\..\src\core\iomgr\alarm_internal.h" />
+ <ClInclude Include="..\..\..\src\core\iomgr\block_annotate.h" />
<ClInclude Include="..\..\..\src\core\iomgr\endpoint.h" />
<ClInclude Include="..\..\..\src\core\iomgr\endpoint_pair.h" />
<ClInclude Include="..\..\..\src\core\iomgr\fd_posix.h" />
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
index 1538c33552..a52db5178f 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
@@ -602,6 +602,9 @@
<ClInclude Include="..\..\..\src\core\iomgr\alarm_internal.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
+ <ClInclude Include="..\..\..\src\core\iomgr\block_annotate.h">
+ <Filter>src\core\iomgr</Filter>
+ </ClInclude>
<ClInclude Include="..\..\..\src\core\iomgr\endpoint.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
index 1ef4aadf52..738a9ab627 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
@@ -256,6 +256,7 @@
<ClInclude Include="..\..\..\src\core\iomgr\alarm.h" />
<ClInclude Include="..\..\..\src\core\iomgr\alarm_heap.h" />
<ClInclude Include="..\..\..\src\core\iomgr\alarm_internal.h" />
+ <ClInclude Include="..\..\..\src\core\iomgr\block_annotate.h" />
<ClInclude Include="..\..\..\src\core\iomgr\endpoint.h" />
<ClInclude Include="..\..\..\src\core\iomgr\endpoint_pair.h" />
<ClInclude Include="..\..\..\src\core\iomgr\fd_posix.h" />
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
index da199b05f1..040b34344f 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
@@ -500,6 +500,9 @@
<ClInclude Include="..\..\..\src\core\iomgr\alarm_internal.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
+ <ClInclude Include="..\..\..\src\core\iomgr\block_annotate.h">
+ <Filter>src\core\iomgr</Filter>
+ </ClInclude>
<ClInclude Include="..\..\..\src\core\iomgr\endpoint.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>