解釈のIPC mq_sysctl.cソース

// 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)を返します。
}

  

おすすめ

転載: www.cnblogs.com/still-smile/p/12040609.html