[linux内核]
xgbing
专注于嵌入式方向的软硬件设计与开发(ASM\C\C++,RTOS,Linux,android,以太网\嵌入式网络协议栈,蓝牙,WIFI,文件系统/嵌入式存储,显示\音频,单片机\DSP\ARM\Cortex,电路设计\PCB布板\硬件驱动\数字逻辑CPLD,FPGA\niosII),目前从事VirtualBox\qemu\KVM虚拟化研究工作。
展开
-
内核参数列表
内核参数列表(环境:Linuxlocalhost2.6.9-67.ELsmp)(整理日期:2010-3-10)一、调整内核参数的方法:a)在运行期间调整1、可以用echo“valule”>/proc/sys/内核核文件的方法调整系统内核的参数,运行的时候是存放在/proc/sys下的各个目录下,每个参数对应一个文件,可以用echo来修改它,但是重启系统后参数将丢失。2、也可以使用sysctl–wvariable=value来设置参数的值b)设置到文...转载 2020-07-29 16:41:00 · 2571 阅读 · 0 评论 -
drivers/mfd/Mfd-core.c
mfd: multifunction device drivers---多功能设备驱动开发;A product or device that has multiple functions. An example of this might be a printer that also makes copies, faxes, and scans. Another example is a CD o原创 2016-04-23 19:44:48 · 2627 阅读 · 0 评论 -
在/sys/中创建设备子设备目录
在drivers/base下的platform.c中:struct device platform_bus = { .init_name = "platform",};注意它是一个struct device结构类型,它是所有设备的根目录。这是在s5p4418中display.c中的一段代码:struct kobject *kobj = NULL;/* create attribute in原创 2016-05-17 14:03:38 · 3357 阅读 · 1 评论 -
SIMPLE_DEV_PM_OPS宏
pm.h有一个宏SIMPLE_DEV_PM_OPS:#define SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \const struct dev_pm_ops name = { \ SET_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \}再看SET_SYSTEM_SLEEP_PM_OPS和dev_原创 2016-05-06 11:13:05 · 9900 阅读 · 0 评论 -
电源管理芯片nxe2100驱动
nxe2100芯片是nxe2000的升级芯片,它提供5个DCDC,10个LDO,2个LDORTC。 High Efficiency Step-down DC/DC Converters* DCDC1 -3 0.6V-3.5V Max 3000mA* DCDC4-5 0.6V-3.5V Max 2000mA* Soft-start circuit●Low Drop Voltage Regula原创 2016-04-27 18:29:15 · 3568 阅读 · 0 评论 -
/sys/power/state
kernel/power/main.c中:/** * state - control system power state. * * show() returns what states are supported, which is hard-coded to * 'standby' (Power-On Suspend), 'mem' (Suspend-to-RAM), and * '原创 2016-03-21 22:07:56 · 6653 阅读 · 0 评论 -
/sys/power创建
kernel/power/main.c代码:power_attr定义:#define power_attr(_name) \static struct kobj_attribute _name##_attr = { \ .attr = { \ .name = __stringify(_name), \ .mode = 0644, \ }, \ .show = _n原创 2016-03-21 20:51:43 · 2686 阅读 · 0 评论 -
内核链表list.h---把函数功能记下来,不用忘记了每次都要分析代码
文件中描述的是一个双向链表的定义和操作。(1)结构定义和初始化struct list_head { struct list_head *next, *prev;};//每个链表有一个head,它是一个开始标志,链表的第一个元素是head->next#define LIST_HEAD_INIT(name) { &(name), &(name) }#define原创 2014-02-19 00:06:44 · 2249 阅读 · 0 评论 -
try_module_get和module_put
try_module_get使模块的引用计数加1,当rmmod调用时,会检查这个引用计数,当计数为0时才会删除模块。static inline int try_module_get(struct module *module){ int ret = 1; if (module) { preempt_disable(); if (likely(module_is_live(modu原创 2016-03-29 22:26:15 · 1185 阅读 · 0 评论 -
linux gpio export
linux提供了一系列的函数来操作GPIO,看下面的代码: int io_out, in_in; //定义一个输出IO和一个输入IO io_out = GPIO_TO_PIN(1, 16); io_in = GPIO_TO_PIN(1, 17); gpio_request(io_out, "gpio_out"); //申请IO gpio_request(io_in,原创 2016-03-29 21:59:23 · 10495 阅读 · 1 评论 -
内核工作队列workqueue
LDD3: 工作队列是, 表面上看, 类似于 taskets; 它们允许内核代码来请求在将来某个时间调用一个函数. 但是, 有几个显著的不同在这 2 个之间, 包括:(1) tasklet 在软件中断上下文中运行的结果是所有的 tasklet 代码必须是原子的. 相反, 工作队列函数在一个特殊内核进程上下文运行; 结果, 它们有更多的灵活性. 特别地, 工作队列函数能够睡眠.(2) tasklet原创 2015-09-07 22:12:30 · 2690 阅读 · 1 评论