ioctl 调用方法
来源:互联网 发布:java多态的原理 编辑:程序博客网 时间:2024/04/29 12:34
说明:当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 = PilotlabSystemRunLedIoctl,
};
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);
}
可以使用 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 = PilotlabSystemRunLedIoctl,
};
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);
}
1 0
- ioctl 调用方法
- ioctl 调用方法
- ioctl方法
- ioctl方法
- ioctl系统调用
- ioctl系统调用流程
- ioctl系统调用
- ioctl 调用流程
- ioctl的调用流程
- vm ioctl系统调用
- ioctl系统调用
- ioctl调用流程图
- linux 系统调用---ioctl
- ioctl系统调用
- mdp ioctl 调用流程
- ioctl,unlocked_ioctl 处理方法
- ioctl,unlocked_ioctl 处理方法
- ioctl,unlocked_ioctl 处理方法
- 第二部分: Scala 指南: 类操作
- ## c++学习笔记 --基础篇(第一周)##
- 泛型
- Centos 系统swap虚拟内存添加与删除配置
- 2路插入排序
- ioctl 调用方法
- 启动namenode失败:FATAL error
- note
- 编写类String的构造函数、析构函数和赋值函数
- java23抽象类和抽象函数
- NVARCHAR 和VARCHAR区别和使用
- iOS开发(OC)——文字的自适应高度和行间距的设置
- 视频图像处理基础知识2(双线性插值算法公式分析及FPGA实现初步构架)
- 写日志的初衷,从这里开始