博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android内核sysfs中switch类使用实例
阅读量:5060 次
发布时间:2019-06-12

本文共 1504 字,大约阅读时间需要 5 分钟。

Android内核sysfsswitch类使用实例

 

  最终在这个周末,能够干点自己想要干的事了。

由我这个二流的内核驱动开发人员来解析一下sysfs中的switch类。先猜測一下来历,在普通的嵌入式Linux平台上。通常是各自为战,全然不须要遵循什么规则。在AndroidGoogle定义了一些潜移默化的规范,你能够全然不遵守。

可是依照规则总归是好的。

         先从直观的来看一下/sys/class/switch类中都有些什么吧。

 

        首先能够看到实质是链接到了/sys/device/virtual/switch/文件夹,来看真面目:

 

        这里包括了4个bl是背光;h2w是耳机;hdmihdmi;mic是麦克风 基本都属于外接式的设备,当然也能够不是比方bl。每一个都包括了name/power/state/subsystem/uevent

都能够顾名思义。当中state通常是驱动中提供给用户空间的状态值。

  那就以来做一个switch样例:

 

 

         加入不足20行代码就已经实现了最简的switch了,效果例如以下所看到的:

 

       驱动中能够直接调用switch_set_state来设置不同的状态值。相应地,应用层读取这个就能够实现状态获取。

       本文没有具体去说明switch实现细节,以有用的角度给出了一个完整的样例。

当然假设对实现细节须要有了解的,能够看《》《》。对于“驱动”想要告知用户空间状态的实现就能够採用这个了。

       顺便提一个编译LDD3中驱动样例的小技巧: make KERNELDIR=~/4.2.2_r1/kernel/后边这个是Android内核源代码路径。当然路径中的kernel是要是编译过的。

什么都不须要更改就能够顺利编译了。

附 完整简单样例代码:

/* * $Id: hello.c,v 1.5 2004/10/26 03:32:21 corbet Exp $ */#include 
#include
#include
MODULE_LICENSE("Dual BSD/GPL");struct switch_dev sdev;static int hello_switch(){ int state, ret; sdev.name = "hello"; ret = switch_dev_register(&sdev); if (ret < 0) return ret; state = 0; switch_set_state(&sdev,state); return 0;}static int hello_init(void){ printk(KERN_ALERT "Hello, world\n"); if(hello_switch()) { printk(KERN_ERR "failed to create hello switch\n"); return -ENODEV; } return 0;}static void hello_exit(void){ printk(KERN_ALERT "Goodbye, cruel world\n");}module_init(hello_init);module_exit(hello_exit);

转载于:https://www.cnblogs.com/zsychanpin/p/6803429.html

你可能感兴趣的文章
vue中引入jQuery
查看>>
过滤器
查看>>
HDU5692(线段树+dfs序)
查看>>
MVC引用asp.net报表(测试小例子)
查看>>
写出float x 与“零值”比较的if语句
查看>>
我是MVC菜鸟---MVC的优劣对比
查看>>
iOS性能优化/内存优化常用方法
查看>>
51Nod 1421
查看>>
51Nod 1289 大鱼吃小鱼
查看>>
linux ps查进程 kill关闭进程
查看>>
人月神话读后感2
查看>>
JDOM 创建 XML
查看>>
mysql字符串根据指定字符分割
查看>>
腾讯新闻中心首页改版啦
查看>>
hdu 1022 Train Problem I
查看>>
Ubuntu 各版本的几个国内更新源
查看>>
_019_中断系统调用_终端(皆为粗略)
查看>>
datagridview选中一行属性
查看>>
使用repeater实现gridview的功能
查看>>
Java基础:Java抽象类与接口的区别
查看>>