ioctl经营无纸装置频繁使用的类型。同时这是一个非常实用的方法进程调试。

这里正在进行wdt该文章继续

static long at91_wdt_ioctl(struct file *file,

unsigned int cmd, unsigned long arg)

{

void __user *argp = (void __user *)arg;

int __user *p = argp;

int new_value;





switch (cmd) {

case WDIOC_GETSUPPORT:

return copy_to_user(argp, &at91_wdt_info,

sizeof(at91_wdt_info)) ? -EFAULT : 0;

case WDIOC_GETSTATUS:

case WDIOC_GETBOOTSTATUS:

return put_user(0, p);

case WDIOC_SETOPTIONS:

if (get_user(new_value, p))

return -EFAULT;

if (new_value & WDIOS_DISABLECARD)

at91_wdt_stop();

if (new_value & WDIOS_ENABLECARD)

at91_wdt_start();

return 0;

case WDIOC_KEEPALIVE:

at91_wdt_reload();
/* pat the watchdog */

return 0;

case WDIOC_SETTIMEOUT:

if (get_user(new_value, p))

return -EFAULT;

if (at91_wdt_settimeout(new_value))

return -EINVAL;

/* Enable new time value */

at91_wdt_start();

/* Return current value */

return put_user(wdt_time, p);

case WDIOC_GETTIMEOUT:

return put_user(wdt_time, p);

default:

return -ENOTTY;

}

}

这里先定义两个一个最底层的被调用接口。在这里面初始化了几个命令,这些命令就能够直接调用你自己的底层函数了

之后面临的就是怎么让这个ioctl被上层可一调用

这里有一个系统设置的结构体

static const struct file_operations at91wdt_fops = {

.owner
= THIS_MODULE,

.llseek
= no_llseek,

.unlocked_ioctl
= at91_wdt_ioctl,

.open = at91_wdt_open,

.release
= at91_wdt_close,

.write
= at91_wdt_write,

};

把ioctl赋给unlocked

再把这个结构体赋给miscdevice结构体   这里就能够看出来他是一个杂项设备  不是block  或者字符设备了

static struct miscdevice at91wdt_miscdev = {

.minor
= WATCHDOG_MINOR,

.name = "watchdog",

.fops = &at91wdt_fops,

};

这里再把它注冊给系统就好了

static int __devinit at91wdt_probe(struct platform_device *pdev)

{

int res;





if (at91wdt_miscdev.parent)

return -EBUSY;

at91wdt_miscdev.parent = &pdev->dev;





res = misc_register(&at91wdt_miscdev);

if (res)

return res;





printk(KERN_INFO "AT91 Watchdog Timer enabled (%d seconds%s)\n",

wdt_time, nowayout ?

", nowayout" : "");

return 0;

}

上面就是这个设备备注測时的调用   能够看到開始就把这个ioctl的父结构体赋给系统了

后面系上层系统将能够看到的功能    它可以通过驱动前来层

版权声明:本文博主原创文章,博客,未经同意不得转载。

kernel 于ioctl申请书的更多相关文章

  1. 【转】wpa_supplicant与wpa_cli之间通信过程

    [转]wpa_supplicant与wpa_cli之间通信过程 转自:http://blog.chinaunix.net/uid-26585427-id-4051479.html wpa_suppli ...

  2. Linux Communication Mechanism Summarize

    目录 . Linux通信机制分类简介 . 控制机制 0x1: 竞态条件 0x2: 临界区 . Inter-Process Communication (IPC) mechanisms: 进程间通信机制 ...

  3. linux2.6内核compat_ioctl函数

    一.内核原型(linux2.6.28-7) long (*compat_ioctl)(struct tty_struct *tty, struct file * file,               ...

  4. wpa_supplicant软件架构分析

    wpa_supplicant软件架构分析 1. 启动命令 wpa supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下: wpa_supplicant /system/bi ...

  5. wpa_supplicant 使用

    (1)通过adb命令行,可以直接打开supplicant,从而运行wpa_cli,可以解决客户没有显示屏而无法操作WIFI的问题,还可以避免UI的问题带到driver.进一步来说,可以用在很多没有键盘 ...

  6. wap_supplicant介绍

    目前可以使用wireless-tools 或wpa_supplicant工具来配置无线网络.请记住重要的一点是,对无线网络的配置是全局性的,而非针对具体的接口. wpa_supplicant是一个较好 ...

  7. WEXT driver的执行过程实现(iwpriv部分/softapcontroller)

    之前在看wifi driver源代码时一直有一个疑惑就是net dev的wireless_handlers中(WEXT类型的接口)提供两个iw_handler接口,怎么知道上层是调用的是private ...

  8. android摄像头(camera)之buffer管理

    一,V4L2驱动申请buffer 视频应用可以通过两种方式从V4L2驱动申请buffer 1. V4L2_MEMORY_USERPTR方式, 顾名思义是用户空间指针的意思,应用层负责分配需要的内存空间 ...

  9. unlocked_ioctl和compat_ioctl

    参考: https://www.cnblogs.com/super119/archive/2012/12/03/2799967.html https://lwn.net/Articles/119652 ...

随机推荐

  1. Java时间比較

    Date类有两个方法 一个是after()比方date1.after(date2)推断date1是否在date2之后也就是说date1小于date2吧, 一个是before()比方date1.befo ...

  2. C语言实现通讯录

    <span style="font-size:18px;">#include<stdio.h> #include<string.h> #incl ...

  3. 给一个非常长的字符串str 另一个字符集比方{a,b,c} 找出str 里包括{a,b,c}的最短子串。要求O(n)

    给一个非常长的字符串str 另一个字符集比方{a,b,c} 找出str 里包括{a,b,c}的最短子串.要求O(n). 比方,字符集是a,b,c,字符串是abdcaabcx,则最短子串为abc. 设置 ...

  4. aix 下 实现goldengate 随os启动而自己主动启动的脚本

    aix 下 实现goldengate 随os启动而自己主动启动的脚本: 1.用oracle用户建立/u01/info.txt,文件内容例如以下: sh date start mgr 2.chmod + ...

  5. zzu--2014年11月16日月潭赛 B称号

    1229: Rational Resistance Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 8  Solved: 4 [id=1229" ...

  6. 备份恢复与CRM集成的sharepoint站点

    在部署CRM与Sharepoint2010集成文档管理之后,一直担心如果需要在新服务器上重新部署CRM, 那么之前与CRM集成的Sharepoint2010文档内容,是否可以重新正确映射到相应的文档位 ...

  7. ESXI主机打开shell后主机警告处理

    昨天为了配置snmp监控,将几台ESXI 5.5主机的shell 在控制台上从disable状态修改为enable状态后,登陆vcenter后,发现所有的主机都有警告. 处理过程如下: 选中有警告标志 ...

  8. ZooKeeper场景实践:(2)集中式配置管理

    1. 基本介绍 在分布式的环境中,可能会有多个对等的程序读取相同的配置文件,程序能够部署在多台机器上,假设配置採用文件的话,则须要为部署该程序的机器也部署一个配置文件,一旦要改动配置的时候就会很麻烦, ...

  9. 用XAML做网页!!—广告展示区

    原文:用XAML做网页!!-广告展示区 此次我们来进行广告展示区块的制作. 首先在Show区块中去掉原来设置的背景色,加入新的渐变背景设定: <Grid.Background> <L ...

  10. 在ubuntu安装Phabricator(转)

    前言: Phabricator是facebook团队进行codereview的一个工具,是基于php进行开发的.界面简洁优雅,是团队做代码评审的好帮手.个人认为,是当前最好的code review平台 ...