From 2554694bbb52153981898320b22efe6de9e23f82 Mon Sep 17 00:00:00 2001 From: Christian Thalinger Date: Tue, 21 Oct 2008 11:42:00 +0200 Subject: [PATCH] * src/vm/os.hpp (os::send): New function. * src/native/vm/openjdk/jvm.cpp (JVM_Send): Implemented. --- src/native/vm/openjdk/jvm.cpp | 8 ++++++-- src/vm/os.hpp | 11 +++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/native/vm/openjdk/jvm.cpp b/src/native/vm/openjdk/jvm.cpp index 1bbdd3ea4..9b393d3bf 100644 --- a/src/native/vm/openjdk/jvm.cpp +++ b/src/native/vm/openjdk/jvm.cpp @@ -2717,9 +2717,13 @@ jint JVM_Recv(jint fd, char *buf, jint nBytes, jint flags) jint JVM_Send(jint fd, char *buf, jint nBytes, jint flags) { - log_println("JVM_Send: IMPLEMENT ME!"); + TRACEJVMCALLSENTER(("JVM_Send(fd=%d, buf=%p, nBytes=%d, flags=%d", fd, buf, nBytes, flags)); - return 0; + int result = os::send(fd, buf, nBytes, flags); + + TRACEJVMCALLSEXIT(("->%d", result)); + + return result; } diff --git a/src/vm/os.hpp b/src/vm/os.hpp index 66de93d51..052c0a370 100644 --- a/src/vm/os.hpp +++ b/src/vm/os.hpp @@ -145,6 +145,7 @@ public: static inline int mprotect(void* addr, size_t len, int prot); static inline ssize_t readlink(const char* path, char* buf, size_t bufsiz); static inline int scandir(const char* dir, struct dirent*** namelist, int(*filter)(const struct dirent*), int(*compar)(const void*, const void*)); + static inline ssize_t send(int s, const void* buf, size_t len, int flags); static inline int setsockopt(int s, int level, int optname, const void* optval, socklen_t optlen); static inline int shutdown(int s, int how); static inline int socket(int domain, int type, int protocol); @@ -527,6 +528,16 @@ inline int os::scandir(const char *dir, struct dirent ***namelist, int(*filter)( #endif } +inline ssize_t os::send(int s, const void* buf, size_t len, int flags) +{ + // TODO Should be restartable on Linux and interruptible on Solaris. +#if defined(HAVE_SEND) + return ::send(s, buf, len, flags); +#else +# error send not available +#endif +} + inline int os::setsockopt(int s, int level, int optname, const void* optval, socklen_t optlen) { #if defined(HAVE_SETSOCKOPT) -- 2.25.1