Browse Source

sunos: don't use exceptions

Don't use exceptions in platform functions. Fix a resource leak
(leaked kstat handle) while we're at it.
v0.7.4-release
Ben Noordhuis 13 years ago
parent
commit
15628f6735
  1. 15
      src/platform_sunos.cc

15
src/platform_sunos.cc

@ -82,7 +82,6 @@ const char* Platform::GetProcessTitle(int *len) {
int Platform::GetMemory(size_t *rss) { int Platform::GetMemory(size_t *rss) {
pid_t pid = getpid(); pid_t pid = getpid();
size_t page_size = getpagesize();
char pidpath[1024]; char pidpath[1024];
sprintf(pidpath, "/proc/%d/psinfo", pid); sprintf(pidpath, "/proc/%d/psinfo", pid);
@ -128,7 +127,7 @@ static Handle<Value> data_named(kstat_named_t *knp) {
val = String::New(KSTAT_NAMED_STR_PTR(knp)); val = String::New(KSTAT_NAMED_STR_PTR(knp));
break; break;
default: default:
throw (String::New("unrecognized data type")); val = String::New("unrecognized data type");
} }
return (val); return (val);
@ -146,7 +145,7 @@ int Platform::GetCPUInfo(Local<Array> *cpus) {
kstat_named_t *knp; kstat_named_t *knp;
if ((kc = kstat_open()) == NULL) if ((kc = kstat_open()) == NULL)
throw "could not open kstat"; return -1;
*cpus = Array::New(); *cpus = Array::New();
@ -212,23 +211,23 @@ double Platform::GetUptimeImpl() {
kstat_named_t *knp; kstat_named_t *knp;
long hz = sysconf(_SC_CLK_TCK); long hz = sysconf(_SC_CLK_TCK);
ulong_t clk_intr; double clk_intr;
if ((kc = kstat_open()) == NULL) if ((kc = kstat_open()) == NULL)
throw "could not open kstat"; return -1;
ksp = kstat_lookup(kc, (char *)"unix", 0, (char *)"system_misc"); ksp = kstat_lookup(kc, (char *)"unix", 0, (char *)"system_misc");
if (kstat_read(kc, ksp, NULL) == -1) { if (kstat_read(kc, ksp, NULL) == -1) {
throw "unable to read kstat"; clk_intr = -1;
} else { } else {
knp = (kstat_named_t *) kstat_data_lookup(ksp, (char *)"clk_intr"); 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); kstat_close(kc);
return static_cast<double>( clk_intr / hz ); return clk_intr;
} }

Loading…
Cancel
Save