From b4074037563c48c44d36a6d84d2a4443a6f4a355 Mon Sep 17 00:00:00 2001 From: Mehrdad Hessar Date: Thu, 28 Jul 2022 17:33:32 -0700 Subject: [PATCH 1/2] enable micro by default --- CMakeLists.txt | 7 ++++++- apps/hexagon_api/CMakeLists.txt | 3 +++ cmake/config.cmake | 3 --- tests/scripts/task_config_build_arm.sh | 1 - tests/scripts/task_config_build_cortexm.sh | 1 - tests/scripts/task_config_build_cpu.sh | 1 - tests/scripts/task_config_build_gpu.sh | 1 - tests/scripts/task_config_build_gpu_other.sh | 1 - tests/scripts/task_config_build_hexagon.sh | 1 - tests/scripts/task_config_build_i386.sh | 1 - tests/scripts/task_config_build_riscv.sh | 1 - tests/scripts/task_config_build_wasm.sh | 1 - 12 files changed, 9 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8995f9a87fb7..bdf9c7b19b92 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,7 +57,6 @@ tvm_option(USE_OPENMP "Build with OpenMP thread pool implementation" OFF) tvm_option(USE_RELAY_DEBUG "Building Relay in debug mode..." OFF) tvm_option(USE_RTTI "Build with RTTI" ON) tvm_option(USE_MSVC_MT "Build with MT" OFF) -tvm_option(USE_MICRO "Build with Micro TVM support" OFF) tvm_option(INSTALL_DEV "Install compiler infrastructure" OFF) tvm_option(HIDE_PRIVATE_SYMBOLS "Compile with -fvisibility=hidden." OFF) tvm_option(USE_TF_TVMDSOOP "Build with TensorFlow TVMDSOOp" OFF) @@ -115,6 +114,12 @@ tvm_option(USE_CLML "Build with CLML Codegen support" OFF) tvm_option(USE_CLML_GRAPH_EXECUTOR "Build with CLML graph runtime" OFF) tvm_option(USE_UMA "Build with UMA support" OFF) +if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "iOS") + set(USE_MICRO true) +else() + set(USE_MICRO false) +endif() + # include directories include_directories(${CMAKE_INCLUDE_PATH}) include_directories("include") diff --git a/apps/hexagon_api/CMakeLists.txt b/apps/hexagon_api/CMakeLists.txt index 9a05cf3675b6..cadd2138b947 100644 --- a/apps/hexagon_api/CMakeLists.txt +++ b/apps/hexagon_api/CMakeLists.txt @@ -53,6 +53,7 @@ ExternalProject_Add(x86_tvm_runtime_rpc "-DUSE_HEXAGON_RPC=ON" "-DBUILD_STATIC_RUNTIME=ON" "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + "-DUSE_MICRO=OFF" INSTALL_COMMAND "" BUILD_ALWAYS ON ) @@ -88,6 +89,7 @@ ExternalProject_Add(android_tvm_runtime_rpc "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" "-DUSE_ALTERNATIVE_LINKER=OFF" "-DUSE_RANDOM=ON" + "-DUSE_MICRO=OFF" INSTALL_COMMAND "" BUILD_ALWAYS ON ) @@ -136,6 +138,7 @@ ExternalProject_Add(hexagon_tvm_runtime_rpc "-DUSE_HEXAGON_QHL=ON" "-DUSE_RANDOM=ON" "${GTEST_FLAG}" + "-DUSE_MICRO=OFF" INSTALL_COMMAND "" BUILD_ALWAYS ON ) diff --git a/cmake/config.cmake b/cmake/config.cmake index 18725de844b2..bd0c01de4e51 100644 --- a/cmake/config.cmake +++ b/cmake/config.cmake @@ -95,9 +95,6 @@ set(USE_SPIRV_KHR_INTEGER_DOT_PRODUCT OFF) # Whether enable OpenGL runtime set(USE_OPENGL OFF) -# Whether enable MicroTVM runtime -set(USE_MICRO OFF) - # Whether enable RPC runtime set(USE_RPC ON) diff --git a/tests/scripts/task_config_build_arm.sh b/tests/scripts/task_config_build_arm.sh index a01c1ed6d082..e7a141d1455f 100755 --- a/tests/scripts/task_config_build_arm.sh +++ b/tests/scripts/task_config_build_arm.sh @@ -25,7 +25,6 @@ cp ../cmake/config.cmake . echo set\(USE_SORT ON\) >> config.cmake echo set\(USE_RPC ON\) >> config.cmake -echo set\(USE_MICRO ON\) >> config.cmake echo set\(USE_MICRO_STANDALONE_RUNTIME ON\) >> config.cmake echo set\(USE_PROFILER ON\) >> config.cmake echo set\(USE_LLVM llvm-config-8\) >> config.cmake diff --git a/tests/scripts/task_config_build_cortexm.sh b/tests/scripts/task_config_build_cortexm.sh index 35dbd82110cd..a0b68a58db47 100755 --- a/tests/scripts/task_config_build_cortexm.sh +++ b/tests/scripts/task_config_build_cortexm.sh @@ -24,7 +24,6 @@ cd "$BUILD_DIR" cp ../cmake/config.cmake . echo set\(USE_SORT ON\) >> config.cmake -echo set\(USE_MICRO ON\) >> config.cmake echo set\(USE_CMSISNN ON\) >> config.cmake echo set\(USE_ETHOSU ON\) >> config.cmake echo set\(USE_UMA ON\) >> config.cmake diff --git a/tests/scripts/task_config_build_cpu.sh b/tests/scripts/task_config_build_cpu.sh index 7f48839f23c0..28b3f6367c7b 100755 --- a/tests/scripts/task_config_build_cpu.sh +++ b/tests/scripts/task_config_build_cpu.sh @@ -24,7 +24,6 @@ cd "$BUILD_DIR" cp ../cmake/config.cmake . echo set\(USE_SORT ON\) >> config.cmake -echo set\(USE_MICRO ON\) >> config.cmake echo set\(USE_MICRO_STANDALONE_RUNTIME ON\) >> config.cmake echo set\(USE_PROFILER ON\) >> config.cmake echo set\(USE_DNNL ON\) >> config.cmake diff --git a/tests/scripts/task_config_build_gpu.sh b/tests/scripts/task_config_build_gpu.sh index 5163a16da3cd..99b7200b3280 100755 --- a/tests/scripts/task_config_build_gpu.sh +++ b/tests/scripts/task_config_build_gpu.sh @@ -29,7 +29,6 @@ echo set\(USE_CUDA ON\) >> config.cmake echo set\(USE_VULKAN ON\) >> config.cmake echo set\(USE_OPENGL ON\) >> config.cmake echo set\(USE_OPENCL ON\) >> config.cmake -echo set\(USE_MICRO ON\) >> config.cmake echo set\(USE_MICRO_STANDALONE_RUNTIME ON\) >> config.cmake echo set\(USE_LLVM \"/usr/bin/llvm-config-9 --link-static\"\) >> config.cmake echo set\(USE_NNPACK ON\) >> config.cmake diff --git a/tests/scripts/task_config_build_gpu_other.sh b/tests/scripts/task_config_build_gpu_other.sh index 9943d9b2514e..ec85ae7c281b 100755 --- a/tests/scripts/task_config_build_gpu_other.sh +++ b/tests/scripts/task_config_build_gpu_other.sh @@ -27,7 +27,6 @@ cp ../cmake/config.cmake . echo set\(USE_OPENCL ON\) >> config.cmake echo set\(USE_ROCM ON\) >> config.cmake -echo set\(USE_MICRO ON\) >> config.cmake echo set\(USE_PROFILER ON\) >> config.cmake echo set\(USE_LIBBACKTRACE OFF\) >> config.cmake echo set\(CMAKE_CXX_FLAGS -Werror\) >> config.cmake diff --git a/tests/scripts/task_config_build_hexagon.sh b/tests/scripts/task_config_build_hexagon.sh index 2f84bed23a30..5feb28c11983 100755 --- a/tests/scripts/task_config_build_hexagon.sh +++ b/tests/scripts/task_config_build_hexagon.sh @@ -25,7 +25,6 @@ cp ../cmake/config.cmake . echo set\(USE_SORT ON\) >> config.cmake echo set\(USE_RPC ON\) >> config.cmake -echo set\(USE_MICRO ON\) >> config.cmake echo set\(USE_MICRO_STANDALONE_RUNTIME ON\) >> config.cmake echo set\(USE_LLVM "${CLANG_LLVM_HOME}/bin/llvm-config"\) >> config.cmake echo set\(CMAKE_CXX_COMPILER "/opt/sccache/clang++"\) >> config.cmake diff --git a/tests/scripts/task_config_build_i386.sh b/tests/scripts/task_config_build_i386.sh index a570e9801ad3..bc7f248fa64b 100755 --- a/tests/scripts/task_config_build_i386.sh +++ b/tests/scripts/task_config_build_i386.sh @@ -25,7 +25,6 @@ cp ../cmake/config.cmake . echo set\(USE_SORT ON\) >> config.cmake echo set\(USE_RPC ON\) >> config.cmake -echo set\(USE_MICRO ON\) >> config.cmake echo set\(USE_MICRO_STANDALONE_RUNTIME ON\) >> config.cmake echo set\(USE_PROFILER ON\) >> config.cmake echo set\(USE_LLVM llvm-config-4.0\) >> config.cmake diff --git a/tests/scripts/task_config_build_riscv.sh b/tests/scripts/task_config_build_riscv.sh index 9e11e5e255e9..b39cb4b28e3b 100755 --- a/tests/scripts/task_config_build_riscv.sh +++ b/tests/scripts/task_config_build_riscv.sh @@ -24,7 +24,6 @@ cd "$BUILD_DIR" cp ../cmake/config.cmake . echo set\(USE_SORT ON\) >> config.cmake -echo set\(USE_MICRO ON\) >> config.cmake echo set\(USE_CMSISNN ON\) >> config.cmake echo set\(USE_UMA ON\) >> config.cmake echo set\(USE_PROFILER ON\) >> config.cmake diff --git a/tests/scripts/task_config_build_wasm.sh b/tests/scripts/task_config_build_wasm.sh index daa5481bea9d..e96288e36b7e 100755 --- a/tests/scripts/task_config_build_wasm.sh +++ b/tests/scripts/task_config_build_wasm.sh @@ -24,7 +24,6 @@ cd "$BUILD_DIR" cp ../cmake/config.cmake . echo set\(USE_SORT ON\) >> config.cmake -echo set\(USE_MICRO ON\) >> config.cmake echo set\(USE_MICRO_STANDALONE_RUNTIME ON\) >> config.cmake echo set\(USE_PROFILER ON\) >> config.cmake echo set\(USE_LLVM llvm-config-11\) >> config.cmake From 420483fe4fab85257301cf6ed6f31dcb8d6ca62b Mon Sep 17 00:00:00 2001 From: Mehrdad Hessar Date: Fri, 9 Sep 2022 16:40:29 -0700 Subject: [PATCH 2/2] fix ssize_t for windows --- cmake/modules/StandaloneCrt.cmake | 1 + include/tvm/runtime/crt/rpc_common/framing.h | 3 ++- include/tvm/runtime/crt/rpc_common/session.h | 11 ++++++++++- .../tvm/runtime/crt/rpc_common/write_stream.h | 3 ++- {src => include/tvm}/support/ssize.h | 12 ++++++++---- .../crt/microtvm_rpc_common/write_stream.cc | 2 +- src/runtime/micro/micro_session.cc | 9 +++++++-- src/runtime/minrpc/minrpc_server.h | 7 ++++--- src/runtime/minrpc/minrpc_server_logging.h | 2 +- src/runtime/rpc/rpc_channel_logger.h | 6 +++--- src/runtime/rpc/rpc_socket_impl.cc | 4 ++-- src/support/socket.h | 16 ++++++++-------- 12 files changed, 49 insertions(+), 27 deletions(-) rename {src => include/tvm}/support/ssize.h (83%) diff --git a/cmake/modules/StandaloneCrt.cmake b/cmake/modules/StandaloneCrt.cmake index e7c132651ca4..cbc8b66c71ac 100644 --- a/cmake/modules/StandaloneCrt.cmake +++ b/cmake/modules/StandaloneCrt.cmake @@ -30,6 +30,7 @@ if(USE_MICRO) "include/tvm/runtime c_*_api.h -> include/tvm/runtime" "include/tvm/runtime metadata_types.h -> include/tvm/runtime" "include/tvm/runtime/crt *.h -> include/tvm/runtime/crt" + "include/tvm/support ssize.h -> include/tvm/support" "src/runtime/crt Makefile -> ." "src/runtime/crt/include *.h -> include" "src/runtime/crt/aot_executor *.c -> src/runtime/crt/aot_executor" diff --git a/include/tvm/runtime/crt/rpc_common/framing.h b/include/tvm/runtime/crt/rpc_common/framing.h index 33f37a0af03f..6c6944e2778f 100644 --- a/include/tvm/runtime/crt/rpc_common/framing.h +++ b/include/tvm/runtime/crt/rpc_common/framing.h @@ -29,6 +29,7 @@ #include #include #include +#include namespace tvm { namespace runtime { @@ -143,7 +144,7 @@ class Unframer { class Framer { public: - typedef ssize_t (*WriteFunc)(const uint8_t* data, size_t data_size_bytes); + typedef tvm_ssize_t (*WriteFunc)(const uint8_t* data, size_t data_size_bytes); explicit Framer(WriteStream* stream) : stream_{stream}, state_{State::kReset}, num_payload_bytes_remaining_{0} {} diff --git a/include/tvm/runtime/crt/rpc_common/session.h b/include/tvm/runtime/crt/rpc_common/session.h index eee1de6072d2..0c009f9305f6 100644 --- a/include/tvm/runtime/crt/rpc_common/session.h +++ b/include/tvm/runtime/crt/rpc_common/session.h @@ -30,6 +30,7 @@ #include #include #include +#include namespace tvm { namespace runtime { @@ -43,10 +44,18 @@ enum class MessageType : uint8_t { kNormal = 0x10, }; +#if defined(_MSC_VER) +#pragma pack(4) +typedef struct SessionHeader { + uint16_t session_id; + MessageType message_type; +} SessionHeader; +#else typedef struct SessionHeader { uint16_t session_id; MessageType message_type; } __attribute__((packed)) SessionHeader; +#endif /*! * \brief CRT communication session management class. @@ -187,7 +196,7 @@ class Session { explicit SessionReceiver(Session* session) : session_{session} {} virtual ~SessionReceiver() {} - ssize_t Write(const uint8_t* data, size_t data_size_bytes) override; + tvm_ssize_t Write(const uint8_t* data, size_t data_size_bytes) override; void PacketDone(bool is_valid) override; private: diff --git a/include/tvm/runtime/crt/rpc_common/write_stream.h b/include/tvm/runtime/crt/rpc_common/write_stream.h index cdc579585993..6234c6b48d3a 100644 --- a/include/tvm/runtime/crt/rpc_common/write_stream.h +++ b/include/tvm/runtime/crt/rpc_common/write_stream.h @@ -29,6 +29,7 @@ #include #include #include +#include namespace tvm { namespace runtime { @@ -37,7 +38,7 @@ namespace micro_rpc { class WriteStream { public: virtual ~WriteStream(); - virtual ssize_t Write(const uint8_t* data, size_t data_size_bytes) = 0; + virtual tvm_ssize_t Write(const uint8_t* data, size_t data_size_bytes) = 0; virtual void PacketDone(bool is_valid) = 0; tvm_crt_error_t WriteAll(uint8_t* data, size_t data_size_bytes, size_t* bytes_consumed); diff --git a/src/support/ssize.h b/include/tvm/support/ssize.h similarity index 83% rename from src/support/ssize.h rename to include/tvm/support/ssize.h index 2a62a9b36989..8b9828dd3bc5 100644 --- a/src/support/ssize.h +++ b/include/tvm/support/ssize.h @@ -19,18 +19,22 @@ /*! * \file ssize.h - * \brief this file aims to define ssize_t for Windows platform + * \brief this file aims to define tvm_ssize_t. */ #ifndef TVM_SUPPORT_SSIZE_H_ #define TVM_SUPPORT_SSIZE_H_ +#include + #if defined(_MSC_VER) -#if defined(_WIN32) -using ssize_t = int32_t; +#if defined(_WIN64) +typedef int64_t tvm_ssize_t; #else -using ssize_t = int64_t; +typedef int32_t tvm_ssize_t; #endif +#else +typedef ssize_t tvm_ssize_t; #endif #endif // TVM_SUPPORT_SSIZE_H_ diff --git a/src/runtime/crt/microtvm_rpc_common/write_stream.cc b/src/runtime/crt/microtvm_rpc_common/write_stream.cc index a4ad0fc86dff..05840d45fb86 100644 --- a/src/runtime/crt/microtvm_rpc_common/write_stream.cc +++ b/src/runtime/crt/microtvm_rpc_common/write_stream.cc @@ -33,7 +33,7 @@ tvm_crt_error_t WriteStream::WriteAll(uint8_t* data, size_t data_size_bytes, size_t* bytes_consumed) { *bytes_consumed = 0; while (data_size_bytes > 0) { - ssize_t to_return = Write(data, data_size_bytes); + tvm_ssize_t to_return = Write(data, data_size_bytes); if (to_return == 0) { return kTvmErrorWriteStreamShortWrite; } else if (to_return < 0) { diff --git a/src/runtime/micro/micro_session.cc b/src/runtime/micro/micro_session.cc index 6911c2021ac1..9b604b3d4eb0 100644 --- a/src/runtime/micro/micro_session.cc +++ b/src/runtime/micro/micro_session.cc @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -52,7 +53,7 @@ class CallbackWriteStream : public WriteStream { explicit CallbackWriteStream(PackedFunc fsend, ::std::chrono::microseconds write_timeout) : fsend_{fsend}, write_timeout_{write_timeout} {} - ssize_t Write(const uint8_t* data, size_t data_size_bytes) override { + tvm_ssize_t Write(const uint8_t* data, size_t data_size_bytes) override { TVMByteArray bytes; bytes.data = (const char*)data; bytes.size = data_size_bytes; @@ -62,7 +63,7 @@ class CallbackWriteStream : public WriteStream { fsend_(bytes, write_timeout_.count()); } - return static_cast(data_size_bytes); + return static_cast(data_size_bytes); } void PacketDone(bool is_valid) override {} @@ -180,7 +181,11 @@ class MicroTransportChannel : public RPCChannel { } uint8_t initial_nonce = 0; for (int i = 0; i < kNumRandRetries && initial_nonce == 0; ++i) { +#if defined(_MSC_VER) + initial_nonce = rand(); +#else initial_nonce = rand_r(&seed); +#endif } random_seed.store(seed); ICHECK_NE(initial_nonce, 0) << "rand() does not seem to be producing random values"; diff --git a/src/runtime/minrpc/minrpc_server.h b/src/runtime/minrpc/minrpc_server.h index 4684aa0e1616..898d9390fc9e 100644 --- a/src/runtime/minrpc/minrpc_server.h +++ b/src/runtime/minrpc/minrpc_server.h @@ -34,6 +34,7 @@ #include #include +#include #include #include @@ -150,7 +151,7 @@ class MinRPCReturns : public MinRPCReturnInterface { const uint8_t* buf = static_cast(data); size_t ndone = 0; while (ndone < size) { - ssize_t ret = io_->PosixWrite(buf, size - ndone); + tvm_ssize_t ret = io_->PosixWrite(buf, size - ndone); if (ret <= 0) { this->ThrowError(RPCServerStatus::kWriteError); } @@ -526,7 +527,7 @@ class MinRPCExecute : public MinRPCExecInterface { uint8_t* buf = static_cast(data); size_t ndone = 0; while (ndone < size) { - ssize_t ret = io_->PosixRead(buf, size - ndone); + tvm_ssize_t ret = io_->PosixRead(buf, size - ndone); if (ret <= 0) return ret; ndone += ret; buf += ret; @@ -757,7 +758,7 @@ class MinRPCServer { uint8_t* buf = static_cast(data); size_t ndone = 0; while (ndone < size) { - ssize_t ret = io_->PosixRead(buf, size - ndone); + tvm_ssize_t ret = io_->PosixRead(buf, size - ndone); if (ret == 0) { if (allow_clean_shutdown_) { Shutdown(); diff --git a/src/runtime/minrpc/minrpc_server_logging.h b/src/runtime/minrpc/minrpc_server_logging.h index deca2156ce62..ccfe1af44a7a 100644 --- a/src/runtime/minrpc/minrpc_server_logging.h +++ b/src/runtime/minrpc/minrpc_server_logging.h @@ -140,7 +140,7 @@ class MinRPCSniffer { uint8_t* buf = reinterpret_cast(data); size_t ndone = 0; while (ndone < size) { - ssize_t ret = io_->PosixRead(buf, size - ndone); + tvm_ssize_t ret = io_->PosixRead(buf, size - ndone); if (ret <= 0) { this->ThrowError(RPCServerStatus::kReadError); return false; diff --git a/src/runtime/rpc/rpc_channel_logger.h b/src/runtime/rpc/rpc_channel_logger.h index 8fe68f669007..495531e9fe21 100644 --- a/src/runtime/rpc/rpc_channel_logger.h +++ b/src/runtime/rpc/rpc_channel_logger.h @@ -25,11 +25,11 @@ #define TVM_RUNTIME_RPC_RPC_CHANNEL_LOGGER_H_ #include +#include #include #include -#include "../../support/ssize.h" #include "../minrpc/minrpc_server_logging.h" #include "rpc_channel.h" @@ -99,11 +99,11 @@ class SnifferIOHandler { void MessageStart(size_t message_size_bytes) {} - ssize_t PosixWrite(const uint8_t* buf, size_t buf_size_bytes) { return 0; } + tvm_ssize_t PosixWrite(const uint8_t* buf, size_t buf_size_bytes) { return 0; } void MessageDone() {} - ssize_t PosixRead(uint8_t* buf, size_t buf_size_bytes) { + tvm_ssize_t PosixRead(uint8_t* buf, size_t buf_size_bytes) { return receive_buffer_->Read(buf, buf_size_bytes); } diff --git a/src/runtime/rpc/rpc_socket_impl.cc b/src/runtime/rpc/rpc_socket_impl.cc index 3cc8cdc51fe7..2e1d20b44a3e 100644 --- a/src/runtime/rpc/rpc_socket_impl.cc +++ b/src/runtime/rpc/rpc_socket_impl.cc @@ -46,14 +46,14 @@ class SockChannel final : public RPCChannel { } } size_t Send(const void* data, size_t size) final { - ssize_t n = sock_.Send(data, size); + tvm_ssize_t n = sock_.Send(data, size); if (n == -1) { support::Socket::Error("SockChannel::Send"); } return static_cast(n); } size_t Recv(void* data, size_t size) final { - ssize_t n = sock_.Recv(data, size); + tvm_ssize_t n = sock_.Recv(data, size); if (n == -1) { support::Socket::Error("SockChannel::Recv"); } diff --git a/src/support/socket.h b/src/support/socket.h index 52de2f72f548..5e7c2f8bba4a 100644 --- a/src/support/socket.h +++ b/src/support/socket.h @@ -50,13 +50,13 @@ #endif #include #include +#include #include #include #include #include -#include "../support/ssize.h" #include "../support/utils.h" #if defined(_WIN32) @@ -378,8 +378,8 @@ class Socket { * \return The return code returned by function f or error_value on retry failure. */ template - ssize_t RetryCallOnEINTR(FuncType func) { - ssize_t ret = func(); + tvm_ssize_t RetryCallOnEINTR(FuncType func) { + tvm_ssize_t ret = func(); // common path if (ret != -1) return ret; // less common path @@ -497,7 +497,7 @@ class TCPSocket : public Socket { * \return size of data actually sent * return -1 if error occurs */ - ssize_t Send(const void* buf_, size_t len, int flag = 0) { + tvm_ssize_t Send(const void* buf_, size_t len, int flag = 0) { const char* buf = reinterpret_cast(buf_); return RetryCallOnEINTR( [&]() { return send(sockfd, buf, static_cast(len), flag); }); @@ -510,7 +510,7 @@ class TCPSocket : public Socket { * \return size of data actually received * return -1 if error occurs */ - ssize_t Recv(void* buf_, size_t len, int flags = 0) { + tvm_ssize_t Recv(void* buf_, size_t len, int flags = 0) { char* buf = reinterpret_cast(buf_); return RetryCallOnEINTR( [&]() { return recv(sockfd, buf, static_cast(len), flags); }); @@ -526,8 +526,8 @@ class TCPSocket : public Socket { const char* buf = reinterpret_cast(buf_); size_t ndone = 0; while (ndone < len) { - ssize_t ret = RetryCallOnEINTR( - [&]() { return send(sockfd, buf, static_cast(len - ndone), 0); }); + tvm_ssize_t ret = RetryCallOnEINTR( + [&]() { return send(sockfd, buf, static_cast(len - ndone), 0); }); if (ret == -1) { if (LastErrorWouldBlock()) return ndone; Socket::Error("SendAll"); @@ -548,7 +548,7 @@ class TCPSocket : public Socket { char* buf = reinterpret_cast(buf_); size_t ndone = 0; while (ndone < len) { - ssize_t ret = RetryCallOnEINTR( + tvm_ssize_t ret = RetryCallOnEINTR( [&]() { return recv(sockfd, buf, static_cast(len - ndone), MSG_WAITALL); }); if (ret == -1) { if (LastErrorWouldBlock()) {