Linux用户态和内核态通信

这篇博客探讨了Linux环境下用户态与内核态的通信方式,主要通过ioctl机制创建设备文件并提供操作接口,procFS允许直接读写proc文件,以及使用netlink进行通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux环境下用户态和内核态通信机制主要有:ioctl、procFS和netlink,下面分别对各种实现进行简要分析。

1、ioctl

在内核态创建设备文件,并提供read、write和ioctl等操作接口,

1)内核态部分

#define DEV_NAME "usr"
static struct cdev usr_cdev;
static dev_t usr_dev_num;

static struct class *usr_class;
static struct device *usr_dev;

enum E_DEV_CMD
{
    ADD_USER	= 0x2201,
    DEL_USER	= 0x2202
};


static int usr_dev_open(struct inode *node, struct file * fd)
{
	return RET_OK;
}

static int usr_dev_close(struct inode *node, struct file * fd)
{
	return RET_OK;
}

static long usr_dev_ioctl(struct file *fd, unsigned int cmd, unsigned long arg)
{
	int ret = 0;

	switch (cmd)
	{
	case ADD_USER:
		{
			usr_info_t user_info;
			usr_info_t __user *UserSpaceInfo =  (usr_info_t __user *) arg;

			if (UserSpaceInfo == NULL)
			{
				ret = -EINVAL;
				break;
			}

			if (copy_from_user(&user_info, UserSpaceInfo, sizeof(usr_info_t)))
			{
				ret = -EFAULT;
				break;
			}

			ret 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值