Skip to content
This repository has been archived by the owner on Apr 22, 2023. It is now read-only.

Commit

Permalink
Browse files Browse the repository at this point in the history
sunos: don't use exceptions
Don't use exceptions in platform functions. Fix a resource leak
(leaked kstat handle) while we're at it.
  • Loading branch information
bnoordhuis committed Oct 26, 2011
1 parent d7dff34 commit 15628f6
Showing 1 changed file with 7 additions and 8 deletions.
15 changes: 7 additions & 8 deletions src/platform_sunos.cc
Expand Up @@ -82,7 +82,6 @@ const char* Platform::GetProcessTitle(int *len) {
int Platform::GetMemory(size_t *rss) {
pid_t pid = getpid();

size_t page_size = getpagesize();
char pidpath[1024];
sprintf(pidpath, "/proc/%d/psinfo", pid);

Expand Down Expand Up @@ -128,7 +127,7 @@ static Handle<Value> data_named(kstat_named_t *knp) {
val = String::New(KSTAT_NAMED_STR_PTR(knp));
break;
default:
throw (String::New("unrecognized data type"));
val = String::New("unrecognized data type");
}

return (val);
Expand All @@ -146,7 +145,7 @@ int Platform::GetCPUInfo(Local<Array> *cpus) {
kstat_named_t *knp;

if ((kc = kstat_open()) == NULL)
throw "could not open kstat";
return -1;

*cpus = Array::New();

Expand Down Expand Up @@ -212,23 +211,23 @@ double Platform::GetUptimeImpl() {
kstat_named_t *knp;

long hz = sysconf(_SC_CLK_TCK);
ulong_t clk_intr;
double clk_intr;

if ((kc = kstat_open()) == NULL)
throw "could not open kstat";
return -1;

ksp = kstat_lookup(kc, (char *)"unix", 0, (char *)"system_misc");

if (kstat_read(kc, ksp, NULL) == -1) {
throw "unable to read kstat";
clk_intr = -1;
} else {
knp = (kstat_named_t *) kstat_data_lookup(ksp, (char *)"clk_intr");
clk_intr = knp->value.ul;
clk_intr = knp->value.ul / hz;
}

kstat_close(kc);

return static_cast<double>( clk_intr / hz );
return clk_intr;
}


Expand Down

0 comments on commit 15628f6

Please sign in to comment.