// SPDX-ライセンス-識別子:GPL-2.0-のみ / * *著作権(C)2007 IBMコーポレーション * *著者:セドリック・ルGoater <[email protected]> * / 書式#include <linuxの/ nsproxy.h> 書式#include <linuxの/ ipc_namespace.h> 書式#include <linuxの/ sysctl.h> #ifdefのCONFIG_PROC_SYSCTL 静的ボイド* get_mq(構造体ctl_table *表) { char * =卓上>データ; 構造体ipc_namespace * ipc_ns =の電流> nsproxy-> ipc_ns。 これ=(どの - (CHAR *)&init_ipc_ns)+(CHAR *)ipc_ns。 これを返します。 } 静的int型proc_mq_dointvec(構造体ctl_table *テーブル、int型の書き込み、 無効__user *バッファ、size_tの* lenp、loff_t *するPPO) { ctl_table mq_tableをストラクト。 memcpy(&mq_table、テーブル、はsizeof(mq_table))。 mq_table.data = get_mq(表)。 戻りproc_dointvec(&mq_table、書き込み、バッファ、lenp、するPPO)。 } 静的int型proc_mq_dointvec_minmax(構造体ctl_table *テーブル、int型の書き込み、 無効__user *バッファ、size_tの* lenp、loff_t *するPPO) { ctl_table mq_tableをストラクト。 memcpy(&mq_table、テーブル、はsizeof(mq_table))。 mq_table.data = get_mq(表)。 リターンproc_dointvec_minmax(&mq_table、書き込み、バッファ、 lenp、するPPO); } #else #define NULL proc_mq_dointvec #define NULL proc_mq_dointvec_minmax #endifの 静的int型msg_max_limit_min = MIN_MSGMAX。 静的int型msg_max_limit_max = HARD_MSGMAX。 静的int型msg_maxsize_limit_min = MIN_MSGSIZEMAX。 静的int型msg_maxsize_limit_max = HARD_MSGSIZEMAX。 静的構造体ctl_table mq_sysctls [] = { { .procname = "queues_maxが"、 .dataの=&init_ipc_ns.mq_queues_max、 .maxlen =はsizeof(INT) .mode = 0644、 .proc_handler = proc_mq_dointvec、 }、 { .procname = "msg_max"、 .dataの=&init_ipc_ns.mq_msg_max、 .maxlen =はsizeof(INT) .mode = 0644、 .proc_handler = proc_mq_dointvec_minmax、 .extra1 =&msg_max_limit_min、 .extra2 =&msg_max_limit_max、 }、 { .procname = "msgsize_max"、 .dataの=&init_ipc_ns.mq_msgsize_max、 .maxlen =はsizeof(INT) .mode = 0644、 .proc_handler = proc_mq_dointvec_minmax、 .extra1 =&msg_maxsize_limit_min、 .extra2 =&msg_maxsize_limit_max、 }、 { .procname = "msg_default"、 .dataの=&init_ipc_ns.mq_msg_default、 .maxlen =はsizeof(INT) .mode = 0644、 .proc_handler = proc_mq_dointvec_minmax、 .extra1 =&msg_max_limit_min、 .extra2 =&msg_max_limit_max、 }、 { .procname = "msgsize_default"、 .dataの=&init_ipc_ns.mq_msgsize_default、 .maxlen =はsizeof(INT) .mode = 0644、 .proc_handler = proc_mq_dointvec_minmax、 .extra1 =&msg_maxsize_limit_min、 .extra2 =&msg_maxsize_limit_max、 }、 {} }。 静的構造体ctl_table mq_sysctl_dir [] = { { .procname = "mqueueを"、 .mode = 0555、 .child = mq_sysctls、 }、 {} }。 静的構造体ctl_table mq_sysctl_root [] = { { .procname = "FS"、 .mode = 0555、 .child = mq_sysctl_dir、 }、 {} }。 構造体ctl_table_header * mq_register_sysctl_table(無効) { register_sysctl_table(mq_sysctl_root)を返します。 }