drip
文章平均质量分 57
henry-aling
share for fun
展开
-
内核打印杂谈
内核打印基本规则 dev_info(): 启动过程、或者模块加载过程等“通知类的”信息等,一般只会通知一次,例如probe函数; dev_dbg(): 一般使用在普通错误,如-EINVAL、-ENOMEM等errno发生处,用于调试; dev_err(): 一般使用在严重错误,尤其是用户无法得到errno的地方,或者程序员不容易猜测系统哪里出了问题的地方;打印dev_dbg A) dyn原创 2016-07-22 23:42:12 · 547 阅读 · 0 评论 -
kernel I2C总线驱动
I2C总线驱动I2C体系结构I2C核心 提供I2C总线驱动和设备驱动的注册、注销方法I2C总线驱动 是对I2C硬件体系结构中适配器端的实现I2C设备驱动 是对I2C硬件体系结构中设备端的实现,设备一般挂接在受CPU控制的I2C适配器上,通过I2C适配器与CPU交换数据原创 2016-09-10 23:35:59 · 361 阅读 · 0 评论 -
kernel 网络驱动
网络设备网络驱动结构从上到下划分4层:网络协议接口层 使上层协议独立于具体设备网络设备接口层 向协议接口层提供统一的用于描述具体网络设别属性和操作的结构体 net_device设备驱动功能层(提供实际功能) net_device 的具体成员网络设备与媒介层 完成数据包发送和接收的物理实体网络设备初始化硬件准备工作,检查设备是否存在和硬件资源对 net_device 数据和函数指原创 2016-09-10 23:25:06 · 833 阅读 · 0 评论 -
kernel 异步
异步一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询状态用户空间处理一个设备释放的信号的三项工作:/* specify handler for signal */signal(SIGIO, input_handler);/* current process owns this fd */fcntl(STDIN_FILENO, F_SETOWN, getpid());/* launc原创 2016-08-02 22:45:27 · 428 阅读 · 0 评论 -
Linux内核 kmalloc, kzalloc & devm_kzalloc 区别
首先,kzalloc()实现了kmalloc()+memset()的功能 源码如下: static inline void *kzalloc(size_t size, gfp_t flags) { return kmalloc(size, flags | __GFP_ZERO); }而 devm_kzalloc() 是具有资源管理的 kzalloc()。使用资源管理(res原创 2016-02-22 00:21:19 · 9281 阅读 · 0 评论 -
kernel 中断
中断中断分 向量中断 和 非向量中断向量中断由硬件提供中断服务程序入口地址非向量中断由软件提供中断服务程序入口地址程序架构top half: 紧急的硬件操作(调度 bottom half),不可中断bottom half: 延缓的耗时操作,可响应新的中断request & freeflags若设置 IRQF_SHARED ,则表示多个设备共享中断使能和屏蔽中断disable_irq_no原创 2016-08-09 22:05:57 · 624 阅读 · 0 评论 -
kernel 阻塞
等待队列wake_up() 可唤醒处于 TASK_INTERRUPTIBLE 和 TASK_UNINTERRUPTIBLE 的进程; wake_up_interruptible() 只能唤醒处于 TASK_INTERRUPTIBLE 的进程static ssize_t xx_write(struct file *filp, const char __user *buf, size_t s原创 2016-08-01 23:30:40 · 344 阅读 · 0 评论 -
kernel 内存 I/O
内存 I/O内存管理单元MMU辅助操作系统进行内存管理,提供虚拟地址和物理地址的映射、内存访问权限保护和cache缓存控制等硬件支持TLB(translation lookaside buffer):转换旁路缓存,TLB是MMU的核心部件,它缓存少量的虚拟地址与物理地址的转换关系,是转换表的cacheTTW(translation table walk):转换表漫游,当TLB中没有缓冲对应的地址转换原创 2016-08-09 22:07:10 · 545 阅读 · 0 评论 -
poll 机制
poll mechanism1. (user space) poll >> sys_poll > >do_sys_poll >>poll_initwaitfs/select.c文件中asmlinkage long sys_poll(struct pollfd __user *ufds, unsigned int nfds, long timeout_msecs){ ... ret原创 2016-07-23 17:20:18 · 367 阅读 · 0 评论 -
内核竞态同步机制
编译乱序代码中设置barrier()屏障,可以阻挡编译器的优化,保证屏障前的语句和屏障后的语句不串序#define barrier() __asm__ __volatile__("": : :"memory") 其中volatile关键字更多的只是避免内存访问行为的合并,对C编译器而言,volatile是暗示除了当前的执行线索以外,其他的执行线索也可能改变某内存,所以它的含义是“易变的”执原创 2016-07-29 22:03:27 · 564 阅读 · 0 评论 -
如何生成i文件(预处理文件)
Makefile 内核编译生成预处理文件module_name-y := xxx_drv.o xxx_drv.i xxx_drv.i 即预处理文件原创 2016-07-23 11:58:10 · 4762 阅读 · 0 评论 -
Cryptographic Chaining Mode
Cipher ChainingECB(electronic codebook) mode原创 2017-08-03 08:15:20 · 530 阅读 · 0 评论