summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2005-09-22 09:57:31 +0000
committerBenoit Foucher <benoit@zeroc.com>2005-09-22 09:57:31 +0000
commit80998fb135686cced7cdcd9c17b69fd8f0446e26 (patch)
tree186f59447951f7e2ed91dedd7e9d92d9e1cfe20b /cpp/src
parentFix (diff)
downloadice-80998fb135686cced7cdcd9c17b69fd8f0446e26.tar.bz2
ice-80998fb135686cced7cdcd9c17b69fd8f0446e26.tar.xz
ice-80998fb135686cced7cdcd9c17b69fd8f0446e26.zip
Fix
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/IceGrid/NodeI.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/cpp/src/IceGrid/NodeI.cpp b/cpp/src/IceGrid/NodeI.cpp
index 3c4f7f9304f..bad7723f980 100644
--- a/cpp/src/IceGrid/NodeI.cpp
+++ b/cpp/src/IceGrid/NodeI.cpp
@@ -260,13 +260,20 @@ NodeI::NodeI(const Ice::ObjectAdapterPtr& adapter,
struct nlist nl;
nl.n_name = "avenrun";
nl.n_value = 0;
- if(knlist(&nl, 1, sizeof(nl)) != 0)
+ if(knlist(&nl, 1, sizeof(nl)) == 0)
{
- _kmem = open("/dev/kmem", 0, 0);
+ _kmem = open("/dev/kmem", O_RDONLY);
+
+ //
+ // Give up root permissions, it's only needed to access the file.
+ //
+ setuid(getuid());
+ setgid(getgid());
}
else
{
_kmem = -1;
+ cerr << "no k " << endl;
}
#else
_nproc = 1;
@@ -639,17 +646,17 @@ NodeI::keepAlive()
#elif defined(_AIX)
if(_kmem > 1)
{
- long avenrun[3];
+ long long avenrun[3];
struct nlist nl;
nl.n_name = "avenrun";
nl.n_value = 0;
- if(knlist(&nl, 1, sizeof(nl)) != 0)
+ if(knlist(&nl, 1, sizeof(nl)) == 0)
{
if(pread(_kmem, avenrun, sizeof(avenrun), nl.n_value) >= sizeof(avenrun))
{
- info.load1 = avenrun[0] / 65535.0f;
- info.load5 = avenrun[1] / 65535.0f;
- info.load15 = avenrun[2] / 65535.0f;
+ info.load1 = avenrun[0] / 65536.0f;
+ info.load5 = avenrun[1] / 65536.0f;
+ info.load15 = avenrun[2] / 65536.0f;
}
}
}