summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2016-04-22 20:51:04 +0000
committerRobert Mustacchi <rm@joyent.com>2016-06-11 08:23:29 -0700
commit08c359e5adeac56f453e23f78c147189cc0896a6 (patch)
tree234fe9b0145272f2febd63256bab6f54da3aa6e8 /usr/src
parent7de21d7cba3fddc724c51930845ad91d8082e0c7 (diff)
downloadillumos-joyent-08c359e5adeac56f453e23f78c147189cc0896a6.tar.gz
7057 SysV IPC rctls should report usage
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com> Reviewed by: Garrett D'Amore <garrett@damore.org> Approved by: Dan McDonald <danmcd@omniti.com>
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/os/project.c41
-rw-r--r--usr/src/uts/common/os/zone.c40
2 files changed, 73 insertions, 8 deletions
diff --git a/usr/src/uts/common/os/project.c b/usr/src/uts/common/os/project.c
index 7bd3dd963f..d89f62bea7 100644
--- a/usr/src/uts/common/os/project.c
+++ b/usr/src/uts/common/os/project.c
@@ -20,6 +20,7 @@
*/
/*
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2016, Joyent, Inc.
*/
#include <sys/project.h>
@@ -659,6 +660,14 @@ static rctl_ops_t project_tasks_ops = {
*/
/*ARGSUSED*/
+static rctl_qty_t
+project_shmmax_usage(rctl_t *rctl, struct proc *p)
+{
+ ASSERT(MUTEX_HELD(&p->p_lock));
+ return (p->p_task->tk_proj->kpj_data.kpd_shmmax);
+}
+
+/*ARGSUSED*/
static int
project_shmmax_test(struct rctl *rctl, struct proc *p, rctl_entity_p_t *e,
rctl_val_t *rval, rctl_qty_t inc, uint_t flags)
@@ -675,7 +684,7 @@ project_shmmax_test(struct rctl *rctl, struct proc *p, rctl_entity_p_t *e,
static rctl_ops_t project_shmmax_ops = {
rcop_no_action,
- rcop_no_usage,
+ project_shmmax_usage,
rcop_no_set,
project_shmmax_test
};
@@ -685,6 +694,14 @@ static rctl_ops_t project_shmmax_ops = {
*/
/*ARGSUSED*/
+static rctl_qty_t
+project_shmmni_usage(rctl_t *rctl, struct proc *p)
+{
+ ASSERT(MUTEX_HELD(&p->p_lock));
+ return (p->p_task->tk_proj->kpj_data.kpd_ipc.ipcq_shmmni);
+}
+
+/*ARGSUSED*/
static int
project_shmmni_test(struct rctl *rctl, struct proc *p, rctl_entity_p_t *e,
rctl_val_t *rval, rctl_qty_t inc, uint_t flags)
@@ -701,7 +718,7 @@ project_shmmni_test(struct rctl *rctl, struct proc *p, rctl_entity_p_t *e,
static rctl_ops_t project_shmmni_ops = {
rcop_no_action,
- rcop_no_usage,
+ project_shmmni_usage,
rcop_no_set,
project_shmmni_test
};
@@ -711,6 +728,14 @@ static rctl_ops_t project_shmmni_ops = {
*/
/*ARGSUSED*/
+static rctl_qty_t
+project_semmni_usage(rctl_t *rctl, struct proc *p)
+{
+ ASSERT(MUTEX_HELD(&p->p_lock));
+ return (p->p_task->tk_proj->kpj_data.kpd_ipc.ipcq_semmni);
+}
+
+/*ARGSUSED*/
static int
project_semmni_test(struct rctl *rctl, struct proc *p, rctl_entity_p_t *e,
rctl_val_t *rval, rctl_qty_t inc, uint_t flags)
@@ -727,7 +752,7 @@ project_semmni_test(struct rctl *rctl, struct proc *p, rctl_entity_p_t *e,
static rctl_ops_t project_semmni_ops = {
rcop_no_action,
- rcop_no_usage,
+ project_semmni_usage,
rcop_no_set,
project_semmni_test
};
@@ -737,6 +762,14 @@ static rctl_ops_t project_semmni_ops = {
*/
/*ARGSUSED*/
+static rctl_qty_t
+project_msgmni_usage(rctl_t *rctl, struct proc *p)
+{
+ ASSERT(MUTEX_HELD(&p->p_lock));
+ return (p->p_task->tk_proj->kpj_data.kpd_ipc.ipcq_msgmni);
+}
+
+/*ARGSUSED*/
static int
project_msgmni_test(struct rctl *rctl, struct proc *p, rctl_entity_p_t *e,
rctl_val_t *rval, rctl_qty_t inc, uint_t flags)
@@ -753,7 +786,7 @@ project_msgmni_test(struct rctl *rctl, struct proc *p, rctl_entity_p_t *e,
static rctl_ops_t project_msgmni_ops = {
rcop_no_action,
- rcop_no_usage,
+ project_msgmni_usage,
rcop_no_set,
project_msgmni_test
};
diff --git a/usr/src/uts/common/os/zone.c b/usr/src/uts/common/os/zone.c
index c997f8fd8d..1028f9ce3f 100644
--- a/usr/src/uts/common/os/zone.c
+++ b/usr/src/uts/common/os/zone.c
@@ -1486,6 +1486,14 @@ static rctl_ops_t zone_procs_ops = {
};
/*ARGSUSED*/
+static rctl_qty_t
+zone_shmmax_usage(rctl_t *rctl, struct proc *p)
+{
+ ASSERT(MUTEX_HELD(&p->p_lock));
+ return (p->p_zone->zone_shmmax);
+}
+
+/*ARGSUSED*/
static int
zone_shmmax_test(rctl_t *r, proc_t *p, rctl_entity_p_t *e, rctl_val_t *rval,
rctl_qty_t incr, uint_t flags)
@@ -1501,12 +1509,20 @@ zone_shmmax_test(rctl_t *r, proc_t *p, rctl_entity_p_t *e, rctl_val_t *rval,
static rctl_ops_t zone_shmmax_ops = {
rcop_no_action,
- rcop_no_usage,
+ zone_shmmax_usage,
rcop_no_set,
zone_shmmax_test
};
/*ARGSUSED*/
+static rctl_qty_t
+zone_shmmni_usage(rctl_t *rctl, struct proc *p)
+{
+ ASSERT(MUTEX_HELD(&p->p_lock));
+ return (p->p_zone->zone_ipc.ipcq_shmmni);
+}
+
+/*ARGSUSED*/
static int
zone_shmmni_test(rctl_t *r, proc_t *p, rctl_entity_p_t *e, rctl_val_t *rval,
rctl_qty_t incr, uint_t flags)
@@ -1522,12 +1538,20 @@ zone_shmmni_test(rctl_t *r, proc_t *p, rctl_entity_p_t *e, rctl_val_t *rval,
static rctl_ops_t zone_shmmni_ops = {
rcop_no_action,
- rcop_no_usage,
+ zone_shmmni_usage,
rcop_no_set,
zone_shmmni_test
};
/*ARGSUSED*/
+static rctl_qty_t
+zone_semmni_usage(rctl_t *rctl, struct proc *p)
+{
+ ASSERT(MUTEX_HELD(&p->p_lock));
+ return (p->p_zone->zone_ipc.ipcq_semmni);
+}
+
+/*ARGSUSED*/
static int
zone_semmni_test(rctl_t *r, proc_t *p, rctl_entity_p_t *e, rctl_val_t *rval,
rctl_qty_t incr, uint_t flags)
@@ -1543,12 +1567,20 @@ zone_semmni_test(rctl_t *r, proc_t *p, rctl_entity_p_t *e, rctl_val_t *rval,
static rctl_ops_t zone_semmni_ops = {
rcop_no_action,
- rcop_no_usage,
+ zone_semmni_usage,
rcop_no_set,
zone_semmni_test
};
/*ARGSUSED*/
+static rctl_qty_t
+zone_msgmni_usage(rctl_t *rctl, struct proc *p)
+{
+ ASSERT(MUTEX_HELD(&p->p_lock));
+ return (p->p_zone->zone_ipc.ipcq_msgmni);
+}
+
+/*ARGSUSED*/
static int
zone_msgmni_test(rctl_t *r, proc_t *p, rctl_entity_p_t *e, rctl_val_t *rval,
rctl_qty_t incr, uint_t flags)
@@ -1564,7 +1596,7 @@ zone_msgmni_test(rctl_t *r, proc_t *p, rctl_entity_p_t *e, rctl_val_t *rval,
static rctl_ops_t zone_msgmni_ops = {
rcop_no_action,
- rcop_no_usage,
+ zone_msgmni_usage,
rcop_no_set,
zone_msgmni_test
};