< prev index next >
src/os/solaris/vm/os_solaris.cpp
Print this page
rev 13166 : read/write APIs in class os shall return ssize_t
*** 1599,1619 ****
if (diag_msg_max_length==0) {
// No more space in ebuf for additional diagnostics message
return NULL;
}
-
int file_descriptor= ::open(filename, O_RDONLY | O_NONBLOCK);
if (file_descriptor < 0) {
// Can't open library, report dlerror() message
return NULL;
}
bool failed_to_read_elf_head=
! (sizeof(elf_head)!=
! (::read(file_descriptor, &elf_head,sizeof(elf_head))));
::close(file_descriptor);
if (failed_to_read_elf_head) {
// file i/o error - report dlerror() msg
return NULL;
--- 1599,1618 ----
if (diag_msg_max_length==0) {
// No more space in ebuf for additional diagnostics message
return NULL;
}
int file_descriptor= ::open(filename, O_RDONLY | O_NONBLOCK);
if (file_descriptor < 0) {
// Can't open library, report dlerror() message
return NULL;
}
bool failed_to_read_elf_head=
! (sizeof(elf_head) !=
! (::read(file_descriptor, &elf_head, sizeof(elf_head))));
::close(file_descriptor);
if (failed_to_read_elf_head) {
// file i/o error - report dlerror() msg
return NULL;
*** 1824,1834 ****
char *mbuff = (char *) calloc(read_chunk, sizeof(prmap_t));
if (NULL == mbuff) {
::close(fd);
return status;
}
! while ((ret = ::read(fd, mbuff, read_chunk*sizeof(prmap_t))) > 0) {
//check if read() has not read partial data
if( 0 != ret % sizeof(prmap_t)){
break;
}
nmap = ret / sizeof(prmap_t);
--- 1823,1833 ----
char *mbuff = (char *) calloc(read_chunk, sizeof(prmap_t));
if (NULL == mbuff) {
::close(fd);
return status;
}
! while ((ret = ::read(fd, mbuff, read_chunk * sizeof(prmap_t))) > 0) {
//check if read() has not read partial data
if( 0 != ret % sizeof(prmap_t)){
break;
}
nmap = ret / sizeof(prmap_t);
*** 2944,2979 ****
bool os::can_execute_large_page_memory() {
return true;
}
// Read calls from inside the vm need to perform state transitions
! size_t os::read(int fd, void *buf, unsigned int nBytes) {
! size_t res;
JavaThread* thread = (JavaThread*)Thread::current();
assert(thread->thread_state() == _thread_in_vm, "Assumed _thread_in_vm");
ThreadBlockInVM tbiv(thread);
RESTARTABLE(::read(fd, buf, (size_t) nBytes), res);
return res;
}
! size_t os::read_at(int fd, void *buf, unsigned int nBytes, jlong offset) {
! size_t res;
JavaThread* thread = (JavaThread*)Thread::current();
assert(thread->thread_state() == _thread_in_vm, "Assumed _thread_in_vm");
ThreadBlockInVM tbiv(thread);
RESTARTABLE(::pread(fd, buf, (size_t) nBytes, offset), res);
return res;
}
! size_t os::restartable_read(int fd, void *buf, unsigned int nBytes) {
! size_t res;
assert(((JavaThread*)Thread::current())->thread_state() == _thread_in_native,
"Assumed _thread_in_native");
RESTARTABLE(::read(fd, buf, (size_t) nBytes), res);
return res;
}
void os::naked_short_sleep(jlong ms) {
assert(ms < 1000, "Un-interruptable sleep, short time use only");
// usleep is deprecated and removed from POSIX, in favour of nanosleep, but
// Solaris requires -lrt for this.
--- 2943,2984 ----
bool os::can_execute_large_page_memory() {
return true;
}
// Read calls from inside the vm need to perform state transitions
! ssize_t os::read(int fd, void *buf, unsigned int nBytes) {
! ssize_t res;
JavaThread* thread = (JavaThread*)Thread::current();
assert(thread->thread_state() == _thread_in_vm, "Assumed _thread_in_vm");
ThreadBlockInVM tbiv(thread);
RESTARTABLE(::read(fd, buf, (size_t) nBytes), res);
return res;
}
! ssize_t os::read_at(int fd, void *buf, unsigned int nBytes, jlong offset) {
! ssize_t res;
JavaThread* thread = (JavaThread*)Thread::current();
assert(thread->thread_state() == _thread_in_vm, "Assumed _thread_in_vm");
ThreadBlockInVM tbiv(thread);
RESTARTABLE(::pread(fd, buf, (size_t) nBytes, offset), res);
return res;
}
! ssize_t os::restartable_read(int fd, void *buf, unsigned int nBytes) {
! ssize_t res;
assert(((JavaThread*)Thread::current())->thread_state() == _thread_in_native,
"Assumed _thread_in_native");
RESTARTABLE(::read(fd, buf, (size_t) nBytes), res);
return res;
}
+ ssize_t os::write(int fd, const void *buf, unsigned int nBytes) {
+ ssize_t res;
+ RESTARTABLE((size_t) ::write(fd, buf, (size_t) nBytes), res);
+ return res;
+ }
+
void os::naked_short_sleep(jlong ms) {
assert(ms < 1000, "Un-interruptable sleep, short time use only");
// usleep is deprecated and removed from POSIX, in favour of nanosleep, but
// Solaris requires -lrt for this.
*** 5490,5505 ****
if (::stat(libmawtpath, &statbuf) == 0) return false;
return true;
}
- size_t os::write(int fd, const void *buf, unsigned int nBytes) {
- size_t res;
- RESTARTABLE((size_t) ::write(fd, buf, (size_t) nBytes), res);
- return res;
- }
-
int os::close(int fd) {
return ::close(fd);
}
int os::socket_close(int fd) {
--- 5495,5504 ----
< prev index next >