123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- // posix.h -- Helper functions for POSIX-flavored OSs.
- /* Copyright (C) 2000, 2002, 2003, 2006, 2010, 2012 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_POSIX_H__
- #define __JV_POSIX_H__
- #include <time.h>
- #include <sys/types.h>
- #ifdef HAVE_SYS_TIME_H
- #include <sys/time.h>
- #endif
- #ifdef HAVE_SYS_SELECT_H
- #include <sys/select.h>
- #endif
- #ifdef HAVE_SYS_SOCKET_H
- #include <sys/socket.h>
- #endif
- #ifdef HAVE_UNISTD_H
- #include <unistd.h>
- #endif
- #include <fcntl.h>
- /* The header file <sys/rw_lock.h> needs to be included before javaprims.h
- on HP-UX 11 to avoid a compilation error. */
- #ifdef HAVE_SYS_RW_LOCK_H
- #include <sys/rw_lock.h>
- #endif
- #include <gcj/cni.h>
- #include <java/util/Properties.h>
- // Prefix and suffix for shared libraries.
- #define _Jv_platform_solib_prefix "lib"
- #if defined(__APPLE__) && defined(__MACH__)
- #define _Jv_platform_solib_suffix ".dylib"
- #elif defined(HPUX) && defined(HP_PA)
- #define _Jv_platform_solib_suffix ".sl"
- #else
- #define _Jv_platform_solib_suffix ".so"
- #endif
- #if __MACH__ && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1060)
- # undef _Unwind_FindEnclosingFunction
- # define _Unwind_FindEnclosingFunction(PC) _darwin10_Unwind_FindEnclosingFunction(PC)
- #endif
- // Some POSIX systems don't have O_SYNC and O_DYSNC so we define them here.
- // Needed in java/io/natFileDescriptorPosix.cc.
- #if !defined (O_SYNC) && defined (O_FSYNC)
- #define O_SYNC O_FSYNC
- #endif
- #if !defined (O_DSYNC) && defined (O_FSYNC)
- #define O_DSYNC O_FSYNC
- #endif
- // If O_DSYNC is still not defined, use O_SYNC (needed for newlib)
- #if !defined (O_DSYNC)
- #define O_DSYNC O_SYNC
- #endif
- // Name of the Process implementation.
- #ifdef ECOS
- #define _Jv_platform_process ::java::lang::EcosProcess
- #else
- #define _Jv_platform_process ::java::lang::PosixProcess
- #endif
- // 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'.
- #define _Jv_platform_onload_names { "JNI_OnLoad", 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_DEFAULT_ABI
- #ifndef DISABLE_JAVA_NET
- #include <java/net/InetAddress.h>
- #endif
- extern int _Jv_select (int n, fd_set *, fd_set *, fd_set *, struct timeval *);
- extern jlong _Jv_platform_gettimeofday ();
- extern jlong _Jv_platform_nanotime ();
- extern void _Jv_platform_initialize (void);
- extern void _Jv_platform_initProperties (java::util::Properties*);
- #ifdef JV_HASH_SYNCHRONIZATION
- #ifndef HAVE_USLEEP_DECL
- extern "C" int usleep (useconds_t useconds);
- #endif /* not HAVE_USLEEP_DECL */
- inline void
- _Jv_platform_usleep (unsigned long usecs)
- {
- usleep (usecs);
- }
- #endif /* JV_HASH_SYNCHRONIZATION */
- #ifndef DISABLE_JAVA_NET
- #ifndef HAVE_SOCKLEN_T
- #define socklen_t int
- #endif
- static inline int
- _Jv_socket (int domain, int type, int protocol)
- {
- return ::socket (domain, type, protocol);
- }
- #undef socket
- inline int
- _Jv_connect (jint fd, sockaddr *ptr, int len)
- {
- return ::connect (fd, ptr, len);
- }
- #undef connect
- inline int
- _Jv_close (jint fd)
- {
- return ::close (fd);
- }
- #undef close
- // Avoid macro definitions of bind from system headers, e.g. on
- // Solaris 7 with _XOPEN_SOURCE. FIXME
- inline int
- _Jv_bind (int fd, struct sockaddr *addr, int addrlen)
- {
- return ::bind (fd, addr, addrlen);
- }
- #undef bind
- inline int
- _Jv_listen (int fd, int backlog)
- {
- return ::listen (fd, backlog);
- }
- #undef listen
- inline int
- _Jv_write(int s, void *buf, int len)
- {
- return ::write (s, buf, len);
- }
- #undef write
- inline int
- _Jv_read(int s, void *buf, int len)
- {
- return ::read (s, buf, len);
- }
- #undef read
- #endif /* DISABLE_JAVA_NET */
- // Wraps ::pipe
- static inline int
- _Jv_pipe (int filedes[2])
- {
- return ::pipe (filedes);
- }
- // Forward declaration. See java-stack.h for definition.
- struct _Jv_AddrInfo;
- // Given an address, determine the executable or shared object that defines
- // it and the nearest named symbol.
- extern int _Jv_platform_dladdr (void *addr, _Jv_AddrInfo *info);
- #endif /* __JV_POSIX_H__ */
|