8324834: Use _LARGE_FILES on AIX
Reviewed-by: erikj, mbaesken
This commit is contained in:
parent
cab74b075e
commit
8e45182357
@ -485,7 +485,7 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
|
|||||||
CFLAGS_OS_DEF_JVM="-D_ALLBSD_SOURCE -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE"
|
CFLAGS_OS_DEF_JVM="-D_ALLBSD_SOURCE -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE"
|
||||||
CFLAGS_OS_DEF_JDK="-D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
|
CFLAGS_OS_DEF_JDK="-D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
|
||||||
elif test "x$OPENJDK_TARGET_OS" = xaix; then
|
elif test "x$OPENJDK_TARGET_OS" = xaix; then
|
||||||
CFLAGS_OS_DEF_JVM="-DAIX"
|
CFLAGS_OS_DEF_JVM="-DAIX -D_LARGE_FILES"
|
||||||
elif test "x$OPENJDK_TARGET_OS" = xbsd; then
|
elif test "x$OPENJDK_TARGET_OS" = xbsd; then
|
||||||
CFLAGS_OS_DEF_JDK="-D_ALLBSD_SOURCE"
|
CFLAGS_OS_DEF_JDK="-D_ALLBSD_SOURCE"
|
||||||
elif test "x$OPENJDK_TARGET_OS" = xwindows; then
|
elif test "x$OPENJDK_TARGET_OS" = xwindows; then
|
||||||
|
@ -478,14 +478,14 @@ AttachOperation* AttachListener::dequeue() {
|
|||||||
|
|
||||||
void AttachListener::vm_start() {
|
void AttachListener::vm_start() {
|
||||||
char fn[UNIX_PATH_MAX];
|
char fn[UNIX_PATH_MAX];
|
||||||
struct stat64 st;
|
struct stat st;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
int n = snprintf(fn, UNIX_PATH_MAX, "%s/.java_pid%d",
|
int n = snprintf(fn, UNIX_PATH_MAX, "%s/.java_pid%d",
|
||||||
os::get_temp_directory(), os::current_process_id());
|
os::get_temp_directory(), os::current_process_id());
|
||||||
assert(n < (int)UNIX_PATH_MAX, "java_pid file name buffer overflow");
|
assert(n < (int)UNIX_PATH_MAX, "java_pid file name buffer overflow");
|
||||||
|
|
||||||
RESTARTABLE(::stat64(fn, &st), ret);
|
RESTARTABLE(::stat(fn, &st), ret);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
ret = ::unlink(fn);
|
ret = ::unlink(fn);
|
||||||
if (ret == -1) {
|
if (ret == -1) {
|
||||||
@ -505,8 +505,8 @@ int AttachListener::pd_init() {
|
|||||||
|
|
||||||
bool AttachListener::check_socket_file() {
|
bool AttachListener::check_socket_file() {
|
||||||
int ret;
|
int ret;
|
||||||
struct stat64 st;
|
struct stat st;
|
||||||
ret = stat64(AixAttachListener::path(), &st);
|
ret = stat(AixAttachListener::path(), &st);
|
||||||
if (ret == -1) { // need to restart attach listener.
|
if (ret == -1) { // need to restart attach listener.
|
||||||
log_debug(attach)("Socket file %s does not exist - Restart Attach Listener",
|
log_debug(attach)("Socket file %s does not exist - Restart Attach Listener",
|
||||||
AixAttachListener::path());
|
AixAttachListener::path());
|
||||||
@ -545,14 +545,14 @@ bool AttachListener::is_init_trigger() {
|
|||||||
}
|
}
|
||||||
char fn[PATH_MAX + 1];
|
char fn[PATH_MAX + 1];
|
||||||
int ret;
|
int ret;
|
||||||
struct stat64 st;
|
struct stat st;
|
||||||
os::snprintf_checked(fn, sizeof(fn), ".attach_pid%d", os::current_process_id());
|
os::snprintf_checked(fn, sizeof(fn), ".attach_pid%d", os::current_process_id());
|
||||||
RESTARTABLE(::stat64(fn, &st), ret);
|
RESTARTABLE(::stat(fn, &st), ret);
|
||||||
if (ret == -1) {
|
if (ret == -1) {
|
||||||
log_trace(attach)("Failed to find attach file: %s, trying alternate", fn);
|
log_trace(attach)("Failed to find attach file: %s, trying alternate", fn);
|
||||||
snprintf(fn, sizeof(fn), "%s/.attach_pid%d",
|
snprintf(fn, sizeof(fn), "%s/.attach_pid%d",
|
||||||
os::get_temp_directory(), os::current_process_id());
|
os::get_temp_directory(), os::current_process_id());
|
||||||
RESTARTABLE(::stat64(fn, &st), ret);
|
RESTARTABLE(::stat(fn, &st), ret);
|
||||||
if (ret == -1) {
|
if (ret == -1) {
|
||||||
log_debug(attach)("Failed to find attach file: %s", fn);
|
log_debug(attach)("Failed to find attach file: %s", fn);
|
||||||
}
|
}
|
||||||
|
@ -117,6 +117,10 @@
|
|||||||
#include <sys/utsname.h>
|
#include <sys/utsname.h>
|
||||||
#include <sys/vminfo.h>
|
#include <sys/vminfo.h>
|
||||||
|
|
||||||
|
#ifndef _LARGE_FILES
|
||||||
|
#error Hotspot on AIX must be compiled with -D_LARGE_FILES
|
||||||
|
#endif
|
||||||
|
|
||||||
// Missing prototypes for various system APIs.
|
// Missing prototypes for various system APIs.
|
||||||
extern "C"
|
extern "C"
|
||||||
int mread_real_time(timebasestruct_t *t, size_t size_of_timebasestruct_t);
|
int mread_real_time(timebasestruct_t *t, size_t size_of_timebasestruct_t);
|
||||||
@ -2526,10 +2530,10 @@ int os::open(const char *path, int oflag, int mode) {
|
|||||||
// IV90804: OPENING A FILE IN AFS WITH O_CLOEXEC FAILS WITH AN EINVAL ERROR APPLIES TO AIX 7100-04 17/04/14 PTF PECHANGE
|
// IV90804: OPENING A FILE IN AFS WITH O_CLOEXEC FAILS WITH AN EINVAL ERROR APPLIES TO AIX 7100-04 17/04/14 PTF PECHANGE
|
||||||
int oflag_with_o_cloexec = oflag | O_CLOEXEC;
|
int oflag_with_o_cloexec = oflag | O_CLOEXEC;
|
||||||
|
|
||||||
int fd = ::open64(path, oflag_with_o_cloexec, mode);
|
int fd = ::open(path, oflag_with_o_cloexec, mode);
|
||||||
if (fd == -1) {
|
if (fd == -1) {
|
||||||
// we might fail in the open call when O_CLOEXEC is set, so try again without (see IV90804)
|
// we might fail in the open call when O_CLOEXEC is set, so try again without (see IV90804)
|
||||||
fd = ::open64(path, oflag, mode);
|
fd = ::open(path, oflag, mode);
|
||||||
if (fd == -1) {
|
if (fd == -1) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -2537,8 +2541,8 @@ int os::open(const char *path, int oflag, int mode) {
|
|||||||
|
|
||||||
// If the open succeeded, the file might still be a directory.
|
// If the open succeeded, the file might still be a directory.
|
||||||
{
|
{
|
||||||
struct stat64 buf64;
|
struct stat buf64;
|
||||||
int ret = ::fstat64(fd, &buf64);
|
int ret = ::fstat(fd, &buf64);
|
||||||
int st_mode = buf64.st_mode;
|
int st_mode = buf64.st_mode;
|
||||||
|
|
||||||
if (ret != -1) {
|
if (ret != -1) {
|
||||||
@ -2592,17 +2596,17 @@ int os::open(const char *path, int oflag, int mode) {
|
|||||||
int os::create_binary_file(const char* path, bool rewrite_existing) {
|
int os::create_binary_file(const char* path, bool rewrite_existing) {
|
||||||
int oflags = O_WRONLY | O_CREAT;
|
int oflags = O_WRONLY | O_CREAT;
|
||||||
oflags |= rewrite_existing ? O_TRUNC : O_EXCL;
|
oflags |= rewrite_existing ? O_TRUNC : O_EXCL;
|
||||||
return ::open64(path, oflags, S_IREAD | S_IWRITE);
|
return ::open(path, oflags, S_IREAD | S_IWRITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// return current position of file pointer
|
// return current position of file pointer
|
||||||
jlong os::current_file_offset(int fd) {
|
jlong os::current_file_offset(int fd) {
|
||||||
return (jlong)::lseek64(fd, (off64_t)0, SEEK_CUR);
|
return (jlong)::lseek(fd, (off_t)0, SEEK_CUR);
|
||||||
}
|
}
|
||||||
|
|
||||||
// move file pointer to the specified offset
|
// move file pointer to the specified offset
|
||||||
jlong os::seek_to_file_offset(int fd, jlong offset) {
|
jlong os::seek_to_file_offset(int fd, jlong offset) {
|
||||||
return (jlong)::lseek64(fd, (off64_t)offset, SEEK_SET);
|
return (jlong)::lseek(fd, (off_t)offset, SEEK_SET);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Map a block of memory.
|
// Map a block of memory.
|
||||||
|
@ -753,11 +753,11 @@ void os::dll_unload(void *lib) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
jlong os::lseek(int fd, jlong offset, int whence) {
|
jlong os::lseek(int fd, jlong offset, int whence) {
|
||||||
return (jlong) AIX_ONLY(::lseek64) NOT_AIX(::lseek)(fd, offset, whence);
|
return (jlong) ::lseek(fd, offset, whence);
|
||||||
}
|
}
|
||||||
|
|
||||||
int os::ftruncate(int fd, jlong length) {
|
int os::ftruncate(int fd, jlong length) {
|
||||||
return AIX_ONLY(::ftruncate64) NOT_AIX(::ftruncate)(fd, length);
|
return ::ftruncate(fd, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* os::get_current_directory(char *buf, size_t buflen) {
|
const char* os::get_current_directory(char *buf, size_t buflen) {
|
||||||
|
Loading…
Reference in New Issue
Block a user