diff options
author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2016-04-22 20:51:04 +0000 |
---|---|---|
committer | Robert Mustacchi <rm@joyent.com> | 2016-06-11 08:23:29 -0700 |
commit | 08c359e5adeac56f453e23f78c147189cc0896a6 (patch) | |
tree | 234fe9b0145272f2febd63256bab6f54da3aa6e8 /usr/src | |
parent | 7de21d7cba3fddc724c51930845ad91d8082e0c7 (diff) | |
download | illumos-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.c | 41 | ||||
-rw-r--r-- | usr/src/uts/common/os/zone.c | 40 |
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 }; |