diff -upr libgtop-2.8.3.old/sysdeps/solaris/msg_limits.c libgtop-2.8.3.new/sysdeps/solaris/msg_limits.c --- libgtop-2.8.3.old/sysdeps/solaris/msg_limits.c 2004-05-25 10:07:20.000000000 -0700 +++ libgtop-2.8.3.new/sysdeps/solaris/msg_limits.c 2005-07-25 16:52:55.000000000 -0700 @@ -25,6 +25,7 @@ #include #include +#include #include static const struct nlist nlst[] = { {"msginfo"}, {NULL} }; @@ -54,6 +55,7 @@ glibtop_init_msg_limits_p (glibtop *serv void glibtop_get_msg_limits_p (glibtop *server, glibtop_msg_limits *buf) { +#if GLIBTOP_SOLARIS_RELEASE < 510 kvm_t *kd = server->machine.kd; struct msginfo minfo; @@ -75,6 +77,29 @@ glibtop_get_msg_limits_p (glibtop *serve buf->msgmnb = minfo.msgmnb; buf->msgmni = minfo.msgmni; buf->msgtql = minfo.msgtql; - buf->msgpool = minfo.msgmni * minfo.msgmnb >> 10; +#endif + +#if GLIBTOP_SOLARIS_RELEASE >= 510 + rctlblk_t *rblk; + if ((rblk = malloc(rctlblk_size())) == NULL) + return; + + if (getrctl("project.max-msg-qbytes", NULL, rblk, RCTL_FIRST) == -1) + return; + else + buf->msgmnb = rctlblk_get_value(rblk); + + if (getrctl("project.max-msg-ids", NULL, rblk, RCTL_FIRST) == -1) + return; + else + buf->msgmni = rctlblk_get_value(rblk); + + if (getrctl("project.max-msg-messages", NULL, rblk, RCTL_FIRST) == -1) + return; + else + buf->msgtql = rctlblk_get_value(rblk); +#endif + + buf->msgpool = buf->msgmni * buf->msgmnb >> 10; buf->flags = _glibtop_sysdeps_msg_limits; } diff -upr libgtop-2.8.3.old/sysdeps/solaris/sem_limits.c libgtop-2.8.3.new/sysdeps/solaris/sem_limits.c --- libgtop-2.8.3.old/sysdeps/solaris/sem_limits.c 2004-05-25 10:07:20.000000000 -0700 +++ libgtop-2.8.3.new/sysdeps/solaris/sem_limits.c 2005-07-25 17:05:58.000000000 -0700 @@ -25,6 +25,7 @@ #include #include +#include #include static const struct nlist nlst[] = { {"seminfo"}, {NULL} }; @@ -56,6 +57,7 @@ glibtop_init_sem_limits_p (glibtop *serv void glibtop_get_sem_limits_p (glibtop *server, glibtop_sem_limits *buf) { +#if GLIBTOP_SOLARIS_RELEASE < 510 kvm_t *kd = server->machine.kd; struct seminfo sinfo; @@ -81,5 +83,27 @@ glibtop_get_sem_limits_p (glibtop *serve buf->semusz = sinfo.semusz; buf->semvmx = sinfo.semvmx; buf->semaem = sinfo.semaem; +#endif + +#if GLIBTOP_SOLARIS_RELEASE >= 510 + rctlblk_t *rblk; + if ((rblk = malloc(rctlblk_size())) == NULL) + return; + + if (getrctl("process.max-sem-ops", NULL, rblk, RCTL_FIRST) == -1) + return; + else + buf->semopm = rctlblk_get_value(rblk); + + if (getrctl("process.max-sem-nsems", NULL, rblk, RCTL_FIRST) == -1) + return; + else + buf->semmsl = rctlblk_get_value(rblk); + + if (getrctl("project.max-sem-ids", NULL, rblk, RCTL_FIRST) == -1) + return; + else + buf->semmni = rctlblk_get_value(rblk); +#endif buf->flags = _glibtop_sysdeps_sem_limits; } diff -upr libgtop-2.8.3.old/sysdeps/solaris/shm_limits.c libgtop-2.8.3.new/sysdeps/solaris/shm_limits.c --- libgtop-2.8.3.old/sysdeps/solaris/shm_limits.c 2004-10-11 11:01:25.000000000 -0700 +++ libgtop-2.8.3.new/sysdeps/solaris/shm_limits.c 2005-07-25 16:48:39.000000000 -0700 @@ -25,6 +25,7 @@ #include #include +#include #include static const struct nlist nlst[] = { {"shminfo"}, {NULL} }; @@ -57,6 +58,7 @@ glibtop_init_shm_limits_p (glibtop *serv void glibtop_get_shm_limits_p (glibtop *server, glibtop_shm_limits *buf) { +#if GLIBTOP_SOLARIS_RELEASE < 510 kvm_t * const kd = server->machine.kd; struct shminfo sinfo; @@ -72,8 +74,26 @@ glibtop_get_shm_limits_p (glibtop *serve buf->shmmax = sinfo.shmmax; buf->shmmni = sinfo.shmmni; #if GLIBTOP_SOLARIS_RELEASE < 590 - buf->shmmin = sinfo.shmmin; + buf->shmmin = sinfo.shmmin; buf->shmseg = sinfo.shmseg; #endif +#endif + +#if GLIBTOP_SOLARIS_RELEASE >= 510 + rctlblk_t *rblk; + if ((rblk = malloc(rctlblk_size())) == NULL) + return; + + if (getrctl("project.max-shm-memory", NULL, rblk, RCTL_FIRST) == -1) + return; + else + buf->shmmax = rctlblk_get_value(rblk); + + if (getrctl("project.max-shm-ids", NULL, rblk, RCTL_FIRST) == -1) + return; + else + buf->shmmni = rctlblk_get_value(rblk); + +#endif buf->flags = _glibtop_sysdeps_shm_limits; }