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. junit4同一时候測试多个測试类

    两个分别须要的測试类 TestSuit001 package com.test.junit; import org.junit.Test; public class TestSuit001 { @Te ...

  2. OpenRisc-50-or1200的freeze模块分析

    引言 之前,我们分析or1200的控制通路中的sprs模块和except模块,本小节,我们就分析一下or1200控制通路的最后一个模块,就是freeze模块. 1,整体分析 freeze模块,顾名思义 ...

  3. Virtualbox mouse move in and out and file share with windows

    How to use Virstalbox to share files with Linux and Windows, and to move the mouse in and out Virtua ...

  4. PHP中如何实现 “在页面中一边执行一边输出” 的效果

    <?php    set_time_limit(0);  //在有关数据库的大量数据的时候,可以将其设置为0,表示无限制.    ob_end_clean();     //在循环输出前,要关闭 ...

  5. 在 Java 项目中解压7Zip特殊压缩算法文件

    1 问题描写叙述 Java Web 后端下载了一个经特殊算法压缩的 zip 文件,由于不能採用 java 本身自带的解压方式,必须採用 7Zip 来解压.所以,提到了本文中在 java web 后端调 ...

  6. 启动和关闭JBoss As 7.1.1脚本

    启动和关闭JBoss As 7.1.1,脚本例如以下djboss.sh: #!/bin/sh #JBOSS_HOME JBOSS_HOME=/opt/jboss case "$1" ...

  7. JSP路径出现故障

    1.错误叙述性说明 2.错误原因 <%@ page language="java" import="java.util.*" pageEncoding=& ...

  8. fastdfs storage server的设计与实现

     fastdfs是一个针对互联网应用设计的分布式文件系统.具有架构简单.结构清晰.代码量小等特点. 详细的介绍及架构请參考分布式文件系统FastDFS架构剖析(http://www.program ...

  9. MSF连环攻击实验

    MSF连续攻击实验 一.实验拓扑 二.实验环境 Windows XP BT 5 32位 三.实验原理 通过扫描 XP主机,利用扫描出的漏洞建立 TCP会话,通过进程的提权,进一步获取目标机的控制权限 ...

  10. Codeforces Round #248 (Div. 1)——Ryouko&#39;s Memory Note

    题目连接 题意: 给n和m,一行m个1<=x<=n的数.记c=.如今仅仅能选择一个数x变成y,序列中全部等于x的值都变成y,求最小的c 分析: 对于一个数x,把与他相邻的所有的非x的数所有 ...