首页 > 其他分享 >IOCTL

IOCTL

时间:2024-10-18 14:19:27浏览次数:3  
标签:SET CHENNEL CMD IOCTL ioctl 设置 应用层

1.ioctl函数内部实现

ioctl函数内部实现功能,依靠已经设置好的宏命令CMD_SET_CHENNEL,和应用层传进来的宏匹配,是对应的宏就执行对应的操作,这样的内部宏可以设置非常多种,宏也有自己的定义方式下面有说明。

在应用层调用时,自己设置设备数(也叫幻数)  'x',设备编号SET_CHANNEL为1,又自己定义一个宏,CMD_SET_CHENNEL 这个宏就是内核头文件中宏,和我们传进去的cmd进行匹配

下面的宏就是一个宏的生成器,将自己设置的设备树,命令编号,大小,传进去就会生成一个唯一的宏,方向是选择哪儿宏,IO/IOR/IOW/IOWR  只读只写读写

标签:SET,CHENNEL,CMD,IOCTL,ioctl,设置,应用层
From: https://blog.csdn.net/2201_75286049/article/details/142998448

相关文章

  • Linux驱动开发之ioctl控制定时器并实现任意整数级秒计时器
    在IO模型中,I和O分别代表系统的输入和输出,在计算机中可以直观地理解为输入设备和输出设备,例如鼠标、键盘、显示器等。由于Linux中运行于用户空间的应用程序不能直接对硬件进行操作,需要应用程序向操作系统内核发起调用,将进程切换到内核空间,才能进行IO操作。IO模型根据功能不同......
  • 驱动 ioctl使用
     驱动程序部分创建一个简单的字符设备驱动程序。#include<linux/module.h>#include<linux/fs.h>#include<linux/uaccess.h>#include<linux/cdev.h>#include<linux/device.h>#defineDEVICE_NAME"mychardev"#defineCLASS_NAME"mycharclas......
  • mumu模拟器 adb shell 登录后执行命令 Inappropriate ioctl for device
    前言全局说明mumu模拟器adbshell登录后执行命令Inappropriateioctlfordevice一、说明二、问题执行任何命令,都提示:Inappropriateioctlfordevice三、解决方法方法一:执行过sudo或su重新登录方法二:退出,执行adbroot后再执行adbshell登录四、......
  • 16_ioctl接口
    ioctl接口structfile_operations{ ...... long(*unlocked_ioctl)(structfile*,unsignedint,unsignedlong); ......};1.什么是unlocked_ioctl接口?​unlocked_ioctl就是ioctl接口,但是功能和对应的系统调用均没有发生变化。2.unlocked_ioctl和read/write函......
  • Linux 64位内核(arm64)驱动兼容32位应用程序(armhf)的ioctl接口
    最近,公司来了一次硬件升级,开发平台从全志T3(armhf)升级到全志T527(arm64),平台迁移后,想直接使用原来动态库和应用程序从而减少开发量,用户态大部分接口都运行正常,唯独ioctl接口无法调用成功。如果要成功移植要做到以下几点:1.驱动要同时实现unlocked_ioctl和compat_ioctl。str......
  • V4L2 ioctl调用流程分析
    学习资料:韦东山第三期 可参考:https://www.cnblogs.com/lethe1203/p/18097351video_device->.fops->v4l2_file_operations->.ioctl_ops->v4l2_ioctl_opsv4l2_ioctl_ops可分为两类:INFO_FL_STD:标准的,无需特殊的代码来处理,APP的调用可以直达这些处理函数I......
  • linux 驱动 --- unlocked_ioctl 与 compat_ioctl
    1、compat_ioctl:支持64bit的driver必须要实现的ioctl,当有32bit的userspaceapplicationcall64bitkernel的IOCTL的时候,这个callback会被调用到。如果没有实现compat_ioctl,那么32位的用户程序在64位的kernel上执行ioctl时会返回错误:Notatypewriter2、如果是64位的用户程序运行......
  • istioctl 部署 istio
    istio架构:1、下载istio安装包[root@master1~]#curl-Lhttps://istio.io/downloadIstio|ISTIO_VERSION=1.8.2TARGET_ARCH=x86_64sh-2、移动istioctl到/usr/bin目录下[root@master1~]#cpistio-1.8.2/bin/istioctl/usr/bin3、查看istio可用配置列表[root@master1......
  • ioctl基于接口 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/driver-api/ioctl.htmlioctl基于接口ioctl()是应用程序与设备驱动程序进行接口交互的最常见方式。它灵活且易于通过添加新命令进行扩展,并且可以通过字符设备、块设备以及套接字和其他特殊文件描述符进行传递。然而,很容易错误地定义ioct......
  • 使用Rust语言进行ioctl
    首先需要引入nix库官方crate地址为:https://crates.io/crates/nix在里面可以查看文档和版本信息。nix里面有个nix::sys::ioctl模块,类似于C标准库的ioctl.h,用来进行ioctl操作。使用方法:修改Cargo.toml[dependencies]nix="0.27"代码对应......