4803
4804 ::mutexInit(&sockFnTableMutex);
4805 ::mutexLock(&sockFnTableMutex);
4806 if (os::WinSock2Dll::WSAStartup(MAKEWORD(1,1), &wsadata) != 0) {
4807 jio_fprintf(stderr, "Could not initialize Winsock\n");
4808 }
4809 sock_initialized = TRUE;
4810 ::mutexUnlock(&sockFnTableMutex);
4811 }
4812
4813 struct hostent* os::get_host_by_name(char* name) {
4814 if (!sock_initialized) {
4815 initSock();
4816 }
4817 if (!os::WinSock2Dll::WinSock2Available()) {
4818 return NULL;
4819 }
4820 return (struct hostent*)os::WinSock2Dll::gethostbyname(name);
4821 }
4822
4823
4824 int os::socket_close(int fd) {
4825 ShouldNotReachHere();
4826 return 0;
4827 }
4828
4829 int os::socket_available(int fd, jint *pbytes) {
4830 ShouldNotReachHere();
4831 return 0;
4832 }
4833
4834 int os::socket(int domain, int type, int protocol) {
4835 ShouldNotReachHere();
4836 return 0;
4837 }
4838
4839 int os::listen(int fd, int count) {
4840 ShouldNotReachHere();
4841 return 0;
4842 }
4843
4844 int os::connect(int fd, struct sockaddr* him, socklen_t len) {
4845 ShouldNotReachHere();
4846 return 0;
4847 }
4848
4849 int os::accept(int fd, struct sockaddr* him, socklen_t* len) {
4850 ShouldNotReachHere();
4851 return 0;
4852 }
4853
4854 int os::sendto(int fd, char* buf, size_t len, uint flags,
4855 struct sockaddr* to, socklen_t tolen) {
4856 ShouldNotReachHere();
4857 return 0;
4858 }
4859
4860 int os::recvfrom(int fd, char *buf, size_t nBytes, uint flags,
4861 sockaddr* from, socklen_t* fromlen) {
4862 ShouldNotReachHere();
4863 return 0;
4864 }
4865
4866 int os::recv(int fd, char* buf, size_t nBytes, uint flags) {
4867 ShouldNotReachHere();
4868 return 0;
4869 }
4870
4871 int os::send(int fd, char* buf, size_t nBytes, uint flags) {
4872 ShouldNotReachHere();
4873 return 0;
4874 }
4875
4876 int os::raw_send(int fd, char* buf, size_t nBytes, uint flags) {
4877 ShouldNotReachHere();
4878 return 0;
4879 }
4880
4881 int os::timeout(int fd, long timeout) {
4882 ShouldNotReachHere();
4883 return 0;
4884 }
4885
4886 int os::get_host_name(char* name, int namelen) {
4887 ShouldNotReachHere();
4888 return 0;
4889 }
4890
4891 int os::socket_shutdown(int fd, int howto) {
4892 ShouldNotReachHere();
4893 return 0;
4894 }
4895
4896 int os::bind(int fd, struct sockaddr* him, socklen_t len) {
4897 ShouldNotReachHere();
4898 return 0;
4899 }
4900
4901 int os::get_sock_name(int fd, struct sockaddr* him, socklen_t* len) {
4902 ShouldNotReachHere();
4903 return 0;
4904 }
4905
4906 int os::get_sock_opt(int fd, int level, int optname,
4907 char* optval, socklen_t* optlen) {
4908 ShouldNotReachHere();
4909 return 0;
4910 }
4911
4912 int os::set_sock_opt(int fd, int level, int optname,
4913 const char* optval, socklen_t optlen) {
4914 ShouldNotReachHere();
4915 return 0;
4916 }
4917
4918
4919 // Kernel32 API
4920 typedef SIZE_T (WINAPI* GetLargePageMinimum_Fn)(void);
4921 typedef LPVOID (WINAPI *VirtualAllocExNuma_Fn) (HANDLE, LPVOID, SIZE_T, DWORD, DWORD, DWORD);
4922 typedef BOOL (WINAPI *GetNumaHighestNodeNumber_Fn) (PULONG);
4923 typedef BOOL (WINAPI *GetNumaNodeProcessorMask_Fn) (UCHAR, PULONGLONG);
4924
4925 GetLargePageMinimum_Fn os::Kernel32Dll::_GetLargePageMinimum = NULL;
4926 VirtualAllocExNuma_Fn os::Kernel32Dll::_VirtualAllocExNuma = NULL;
4927 GetNumaHighestNodeNumber_Fn os::Kernel32Dll::_GetNumaHighestNodeNumber = NULL;
4928 GetNumaNodeProcessorMask_Fn os::Kernel32Dll::_GetNumaNodeProcessorMask = NULL;
4929 BOOL os::Kernel32Dll::initialized = FALSE;
4930 SIZE_T os::Kernel32Dll::GetLargePageMinimum() {
4931 assert(initialized && _GetLargePageMinimum != NULL,
4932 "GetLargePageMinimumAvailable() not yet called");
4933 return _GetLargePageMinimum();
4934 }
4935
|
4803
4804 ::mutexInit(&sockFnTableMutex);
4805 ::mutexLock(&sockFnTableMutex);
4806 if (os::WinSock2Dll::WSAStartup(MAKEWORD(1,1), &wsadata) != 0) {
4807 jio_fprintf(stderr, "Could not initialize Winsock\n");
4808 }
4809 sock_initialized = TRUE;
4810 ::mutexUnlock(&sockFnTableMutex);
4811 }
4812
4813 struct hostent* os::get_host_by_name(char* name) {
4814 if (!sock_initialized) {
4815 initSock();
4816 }
4817 if (!os::WinSock2Dll::WinSock2Available()) {
4818 return NULL;
4819 }
4820 return (struct hostent*)os::WinSock2Dll::gethostbyname(name);
4821 }
4822
4823 int os::socket_close(int fd) {
4824 return ::closesocket(fd);
4825 }
4826
4827 int os::socket_available(int fd, jint *pbytes) {
4828 u_long lbytes = (u_long)(*pbytes);
4829 int ret = ::ioctlsocket(fd, FIONREAD, &lbytes);
4830 return (ret < 0) ? 0 : 1;
4831 }
4832
4833 int os::socket(int domain, int type, int protocol) {
4834 return ::socket(domain, type, protocol);
4835 }
4836
4837 int os::listen(int fd, int count) {
4838 return ::listen(fd, count);
4839 }
4840
4841 int os::connect(int fd, struct sockaddr* him, socklen_t len) {
4842 return ::connect(fd, him, len);
4843 }
4844
4845 int os::accept(int fd, struct sockaddr* him, socklen_t* len) {
4846 return ::accept(fd, him, len);
4847 }
4848
4849 int os::sendto(int fd, char* buf, size_t len, uint flags,
4850 struct sockaddr* to, socklen_t tolen) {
4851
4852 return ::sendto(fd, buf, (int)len, flags, to, tolen);
4853 }
4854
4855 int os::recvfrom(int fd, char *buf, size_t nBytes, uint flags,
4856 sockaddr* from, socklen_t* fromlen) {
4857
4858 return ::recvfrom(fd, buf, (int)nBytes, flags, from, fromlen);
4859 }
4860
4861 int os::recv(int fd, char* buf, size_t nBytes, uint flags) {
4862 return ::recv(fd, buf, (int)nBytes, flags);
4863 }
4864
4865 int os::send(int fd, char* buf, size_t nBytes, uint flags) {
4866 return ::send(fd, buf, (int)nBytes, flags);
4867 }
4868
4869 int os::raw_send(int fd, char* buf, size_t nBytes, uint flags) {
4870 return ::send(fd, buf, (int)nBytes, flags);
4871 }
4872
4873 int os::timeout(int fd, long timeout) {
4874 fd_set tbl;
4875 struct timeval t;
4876
4877 t.tv_sec = timeout / 1000;
4878 t.tv_usec = (timeout % 1000) * 1000;
4879
4880 tbl.fd_count = 1;
4881 tbl.fd_array[0] = fd;
4882
4883 return ::select(1, &tbl, 0, 0, &t);
4884 }
4885
4886 int os::get_host_name(char* name, int namelen) {
4887 return ::gethostname(name, namelen);
4888 }
4889
4890 int os::socket_shutdown(int fd, int howto) {
4891 return ::shutdown(fd, howto);
4892 }
4893
4894 int os::bind(int fd, struct sockaddr* him, socklen_t len) {
4895 return ::bind(fd, him, len);
4896 }
4897
4898 int os::get_sock_name(int fd, struct sockaddr* him, socklen_t* len) {
4899 return ::getsockname(fd, him, len);
4900 }
4901
4902 int os::get_sock_opt(int fd, int level, int optname,
4903 char* optval, socklen_t* optlen) {
4904 return ::getsockopt(fd, level, optname, optval, optlen);
4905 }
4906
4907 int os::set_sock_opt(int fd, int level, int optname,
4908 const char* optval, socklen_t optlen) {
4909 return ::setsockopt(fd, level, optname, optval, optlen);
4910 }
4911
4912
4913 // Kernel32 API
4914 typedef SIZE_T (WINAPI* GetLargePageMinimum_Fn)(void);
4915 typedef LPVOID (WINAPI *VirtualAllocExNuma_Fn) (HANDLE, LPVOID, SIZE_T, DWORD, DWORD, DWORD);
4916 typedef BOOL (WINAPI *GetNumaHighestNodeNumber_Fn) (PULONG);
4917 typedef BOOL (WINAPI *GetNumaNodeProcessorMask_Fn) (UCHAR, PULONGLONG);
4918
4919 GetLargePageMinimum_Fn os::Kernel32Dll::_GetLargePageMinimum = NULL;
4920 VirtualAllocExNuma_Fn os::Kernel32Dll::_VirtualAllocExNuma = NULL;
4921 GetNumaHighestNodeNumber_Fn os::Kernel32Dll::_GetNumaHighestNodeNumber = NULL;
4922 GetNumaNodeProcessorMask_Fn os::Kernel32Dll::_GetNumaNodeProcessorMask = NULL;
4923 BOOL os::Kernel32Dll::initialized = FALSE;
4924 SIZE_T os::Kernel32Dll::GetLargePageMinimum() {
4925 assert(initialized && _GetLargePageMinimum != NULL,
4926 "GetLargePageMinimumAvailable() not yet called");
4927 return _GetLargePageMinimum();
4928 }
4929
|