ioctl 调用方法

原创 2016年08月28日 14:19:16
说明:当struct DDD的长度何long不对等时,不能简单的类型转换,会导致编译错误。
可以使用 memcpy() 方式拷贝解决。

应用程序:
typedef struct DDD{
int aa;
int bb;
int cc;
}ABC;

ABC abc;

abc.aa = 0x12;
abc.bb = 0x34;
abc.cc = 0x56;

ioctl(fd, 0x98, &abc);


驱动程序方式:
typedef struct DDD{
int aa;
int bb;
int cc;
}ABC;

static struct file_operations aa = {
.unlocked_ioctl = aaaIoctl,
};

static long aaaIoctl(struct file *file, unsigned int cmd, unsigned long arg)
{
ABC *ddd = NULL;
ddd = kmalloc(sizeof(struct DDD), GFP_KERNEL);
memcpy(ddd, (void *)arg, sizeof(struct DDD));
printk(KERN_WARNING "%s cmd:0x%02x, 0x%02x 0x%02x 0x%02x  \n", __func__, cmd, ddd->aa, ddd->bb, ddd->cc);
kfree(ddd);
}

相关文章推荐

Linux 内核与用户空间通信 - netlink使用方法 (不同于 系统调用 和 ioctl)

Linux 内核与用户空间通信 - netlink使用方法 (不同于 系统调用 和 ioctl)
  • ztguang
  • ztguang
  • 2017年04月10日 09:51
  • 196

ioctl 的使用方法详细说明与例子

Talking To Device Files 与设备文件对话 (writes and IOCTLs) 设备文件是用来代表相对应的硬件设备。绝大多数的硬件设备是用来进行输出和输入操作的,所以在内核...

Linux2.6.32驱动笔记(4)ioctl方法解析及mini2440-led驱动实现

摘要: 介绍了字符设备驱动的控制方式——ioctl,同时利用该方式在mini2440上实现led驱动。 驱动中,除了read,write,open,close之外,还有很多的访问方式,其中对...

使用ioctl方法创建字符设备驱动

1  ioctl介绍: 用户空间ioctl :int ioctl(int fd,unsinged long cmd,...) fd-文件描述符 cmd-对设备的发出的控制命令 ...表示这是一...

ioctl方法详解

设备控制接口(ioctl 函数) 回想一下我们在字符设备驱动中介绍的struct file_operations 结构,这里我们将介绍一个新的方法: int (*ioc...

ioctl 参数使用方法-实例+测试

下面的代码可以正常显示吗
  • cyfhan
  • cyfhan
  • 2014年11月08日 17:22
  • 583

linux 驱动程序___高级字符驱动程序___ioctl 方法解读

 ~ ioctl方法 概述 目的: 通过设备驱动程序执行各种类型的硬件控制 用户空间的调用原型:int ioctl(int fd, unsigned long cmd, ...); fd ...

关于构造IOCTL命令的方法

来源:http://www.cnblogs.com/hnrainll/archive/2011/06/21/2086347.html   在编写ioctl代码之前,需要选择对应不同命令的编号。为了防...

LDD3中scull字符设备源代码完全解析(三) ioctl方法

以下是scull源代码中ioctl方法的部分,先整体浏览一下,接着慢慢分析。 int scull_ioctl(struct inode *inode, struct file *filp,unsig...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ioctl 调用方法
举报原因:
原因补充:

(最多只允许输入30个字)