随笔分类 - Linux
timer源码分析
摘要:void add_timer(struct timer_list *timer)
{ BUG_ON(timer_pending(timer)); mod_timer(timer, timer->expires);
}
====>
int mod_timer(struct timer_list *timer, unsigned long expires)
{ /* * This is a common optimization triggered by the * networking code - if the timer is re-modifi...
阅读全文
中断上下文和进程上下文
摘要:进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次的理论层面上,没有深入去研究。处理器总处于以下状态中的一种:1、内核态,运行于进程上下文,内核代表进程运行于内核空间;2、内核态,运行于中断上下文,内核代表硬件运行于内核空间;3、用户态,运行于用户空间。 用户空间的应用程序,通过系统调用,进入内核空间。这个时候用户空间的进程要传递很多变量、参数的值给内核,内核态运行的时候也要保存用户进程的一些寄存器值、变量等。所谓的“进程上下文”.
阅读全文
netlink
摘要:存在问题,在通信的时候可能会死机,不知道是#define NETLINK_TEST 30未在include/linux/netlink.h定义导致,还是其他问题(加锁)。netlink.c#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/sched.h>
#include <net/sock.h>
#include <net/netlink.h> #define pr_inf(fmt, a
阅读全文
Linux 网络协议栈
摘要:net 关于Linux 网络协议栈,这边有个牛人的博客,可以进去看看(用户空间和内核空间当然也可以通过netlink通信)。这里也有个博客讲网络协议栈http://blog.csdn.net/yming0221/article/details/7971463
阅读全文
Syscall
摘要:Syscall|---------------------------------------------------| |---------------------------------------------------|
| |----------------------| |----------------------| | | |----------------------| |----------------------| |
| | | | | | | | ...
阅读全文
Processes
摘要:Processes1 进程描述符about 1.7k size, save in a list named task list.include/linux/sched.hstruct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ void *stack; atomic_t usage; unsigned int flags; /* per process flags, defined below */ unsigned int ptrace; int lock_dept...
阅读全文
dev\proc\sys
摘要:#include <linux/module.h>#include <linux/fs.h>#include <linux/slab.h>#include <linux/device.h>#include <linux/sched.h>#include <linux/proc_fs.h>#include <asm/uaccess.h>#include "hello.h"#define DEV_NAME "hello"#define pr_inf(fmt, arg ...)
阅读全文
linux -- boot code analysis
摘要:毛爷爷教导我们,找内核entry应该从连接脚本lds着手。好吧,let‘s go。。。在我们继续之前,我们不妨先去看看这个东东: 现在你明白了,zImage这丫的也就是一二进制文件,我靠! 阅读顶层Makefile,细心的同学已经发现了有这么一行vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) vmlinux.o $(kallsyms.o) FORCEtips:也许你的源码里面没有vmlinux.lds,试试修改.config或make menuconfig 没错,这里就是找到连接脚本的线索,让我们到对应的体系相关目录arck/a.
阅读全文
浙公网安备 33010602011771号