diff --git a/include/grpc/support/port_platform.h b/include/grpc/support/port_platform.h index 58fce64ff187517e32156808aee2a1bfc53aacdb..2bf53483157868ba10c861992ad3d624e846a3bc 100644 --- a/include/grpc/support/port_platform.h +++ b/include/grpc/support/port_platform.h @@ -56,6 +56,8 @@ #define GPR_CPU_LINUX 1 #define GPR_GCC_SYNC 1 #define GPR_POSIX_MULTIPOLL_WITH_POLL 1 +#define GPR_POSIX_WAKEUP_FD 1 +#define GPR_LINUX_EVENTFD 1 #define GPR_POSIX_SOCKET 1 #define GPR_POSIX_SOCKETADDR 1 #define GPR_POSIX_SOCKETUTILS 1 @@ -68,7 +70,7 @@ #define GPR_GCC_ATOMIC 1 #define GPR_LINUX 1 #define GPR_POSIX_MULTIPOLL_WITH_POLL 1 -#define GPR_POSIX_HAS_SPECIAL_WAKEUP_FD 1 +#define GPR_POSIX_WAKEUP_FD 1 #define GPR_LINUX_EVENTFD 1 #define GPR_POSIX_SOCKET 1 #define GPR_POSIX_SOCKETADDR 1 @@ -86,6 +88,8 @@ #define GPR_GCC_ATOMIC 1 #define GPR_POSIX_LOG 1 #define GPR_POSIX_MULTIPOLL_WITH_POLL 1 +#define GPR_POSIX_WAKEUP_FD 1 +#define GPR_POSIX_NO_SPECIAL_WAKEUP_FD 1 #define GPR_POSIX_SOCKET 1 #define GPR_POSIX_SOCKETADDR 1 #define GPR_POSIX_SOCKETUTILS 1 diff --git a/src/core/iomgr/wakeup_fd_nospecial.c b/src/core/iomgr/wakeup_fd_nospecial.c index 21e8074d50ea495889b85163bfe76700c60327d1..c1038bf3792ca3cf9d3ddde4eaa2b7572a3ec2f2 100644 --- a/src/core/iomgr/wakeup_fd_nospecial.c +++ b/src/core/iomgr/wakeup_fd_nospecial.c @@ -38,16 +38,17 @@ #include <grpc/support/port_platform.h> -#ifndef GPR_POSIX_HAS_SPECIAL_WAKEUP_FD +#ifdef GPR_POSIX_NO_SPECIAL_WAKEUP_FD -#include "src/core/iomgr/wakeup_fd.h" +#include "src/core/iomgr/wakeup_fd_posix.h" +#include <stddef.h> static int check_availability_invalid(void) { return 0; } -const grpc_wakeup_fd_vtable specialized_wakeup_fd_vtable = { +const grpc_wakeup_fd_vtable grpc_specialized_wakeup_fd_vtable = { NULL, NULL, NULL, NULL, check_availability_invalid }; -#endif /* GPR_POSIX_HAS_SPECIAL_WAKEUP */ +#endif /* GPR_POSIX_NO_SPECIAL_WAKEUP_FD */ diff --git a/src/core/iomgr/wakeup_fd_pipe.c b/src/core/iomgr/wakeup_fd_pipe.c index f36e6eeb9f5166d99f69d6afcd506dcd9280cc91..f895478990e2a9afd8e7ce356dbd67e03aed944e 100644 --- a/src/core/iomgr/wakeup_fd_pipe.c +++ b/src/core/iomgr/wakeup_fd_pipe.c @@ -31,7 +31,10 @@ * */ -/* TODO(klempner): Allow this code to be disabled. */ +#include <grpc/support/port_platform.h> + +#ifdef GPR_POSIX_WAKEUP_FD + #include "src/core/iomgr/wakeup_fd_posix.h" #include <errno.h> @@ -87,7 +90,8 @@ static int pipe_check_availability(void) { return 1; } -const grpc_wakeup_fd_vtable pipe_wakeup_fd_vtable = { +const grpc_wakeup_fd_vtable grpc_pipe_wakeup_fd_vtable = { pipe_create, pipe_consume, pipe_wakeup, pipe_destroy, pipe_check_availability }; +#endif /* GPR_POSIX_WAKUP_FD */ diff --git a/src/core/iomgr/wakeup_fd_pipe.h b/src/core/iomgr/wakeup_fd_pipe.h index fc2898f570e83857e5ef481f79537d2e42eb0807..a2fcde5b55f72a9d40774c2de056e6deb51b3397 100644 --- a/src/core/iomgr/wakeup_fd_pipe.h +++ b/src/core/iomgr/wakeup_fd_pipe.h @@ -36,6 +36,6 @@ #include "src/core/iomgr/wakeup_fd_posix.h" -extern grpc_wakeup_fd_vtable pipe_wakeup_fd_vtable; +extern grpc_wakeup_fd_vtable grpc_pipe_wakeup_fd_vtable; #endif /* __GRPC_INTERNAL_IOMGR_WAKEUP_FD_PIPE_H_ */ diff --git a/src/core/iomgr/wakeup_fd_posix.c b/src/core/iomgr/wakeup_fd_posix.c index 9107cf37b1e219feebfb1b26c724c2ef3ee248a3..d3cc3ec570d040dc4880751eb314059f23526ba3 100644 --- a/src/core/iomgr/wakeup_fd_posix.c +++ b/src/core/iomgr/wakeup_fd_posix.c @@ -31,6 +31,10 @@ * */ +#include <grpc/support/port_platform.h> + +#ifdef GPR_POSIX_WAKEUP_FD + #include "src/core/iomgr/wakeup_fd_posix.h" #include "src/core/iomgr/wakeup_fd_pipe.h" #include <stddef.h> @@ -38,15 +42,15 @@ static const grpc_wakeup_fd_vtable *wakeup_fd_vtable = NULL; void grpc_wakeup_fd_global_init(void) { - if (specialized_wakeup_fd_vtable.check_availability()) { - wakeup_fd_vtable = &specialized_wakeup_fd_vtable; + if (grpc_specialized_wakeup_fd_vtable.check_availability()) { + wakeup_fd_vtable = &grpc_specialized_wakeup_fd_vtable; } else { - wakeup_fd_vtable = &pipe_wakeup_fd_vtable; + wakeup_fd_vtable = &grpc_pipe_wakeup_fd_vtable; } } void grpc_wakeup_fd_global_init_force_fallback(void) { - wakeup_fd_vtable = &pipe_wakeup_fd_vtable; + wakeup_fd_vtable = &grpc_pipe_wakeup_fd_vtable; } void grpc_wakeup_fd_global_destroy(void) { @@ -68,3 +72,5 @@ void grpc_wakeup_fd_wakeup(grpc_wakeup_fd_info *fd_info) { void grpc_wakeup_fd_destroy(grpc_wakeup_fd_info *fd_info) { wakeup_fd_vtable->destroy(fd_info); } + +#endif /* GPR_POSIX_WAKEUP_FD */ diff --git a/src/core/iomgr/wakeup_fd_posix.h b/src/core/iomgr/wakeup_fd_posix.h index c2769afb2a4221e2ee7aa663cbedc68976d6bb54..75bb9fc766ca4f3b963cb282957bd8bb3cdce3f5 100644 --- a/src/core/iomgr/wakeup_fd_posix.h +++ b/src/core/iomgr/wakeup_fd_posix.h @@ -62,29 +62,14 @@ #ifndef __GRPC_INTERNAL_IOMGR_WAKEUP_FD_POSIX_H_ #define __GRPC_INTERNAL_IOMGR_WAKEUP_FD_POSIX_H_ -typedef struct grpc_wakeup_fd_info grpc_wakeup_fd_info; - void grpc_wakeup_fd_global_init(void); void grpc_wakeup_fd_global_destroy(void); - -void grpc_wakeup_fd_create(grpc_wakeup_fd_info *fd_info); -void grpc_wakeup_fd_consume_wakeup(grpc_wakeup_fd_info *fd_info); -void grpc_wakeup_fd_wakeup(grpc_wakeup_fd_info *fd_info); -void grpc_wakeup_fd_destroy(grpc_wakeup_fd_info *fd_info); - -#define GRPC_WAKEUP_FD_GET_READ_FD(fd_info) ((fd_info)->read_fd) - /* Force using the fallback implementation. This is intended for testing * purposes only.*/ void grpc_wakeup_fd_global_init_force_fallback(void); -/* Private structures; don't access their fields directly outside of wakeup fd - * code. */ -struct grpc_wakeup_fd_info { - int read_fd; - int write_fd; -}; +typedef struct grpc_wakeup_fd_info grpc_wakeup_fd_info; typedef struct grpc_wakeup_fd_vtable { void (*create)(grpc_wakeup_fd_info *fd_info); @@ -95,8 +80,20 @@ typedef struct grpc_wakeup_fd_vtable { int (*check_availability)(void); } grpc_wakeup_fd_vtable; +struct grpc_wakeup_fd_info { + int read_fd; + int write_fd; +}; + +#define GRPC_WAKEUP_FD_GET_READ_FD(fd_info) ((fd_info)->read_fd) + +void grpc_wakeup_fd_create(grpc_wakeup_fd_info *fd_info); +void grpc_wakeup_fd_consume_wakeup(grpc_wakeup_fd_info *fd_info); +void grpc_wakeup_fd_wakeup(grpc_wakeup_fd_info *fd_info); +void grpc_wakeup_fd_destroy(grpc_wakeup_fd_info *fd_info); + /* Defined in some specialized implementation's .c file, or by * wakeup_fd_nospecial.c if no such implementation exists. */ -extern const grpc_wakeup_fd_vtable specialized_wakeup_fd_vtable; +extern const grpc_wakeup_fd_vtable grpc_specialized_wakeup_fd_vtable; #endif /* __GRPC_INTERNAL_IOMGR_WAKEUP_FD_POSIX_H_ */ diff --git a/src/core/support/log_posix.c b/src/core/support/log_posix.c index 1292c9e8c35839cfa0f3a9d27802e53f4d2d0168..ab2d2e5a7409f971c8d36f1fd7c3d1cf114ab6b1 100644 --- a/src/core/support/log_posix.c +++ b/src/core/support/log_posix.c @@ -64,7 +64,7 @@ void gpr_log(const char *file, int line, gpr_log_severity severity, va_end(args); if (ret < 0) { message = NULL; - } else if (ret <= sizeof(buf) - 1) { + } else if ((size_t)ret <= sizeof(buf) - 1) { message = buf; } else { message = allocated = gpr_malloc(ret + 1);