linux内核相关
文章平均质量分 77
paomadi
这个作者很懒,什么都没留下…
展开
-
linux系统调用
一.声明系统调用的相关宏1.SYSCALL_DEFINE1~6#define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__)#define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__)#define SYSCA原创 2013-01-31 12:43:49 · 2946 阅读 · 0 评论 -
网卡从24c02获取设置mac地址
#include #include #include unsigned char mac_read(unsigned char command){ int ret; unsigned char buf; struct i2c_adapter *a = i2c_get_adapter(1); struct i2c_msg msg[2] = { { .addr = 0原创 2013-03-22 14:02:19 · 2830 阅读 · 0 评论 -
idr机制(32叉树)
一.结构体1.idr结构体struct idr { struct idr_layer __rcu *top; //idr_layer顶层,32叉树的根 struct idr_layer *id_free; //指向idr_layer的空闲链表 int layers; //idr_layer的层数量 int id_free_cnt; //idr_layer空闲链表中剩余的原创 2013-01-26 10:43:48 · 7553 阅读 · 5 评论 -
MACHINE_START MACHINE_END 宏
一、定义#define MACHINE_START(_type,_name) \ //板类型,板名字static const struct machine_desc __mach_desc_##_type \ __used \ __attribute__((__section__(".arch.info.init"))) = { \ .nr = MACH_TYPE_##原创 2013-02-26 09:13:45 · 2456 阅读 · 0 评论 -
linux 中断机制浅析
一、中断相关结构体1.irq_desc中断描述符struct irq_desc {#ifdef CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED struct irq_data irq_data;#else union { struct irq_data irq_data; //中断数据 struct { unsigned int irq;原创 2013-03-27 09:26:43 · 4518 阅读 · 1 评论 -
list_for_each_entry宏
1.list_for_each_entry宏的定义#define list_for_each_entry(pos, head, member) \ for (pos = list_entry((head)->next, typeof(*pos), member); \ prefetch(pos->member.next), &pos->member != (head);原创 2013-01-16 11:51:25 · 2962 阅读 · 0 评论 -
linux等待队列
一.头文件#include 二.结构体1.等待队列头struct __wait_queue_head { spinlock_t lock; struct list_head task_list;};typedef struct __wait_queue_head wait_queue_head_t;2.等待队列struct __wait_queue {原创 2013-01-16 10:12:18 · 3396 阅读 · 0 评论 -
linux通知链相关
一.头文件#include 二.结构体//通知块 struct notifier_block { int (*notifier_call)(struct notifier_block *, unsigned long, void *); //回调函数 struct notifier_block __rcu *next; //指向通知链表的下一项 int priority原创 2013-01-15 21:45:31 · 2456 阅读 · 0 评论 -
三 printk如何打印信息
printk的定义可变参数 参考va_list,va_start,va_arg,va_end可变参数asmlinkage int printk(const char *fmt, ...){ va_list args; //可变参数链表 int r;#ifdef CONFIG_KGDB_KDB if (unlikely(kdb_trap_printk)) { v原创 2013-01-29 23:24:12 · 2672 阅读 · 0 评论 -
一 uboot传递参数'console=ttyXXX'的作用
linux启动时uboot传递进console=ttyS0,115200n8的参数内核中用__setup()宏声明参数处理的方法关于__setup宏参考 early_param和__setup宏__setup("console=", console_setup);console_setup函数处理1.console_cmdline结构体struct console_cm原创 2013-01-29 23:23:22 · 4832 阅读 · 0 评论 -
二 console 设备驱动
一.结构体1.consolestruct console { char name[16]; //console名 void (*write)(struct console *, const char *, unsigned); //写方法 int (*read)(struct console *, char *, unsigned); //读方法 struct tty_d原创 2013-01-29 23:23:51 · 3146 阅读 · 1 评论 -
container_of宏
一. 作用struct XXX_dev{ cdev cdev;}struct XXX_dev *dev; /* device information */ *dev = container_of(inode->i_cdev, struct XXX_dev, cdev); 结构体对象 域原创 2012-12-19 14:54:48 · 1738 阅读 · 0 评论 -
linux性能监视和调试工具 top 25
Top 25 Best Linux Performance Monitoring and Debugging ToolsI’ve compiled 25 performance monitoring and debugging tools that will be helpful when you are working on Linux environment. This list is n翻译 2012-12-17 20:31:21 · 2456 阅读 · 0 评论 -
early_param和__setup宏
一.宏的定义在/include/linux/Init.h中#define __setup(str, fn) \ __setup_param(str, fn, fn, 0) #define early_param(str, fn) \__setup_param(str, fn, fn, 1)两个宏都会调用__setup_param跟踪进__setup_p原创 2013-01-23 15:53:23 · 2662 阅读 · 0 评论 -
linux 定时器timer使用
1.添加头文件#include 2.定义一个timer_list结构体成员struct timer_list t1;3.初始化定时器init_timer(&t1);4.填充t1成员t1.function=&timer_fn; //回调函数t1.expires=jiffies+HZ; //定时值t1.data=HZ; //回调函数参数5.添加定时器回调函数原创 2013-01-04 13:08:20 · 4984 阅读 · 2 评论 -
linux命令码(_IO宏)
在ioctl.h头文件中定义了命令码命令码用一个32位的整型数表达bit29~31表示命令传输的方向,bit16~29记录要传输的数据的大小,bit8~15表示设备类型(一般用一个ASCII表示),bit0~7表示命令编号其中数据大小可以和方向的bit29重叠29位是特殊位,因为无方向定义值为1也就是无方向的时候会占用第29位,无方向就无所谓数据传输,所以携带数据大小段是0有方原创 2013-02-02 09:31:25 · 4236 阅读 · 0 评论