
linux内核
xmzzy2012
这个作者很懒,什么都没留下…
展开
-
kobject与kset
参考:http://blog.chinaunix.net/uid-25695950-id-4475182.html https://blog.youkuaiyun.com/lizuobin2/article/details/51511336kobject、kset、ktype是设备模型中的基本机构。kobject基本结构体,kset是某相同kobject集合,ktype是类型。ko...原创 2020-02-22 22:41:01 · 773 阅读 · 0 评论 -
module_init的内核调用顺序
转自:http://blog.chinaunix.net/uid-27664726-id-4243961.html现在以module_init为例分析initcall在内核中的调用顺序在头文件init.h中,有如下定义:#define module_init(x) __initcall(x);#define __initcall(fn) device_i转载 2016-04-11 18:00:46 · 395 阅读 · 0 评论 -
linux内核可变参数分析
typedef char * va_list;/* * Storage alignment properties */#define _AUPBND (sizeof (acpi_native_int) - 1) //acpi_native_int 为4字节(32位)(根据机子字数而定)#define _ADNBND (sizeof (acpi_native_int) - 1)原创 2016-04-12 14:52:02 · 457 阅读 · 0 评论 -
Android Uevent 分析,从kernel到framework
Uevent是内核通知android有状态变化的一种方法,比如USB线插入、拔出,电池电量变化等等。其本质是内核发送(可以通过socket)一个字符串,应用层(android)接收并解释该字符串,获取相应信息。一、Kernel侧:UEVENT的发起在Kernel端,主要是通过函数int kobject_uevent_env(struct kobject *kobj, enum kobj转载 2016-04-12 14:41:45 · 466 阅读 · 0 评论 -
Linux /dev 自动创建设备节点
udev的支持主要作用是:在驱动初始化的代码里调用class_create(...)为该设备创建一个class,再为每个设备调用device_create(...);内核中定义的struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_create(…)函数,可以用它来创建一个类,这个类存放于sysfs下面,一旦创建好了这个类,再转载 2016-02-20 16:24:59 · 747 阅读 · 0 评论 -
Linux中与内核通信的Netlink机制(实例)
Netlink在2.6版本的内核中变化也是很大的,在最新的2.6.37内核中,其定义已经改成下面这种形式,传递的参数已经达到6个。其中第一个参数和mutex参数都是最新添加的。Mutex也可以为空。这里主要是关于内核空间中的netlink函数的使用。externstruct sock *netlink_kernel_create(struct net*net,转载 2015-09-10 11:08:08 · 711 阅读 · 0 评论 -
linux DTS 分析
1、现在实用的内核3.10已经开始实用DTS方法。2、bootloader启动时将加载dtb给内核,内核分析dtb即可知道machine,所以bootloader 不再需要传递设备ID号。例如:/ { compatible = "rockchip,rk3288";//即可知道machine rockchip,sram = ; interrupt-parent = ;\3、#add原创 2015-10-30 18:28:32 · 4088 阅读 · 0 评论 -
Linux内核基础--事件通知链(notifier chain)
http://blog.youkuaiyun.com/wuhzossibility/article/details/8079025内核通知链1.1. 概述 Linux内核中各个子系统相互依赖,当其中某个子系统状态发生改变时,就必须使用一定的机制告知使用其服务的其他子系统,以便其他子系统采取相应的措施。为满足这样的需求,内核实现了事件通知链机制(notification-chain)转载 2015-07-22 15:16:46 · 639 阅读 · 0 评论 -
Linux内存映射(mmap)
转自:http://blog.youkuaiyun.com/hudashi/article/details/7605165一、概述 内存映射,简而言之就是将用户空间的一段内存区域映射到内核空间,映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,同样,内核空间对这段区域的修改也直接反映用户空间。那么对于内核空间用户空间两者之间需要大量数据传输等操作的话效率是非常高的。以下转载 2015-03-31 14:03:03 · 347 阅读 · 0 评论 -
ARM 设备树-device tree
http://blog.youkuaiyun.com/21cnbao/article/details/84575461. ARM Device Tree起源Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的转载 2015-03-03 15:16:55 · 700 阅读 · 0 评论 -
Linux workqueue工作原理
转自:http://bgutech.blog.163.com/blog/static/18261124320116181119889/1. 什么是workqueue Linux中的Workqueue机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程。并且可以根据当前系统CPU的个数创建线程的数量,使得线程处理的事务能够并行化。workque转载 2014-12-29 16:15:37 · 500 阅读 · 0 评论 -
工作队列(workqueue)
项目需要,在驱动模块里用内核计时器timer_list实现了一个状态机。郁闷的是,运行时总报错“Scheduling while atomic”,网上搜了一下:"Scheduling while atomic" indicates that you've tried to sleep somewhere that you shouldn't - like within a spinlo转载 2014-12-24 12:36:27 · 432 阅读 · 0 评论 -
Linux 内核等待队列解析
在阅读Tun驱动时看到,有一些类似 add_wait_queue 的函数,这些函数正是执行等待队列的相关操作,要说等待队列还得从内核进程调度说起,内核调度系统内进程,分配时间片,但是有些进程如从网卡中读数据,在网卡有数据到达之前进程处于阻塞状态,如果此时给相应进程分配时间片做调度,无疑是浪费系统资源,所以系统内每个进程都有自己的状态标志 task->state,这些状态定义于文件 include/原创 2015-01-07 19:45:03 · 449 阅读 · 0 评论