< prev index next >
src/hotspot/os/solaris/os_perf_solaris.cpp
Print this page
rev 50955 : [mq]: readdir
*** 602,620 ****
return OS_OK;
}
int SystemProcessInterface::SystemProcesses::ProcessIterator::next_process() {
- struct dirent* entry;
-
if (!is_valid()) {
return OS_ERR;
}
do {
! if ((entry = os::readdir(_dir, _entry)) == NULL) {
! // error
_valid = false;
return OS_ERR;
}
} while(!is_valid_entry(_entry));
--- 602,619 ----
return OS_OK;
}
int SystemProcessInterface::SystemProcesses::ProcessIterator::next_process() {
if (!is_valid()) {
return OS_ERR;
}
do {
! _entry = os::readdir(_dir);
! if (_entry == NULL) {
! // Error or reached end. Could use errno to distinguish those cases.
_valid = false;
return OS_ERR;
}
} while(!is_valid_entry(_entry));
*** 627,654 ****
_entry = NULL;
_valid = false;
}
bool SystemProcessInterface::SystemProcesses::ProcessIterator::initialize() {
! _dir = opendir("/proc");
! _entry = (struct dirent*)NEW_C_HEAP_ARRAY(char, sizeof(struct dirent) + _PC_NAME_MAX + 1, mtInternal);
! if (NULL == _entry) {
! return false;
! }
_valid = true;
next_process();
return true;
}
SystemProcessInterface::SystemProcesses::ProcessIterator::~ProcessIterator() {
- if (_entry != NULL) {
- FREE_C_HEAP_ARRAY(char, _entry);
- }
-
if (_dir != NULL) {
! closedir(_dir);
}
}
SystemProcessInterface::SystemProcesses::SystemProcesses() {
_iterator = NULL;
--- 626,646 ----
_entry = NULL;
_valid = false;
}
bool SystemProcessInterface::SystemProcesses::ProcessIterator::initialize() {
! _dir = os::opendir("/proc");
! _entry = NULL;
_valid = true;
next_process();
return true;
}
SystemProcessInterface::SystemProcesses::ProcessIterator::~ProcessIterator() {
if (_dir != NULL) {
! os::closedir(_dir);
}
}
SystemProcessInterface::SystemProcesses::SystemProcesses() {
_iterator = NULL;
< prev index next >