gcc/libjava/include/win32.h
Tom Tromey 2b7f1f8f41 resolve.cc (ncode): Use _Jv_platform_ffi_abi.
* resolve.cc (ncode): Use _Jv_platform_ffi_abi.
	Include platform.h.
	* java/lang/natRuntime.cc (insertSystemProperties): Use
	_Jv_platform_path_separator.
	(nativeGetLibname): Use _Jv_platform_file_separator.
	(_load): Use _Jv_platform_onload_names.
	(onload_names): New global.
	* include/win32.h (_Jv_platform_file_separator): New define.
	(_Jv_platform_path_separator): Likewise.
	(_Jv_platform_onload_names): Likewise.
	(_Jv_platform_ffi_abi): Likewise.
	* include/posix.h (_Jv_platform_file_separator): New define.
	(_Jv_platform_path_separator): Likewise.
	(_Jv_platform_onload_names): Likewise.
	(_Jv_platform_ffi_abi): Likewise.

From-SVN: r64461
2003-03-17 00:45:37 +00:00

137 lines
3.0 KiB
C

// win32.h -- Helper functions for Microsoft-flavored OSs.
/* Copyright (C) 2002, 2003 Free Software Foundation
This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
#ifndef __JV_WIN32_H__
#define __JV_WIN32_H__
#include <windows.h>
#undef STRICT
#include <ws2tcpip.h>
#include <gcj/cni.h>
#include <java/util/Properties.h>
#include <io.h>
// Prefix and suffix for shared libraries.
#define _Jv_platform_solib_prefix ""
#define _Jv_platform_solib_suffix ".dll"
// Separator for file name components.
#define _Jv_platform_file_separator ((jchar) '\\')
// Separator for path components.
#define _Jv_platform_path_separator ((jchar) ';')
// List of names for `JNI_OnLoad'. On Win32, JNI_OnLoad is an
// "stdcall" function taking two pointers (8 bytes) as arguments. It
// could also have been exported as "JNI_OnLoad@8" (MinGW) or
// "_JNI_OnLoad@8" (MSVC).
#define _Jv_platform_onload_names \
{ "JNI_OnLoad", "JNI_OnLoad@8", "_JNI_OnLoad@8", NULL }
// Type of libffi ABI used by JNICALL methods. NOTE: This must agree
// with the JNICALL definition in jni.h
#define _Jv_platform_ffi_abi FFI_STDCALL
#ifndef DISABLE_JAVA_NET
// these errors cannot occur on Win32
#define ENOTCONN 0
#define ECONNRESET 0
#ifndef ENOPROTOOPT
#define ENOPROTOOPT 109
#endif
#endif // DISABLE_JAVA_NET
extern void _Jv_platform_initialize (void);
extern void _Jv_platform_initProperties (java::util::Properties*);
extern jlong _Jv_platform_gettimeofday ();
inline void
_Jv_platform_close_on_exec (jint)
{
// Ignore.
}
#ifdef JV_HASH_SYNCHRONIZATION
/* Suspends the execution of the current thread for the specified
number of microseconds. Tries to emulate the behaviour of usleep()
on UNIX and provides a granularity of 1 millisecond. */
inline void
_Jv_platform_usleep (unsigned long usecs)
{
if (usecs > 0UL)
{
unsigned long millis = ((usecs + 999UL) / 1000UL);
Sleep (millis);
}
}
#endif /* JV_HASH_SYNCHRONIZATION */
#ifndef DISABLE_JAVA_NET
static inline int
_Jv_socket (int domain, int type, int protocol)
{
return ::socket (domain, type, protocol);
}
inline int
_Jv_connect (jint fd, sockaddr *ptr, int len)
{
return ::connect (fd, ptr, len);
}
inline int
_Jv_close (jint fd)
{
return ::closesocket (fd);
}
inline int
_Jv_bind (int fd, struct sockaddr *addr, int addrlen)
{
return ::bind (fd, addr, addrlen);
}
inline int
_Jv_accept (int fd, struct sockaddr *addr, socklen_t *addrlen)
{
return ::accept (fd, addr, addrlen);
}
inline int
_Jv_listen (int fd, int backlog)
{
return ::listen (fd, backlog);
}
inline int
_Jv_write(int s, void *buf, int len)
{
return ::send (s, (char*) buf, len, 0);
}
inline int
_Jv_read(int s, void *buf, int len)
{
return ::recv (s, (char*) buf, len, 0);
}
#endif /* DISABLE_JAVA_NET */
/* Store up to SIZE return address of the current program state in
ARRAY and return the exact number of values stored. */
extern int backtrace (void **__array, int __size);
#endif /* __JV_WIN32_H__ */