Skip to content

Commit

Permalink
OS-6247 expose additional sysvipc sysctls
Browse files Browse the repository at this point in the history
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
Approved by: Patrick Mooney <patrick.mooney@joyent.com>
  • Loading branch information
jjelinek committed Jul 21, 2017
1 parent 2982210 commit b9c30a4
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 1 deletion.
2 changes: 1 addition & 1 deletion usr/src/lib/brand/lx/lx_brand/common/sysv_ipc.c
Original file line number Diff line number Diff line change
Expand Up @@ -579,7 +579,7 @@ lx_msgctl_ipcinfo(int cmd, void *buf)
* in the Linux header file. We're lying, but trying to be
* coherent about it.
*/
m.msgmax = m.msgmnb;
m.msgmax = LX_MSGMAX;
m.msgssz = 16;
msgseg = (m.msgpool * 1024) / m.msgssz;
m.msgseg = (msgseg > 0xffff) ? 0xffff : msgseg;
Expand Down
2 changes: 2 additions & 0 deletions usr/src/uts/common/brand/lx/procfs/lx_proc.h
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,8 @@ typedef enum lxpr_nodetype {
LXPR_SYS_KERNEL_CAPLCAP, /* /proc/sys/kernel/cap_last_cap */
LXPR_SYS_KERNEL_COREPATT, /* /proc/sys/kernel/core_pattern */
LXPR_SYS_KERNEL_HOSTNAME, /* /proc/sys/kernel/hostname */
LXPR_SYS_KERNEL_MSGMAX, /* /proc/sys/kernel/msgmax */
LXPR_SYS_KERNEL_MSGMNB, /* /proc/sys/kernel/msgmnb */
LXPR_SYS_KERNEL_MSGMNI, /* /proc/sys/kernel/msgmni */
LXPR_SYS_KERNEL_NGROUPS_MAX, /* /proc/sys/kernel/ngroups_max */
LXPR_SYS_KERNEL_OSREL, /* /proc/sys/kernel/osrelease */
Expand Down
44 changes: 44 additions & 0 deletions usr/src/uts/common/brand/lx/procfs/lx_prvnops.c
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,8 @@ static void lxpr_read_sys_fs_pipe_max(lxpr_node_t *, lxpr_uiobuf_t *);
static void lxpr_read_sys_kernel_caplcap(lxpr_node_t *, lxpr_uiobuf_t *);
static void lxpr_read_sys_kernel_corepatt(lxpr_node_t *, lxpr_uiobuf_t *);
static void lxpr_read_sys_kernel_hostname(lxpr_node_t *, lxpr_uiobuf_t *);
static void lxpr_read_sys_kernel_msgmax(lxpr_node_t *, lxpr_uiobuf_t *);
static void lxpr_read_sys_kernel_msgmnb(lxpr_node_t *, lxpr_uiobuf_t *);
static void lxpr_read_sys_kernel_msgmni(lxpr_node_t *, lxpr_uiobuf_t *);
static void lxpr_read_sys_kernel_ngroups_max(lxpr_node_t *, lxpr_uiobuf_t *);
static void lxpr_read_sys_kernel_osrel(lxpr_node_t *, lxpr_uiobuf_t *);
Expand Down Expand Up @@ -299,6 +301,7 @@ static int lxpr_write_sys_kernel_corepatt(lxpr_node_t *, uio_t *, cred_t *,
extern rctl_hndl_t rc_process_semmsl;
extern rctl_hndl_t rc_process_semopm;
extern rctl_hndl_t rc_zone_semmni;
extern rctl_hndl_t rc_process_msgmnb;

extern rctl_hndl_t rc_zone_msgmni;
extern rctl_hndl_t rc_zone_shmmax;
Expand Down Expand Up @@ -544,6 +547,8 @@ static lxpr_dirent_t sys_kerneldir[] = {
{ LXPR_SYS_KERNEL_CAPLCAP, "cap_last_cap" },
{ LXPR_SYS_KERNEL_COREPATT, "core_pattern" },
{ LXPR_SYS_KERNEL_HOSTNAME, "hostname" },
{ LXPR_SYS_KERNEL_MSGMAX, "msgmax" },
{ LXPR_SYS_KERNEL_MSGMNB, "msgmnb" },
{ LXPR_SYS_KERNEL_MSGMNI, "msgmni" },
{ LXPR_SYS_KERNEL_NGROUPS_MAX, "ngroups_max" },
{ LXPR_SYS_KERNEL_OSREL, "osrelease" },
Expand Down Expand Up @@ -869,6 +874,8 @@ static void (*lxpr_read_function[LXPR_NFILES])() = {
lxpr_read_sys_kernel_caplcap, /* /proc/sys/kernel/cap_last_cap */
lxpr_read_sys_kernel_corepatt, /* /proc/sys/kernel/core_pattern */
lxpr_read_sys_kernel_hostname, /* /proc/sys/kernel/hostname */
lxpr_read_sys_kernel_msgmax, /* /proc/sys/kernel/msgmax */
lxpr_read_sys_kernel_msgmnb, /* /proc/sys/kernel/msgmnb */
lxpr_read_sys_kernel_msgmni, /* /proc/sys/kernel/msgmni */
lxpr_read_sys_kernel_ngroups_max, /* /proc/sys/kernel/ngroups_max */
lxpr_read_sys_kernel_osrel, /* /proc/sys/kernel/osrelease */
Expand Down Expand Up @@ -1018,6 +1025,8 @@ static vnode_t *(*lxpr_lookup_function[LXPR_NFILES])() = {
lxpr_lookup_not_a_dir, /* /proc/sys/kernel/cap_last_cap */
lxpr_lookup_not_a_dir, /* /proc/sys/kernel/core_pattern */
lxpr_lookup_not_a_dir, /* /proc/sys/kernel/hostname */
lxpr_lookup_not_a_dir, /* /proc/sys/kernel/msgmax */
lxpr_lookup_not_a_dir, /* /proc/sys/kernel/msgmnb */
lxpr_lookup_not_a_dir, /* /proc/sys/kernel/msgmni */
lxpr_lookup_not_a_dir, /* /proc/sys/kernel/ngroups_max */
lxpr_lookup_not_a_dir, /* /proc/sys/kernel/osrelease */
Expand Down Expand Up @@ -1167,6 +1176,8 @@ static int (*lxpr_readdir_function[LXPR_NFILES])() = {
lxpr_readdir_not_a_dir, /* /proc/sys/kernel/cap_last_cap */
lxpr_readdir_not_a_dir, /* /proc/sys/kernel/core_pattern */
lxpr_readdir_not_a_dir, /* /proc/sys/kernel/hostname */
lxpr_readdir_not_a_dir, /* /proc/sys/kernel/msgmax */
lxpr_readdir_not_a_dir, /* /proc/sys/kernel/msgmnb */
lxpr_readdir_not_a_dir, /* /proc/sys/kernel/msgmni */
lxpr_readdir_not_a_dir, /* /proc/sys/kernel/ngroups_max */
lxpr_readdir_not_a_dir, /* /proc/sys/kernel/osrelease */
Expand Down Expand Up @@ -4542,6 +4553,39 @@ lxpr_read_sys_kernel_hostname(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf)
lxpr_uiobuf_printf(uiobuf, "%s\n", uts_nodename());
}

/* ARGSUSED */
static void
lxpr_read_sys_kernel_msgmax(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf)
{
/*
* We don't have an rctl for this. See our definition for LX_MSGMAX
* in the user-level emulation library. Once that code moves into
* the kernel, we can use a common definition. This matches the
* value on Linux.
*/
uint_t val = 8192;

ASSERT(lxpnp->lxpr_type == LXPR_SYS_KERNEL_MSGMAX);

lxpr_uiobuf_printf(uiobuf, "%u\n", val);
}

/* ARGSUSED */
static void
lxpr_read_sys_kernel_msgmnb(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf)
{
rctl_qty_t val;
proc_t *pp = curproc;

ASSERT(lxpnp->lxpr_type == LXPR_SYS_KERNEL_MSGMNB);

mutex_enter(&pp->p_lock);
val = rctl_enforced_value(rc_process_msgmnb, pp->p_rctls, pp);
mutex_exit(&pp->p_lock);

lxpr_uiobuf_printf(uiobuf, "%u\n", (uint_t)val);
}

/* ARGSUSED */
static void
lxpr_read_sys_kernel_msgmni(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf)
Expand Down

0 comments on commit b9c30a4

Please sign in to comment.