
linux内核学习
文章平均质量分 84
iefswang
Just for memory
展开
-
【转】伙伴系统算法
struct free_area{ struct list_head free_list; /*用于连接某一大小的空闲页框*/ unsigned long *map; /*涉及到上面大小的位图,每两个的对象之间共享一位*/};static struct page *__rmqueue(struct zone *zone,unsigned int o转载 2012-08-22 08:07:56 · 697 阅读 · 0 评论 -
linux-arm中断系统之GIC
这几天长三角爆发禽流感,搞的连菜市场都不敢靠近了,颇有点SARS的架势,我真怀疑上帝是不是个程序猿,造人搞这么多bug,H7N9的driver还没写好吧,害的我们只能不停的打patch,时不时来个oops。今天看了一个专家的解说:"H7N9基因有八节,其中H7的部分是来自浙江的野鸟,N9的部分是来自韩国的野鸟,那么其余的六节相信是来自长江以北",好吧,又是你们韩国。1.“站的高转载 2014-09-05 18:49:37 · 948 阅读 · 0 评论 -
Linux 3.10 ARM Device Tree 的初始化
本文代码均来自标准 linux kernel 3.10,可以到这里下载 https://www.kernel.org/ 以 arch/arm/mach-msm/board-dt-8960.c 为例,在该文件中的 msm_dt_init 函数的作用就是利用 dt(device tree)结构初始化 platform device。点击(此处)折叠或打开sta转载 2014-07-30 10:22:51 · 1081 阅读 · 0 评论 -
打印调试信息的总结 pr_dbug pr_err pr_info
在内核中经常见到一些调试打印信息。pr_原创 2014-06-19 17:46:42 · 36816 阅读 · 1 评论 -
工作队列分析 queue_work
一、用法 struct cpu_workqueue_struct { spinlock_t lock; long remove_sequence; /* Least-recently added (next to run) */ long insert_sequence; /* Next to add */ struct list_head worklist;转载 2014-07-29 09:47:34 · 1979 阅读 · 0 评论 -
内核中的基础知识积累
1、__bitwisetypedef int __bitwise suspend_state_t;原创 2014-05-30 18:41:34 · 2109 阅读 · 0 评论 -
linux内核中操作文件的方法--使用get_fs()和set_fs(KERNEL_DS)
#include linux/kernel.h>#include linux/module.h>#include linux/init.h>#include linux/fs.h>#include linux/string.h>#include linux/mm.h>#include linux/syscalls.h>#include asm/unistd.h>#i原创 2014-06-13 14:37:42 · 6857 阅读 · 0 评论 -
设备树使用手册
设备树使用手册This page walks through how to write a device tree for a new machine. It is intended to provide an overview of device tree concepts and how they are used to describe a machine.本文将介绍如何转载 2014-05-26 17:21:31 · 12152 阅读 · 1 评论 -
linux2.6.36之后对工作队列的改进
linux自从引入工作队列之后,越来越多的工作都交给了它,工作队列有什么优点?有进程上下文?可延迟?是的,这些都是它的优点,但是总不能因为它的这些有限的优势而将所有的工作都交给它来做吧,可是驱动或者子系统的开发者却把它当成了银弹,动不动就create_workqueue,然后随便一个什么小小不言的动作就queue_work,结果呢?结果导致了内核空间充斥了大量的工作队列,这些工作队列的本质是每个工转载 2014-04-22 16:07:33 · 724 阅读 · 0 评论 -
中断注册函数分析总结
#include 。函数原型如下:2.4 内核int request_irq (unsigned int irq, void (*handler)(int, void *, struct pt_regs *), unsigned long frags, const char *device, void *dev_id);2.6 内核request_irq(unsigned原创 2014-04-23 11:49:11 · 4674 阅读 · 0 评论 -
S3C6410使用---34关于中断号与中断引脚
有一个问题:在datasheet中清楚的说明s3c6410一共有64个中断, 但是dm9000的驱动中request_irq()的中断号却是108.如下图所示: cat /proc/interrupts为什么申请出来的中断号是108呢? ?从中断引脚的定义可以看出:#define IRQ_EINT(x) S3C_EINT(x)#define S3C_EI转载 2014-05-08 10:32:19 · 1829 阅读 · 0 评论 -
内核驱动系列--内核调试方法
内核驱动系列--内核调试方法本文主要参考LDD3 第四章及linux设备驱动开发详解(宋宝华)的第22章调试嵌入式内核的方法如下:一、 首先要在编译内核时打开许多调试选项,这样在驱动程序出错时就会打印出尽可能多的调试信息。二、 通过printk, oops, strace, /proc,等进行观察调试(最常用)三、 目标机插桩,如打上KGDB补丁,利用gdb, kgdb工具转载 2014-05-07 19:34:37 · 877 阅读 · 0 评论 -
内核中需要注意的一些基础问题集锦
1. EXPORT_SYMBOLEXPORT_SYMBOL(符号名);EXPORT_SYMBOL_GPL(符号名)导出的符号可以被其他模块使用,不过使用之前一定要声明一下。EXPORT_SYMBOL_GPL()只适用于包含GPL许可权的模块。//hello.c文件,定义2个函数,用于导出#include #include MODULE_LICENSE("Du原创 2014-01-12 22:05:55 · 832 阅读 · 0 评论 -
同步
使用锁和内存栅栏可以实现同步。锁包括读写锁rwlock、brlock(big reader lock)、spinlock、refcnt(引用计数和自旋锁一起应用)以及RCU(read-copy update)。 brlock适用于读者多,写者少的情况。读者开销少,写者开销多。 RCU是也是一种rwlock,八十年代已经出现,在二十世纪九十年代出现了一个比较高效的实现,而在linux原创 2013-08-20 21:00:33 · 711 阅读 · 0 评论 -
Input Core和evdev基本知识 - Kernel3.0.8
目录(?)[+] 1. 基本数据结构和使用示例input_event数据结构如下:[cpp] view plaincopystruct input_event { struct timeval time; __u16 type; __u16 code; __s32 value; }; input_d转载 2014-09-16 15:14:15 · 751 阅读 · 0 评论