谷动谷力

 找回密码
 立即注册
查看: 1783|回复: 0
打印 上一主题 下一主题
收起左侧

Linux开发笔记--驱动开发之ioctl

[复制链接]
跳转到指定楼层
楼主
发表于 2022-11-23 23:07:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Linux开发笔记--驱动开发之ioctl


驱动数据传递

copy_from_user   == write()
copy_to_user     === read()

ioctl 高级控制接口

除了读写之外,设置功能比如设置波特率,数据位,校验
方向性:
        无方向,
        读方向
        写方向

app:对应有xx_ioctl()
long (*unlocked ioctl) struct file *, unisigned int, unsigned long)
long (*unlocked_ioctl) struct file *, unisigned int cmd, unsigned long arg)
long (*compat_ioctl) (struct file *, unsigned int, unsigned long);

struct file *filp 文件属性,只有打开成功
unsigned int cmd 命令值
unsigned long arg 用来读或写的数据参数

标准用法:
cmd:  体现出命令的方向,分成四部分
1 magic:高8位,用来区别不同设备的命令
2 type:        设备命令
3 dir:         传输方向
4 sizeof: 参数大小

设置命令
magic |= 1<<24
type |=  1<<16
linux内核提供一系列的接口函数
_IO(type,nr)        //设置方向的命令
_IOW(type,nr,size)        //设置写方向
_IOR(type,nr,size)        //设置读方向        size变量类型
nr是这个设备的哪个命令
egg
#define MAGIC        'p'
#define XNULL        _IO(MAGIC,5)        //设置方向的命令
#define _IOW(MAGIC,1,char)        //设置写方向
#define _IOR(MAGIC,1,char)        //设置读方向        size变量类型


app应用层调用
ioctl
int ioctl(int d, int cmd , ...)
int d 文件描述符
int cmd 命令

+10
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-11-17 16:42 , Processed in 0.322739 second(s), 40 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表