Linux Kernel
JasonLeaster
Doing is better than saying.
展开
-
likely和unlikey函数源码分析
likely和unlikey函数源码分析 看代码的时候常常遇到likely和unlikely这两个函数,大概知道是用来检测返回值的,但是也不知道是什么。今天实在不爽了,就去看源码了。在内核代码树的 include/linux/compiler.h里void ftrace_likely_update(struct ftrace_branch_原创 2014-08-15 16:25:47 · 1384 阅读 · 0 评论 -
linux内核头文件kdev_t.h 宏定义解析
kdev_t.h 宏定义解析这个header file反正不多,直接原因是——遇到了,就搞定它! dev_t 类型的变量定义在linux/types.h 用来保存设备编号——包括主设备号和次设备号。dev_t 是一个32位的数,其中12位用来表示设备号,其余20位用来表示次设备号。 始终不要对这32原创 2014-07-28 22:01:16 · 6550 阅读 · 2 评论 -
《linux 内核完全剖析》 chapter 8 内核代码
chapter 8 内核代码8.1.1中断处理程序traps.c#define get_seg_byte(seg,addr) ({ \ //取seg中addr处1byteregister char __res; \__asm__("push %%fs;mov %%ax,%%fs;movb %%fs:%2,%%al;pop %%fs"原创 2014-05-08 20:45:17 · 1646 阅读 · 0 评论 -
《linux 内核完全剖析》 笔记 CODE_SPACE 宏定义分析
在memory.c里面,遇到一个宏定义,如下:#define CODE_SPACE(addr) ((((addr)+4095)&~4095) < \current->start_code + current->end_code)看的第一眼,不知道,第二眼,还是不知道,纠结了半天还是不知道。睡了一晚,今天早上再看,嘿嘿,居然看懂了。。。这个宏定义用于判断给定的addr线原创 2014-04-30 10:11:54 · 2162 阅读 · 1 评论 -
嘿!single_open 原来在这里
嘿!single_open 原来在这里找了一会儿,没找到,后面找某搜索引擎也没有很多关于single_open的信息其实single_open和single_release 都在/linux/seq_file.h里面int single_open(struct file *file, int (*show)(struct seq_file *原创 2014-08-07 21:54:26 · 8226 阅读 · 0 评论 -
《linux 内核完全剖析》 fork.c 代码分析笔记
fork.c 代码分析笔记verifiy_arealong last_pid=0; //全局变量,用来记录目前最大的pid数值void verify_area(void * addr,int size) // addr 是虚拟地址 ,size是需要写入的字节大小{ unsigned long start; start = (unsigned lo原创 2014-05-08 12:13:58 · 4446 阅读 · 0 评论 -
《linux 内核完全剖析》sched.c sched.h 代码分析笔记
首先上header file#ifndef _SCHED_H#define _SCHED_H#define HZ 100#define NR_TASKS 64#define TASK_SIZE 0x04000000#define LIBRARY_SIZE 0x00400000#if (TASK_SIZE & 0x3fffff)#error "TASK_原创 2014-05-07 09:49:26 · 11818 阅读 · 1 评论 -
《linux 内核完全剖析》chapter 13 内存管理 (不含swap.c)
我估计理论打基础砸了差不多一个星期的时间,原创 2014-05-06 11:24:06 · 2073 阅读 · 0 评论 -
《linux 内核完全剖析》编译linux 0.12 内核 Ubuntu 64bits 环境
我×。。。终于好了,大概3 4个小时吧。。。各种毛刺问题。终究还是闯过来了。。。。ubuntu2@ubuntu:~/Downloads/linux-0.00-050613/linux-0.00$ makeld -s -x -M head.o -o system > System.mapdd bs=32 if=boot of=Image skip=116+0 records i原创 2014-05-04 18:06:11 · 2836 阅读 · 2 评论 -
《linux 内核完全剖析》 由逻辑地址转换成线性地址代码分析 get_base get_limit 代码分析笔记
一开始由这段代码引发的纠结get_base(current->ldt[1])下面是各个相关的代码,摘自不同的header files。。。current是指向当前task的指针struct desc_struct ldt[3];struct desc_struct {unsigned long a,b;} ;#define _get_原创 2014-04-29 10:11:14 · 1939 阅读 · 2 评论 -
《linux 内核完全剖析》 vsprintf.c 代码笔记
vsprintf.c 代码笔记你/* * linux/kernel/vsprintf.c * * (C) 1991 Linus Torvalds *//* vsprintf.c -- Lars Wirzenius & Linus Torvalds. *//* * Wirzenius wrote this portably, Torvalds fucked原创 2014-05-08 16:06:05 · 2937 阅读 · 0 评论 -
《linux 内核完全剖析》 sys.c 代码分析
sys.c 代码分析 setregid/* * This is done BSD-style, with no consideration of the saved gid, except * that if you set the effective gid, it sets the saved gid too. This * makes it possib原创 2014-05-08 14:53:51 · 2114 阅读 · 0 评论 -
《linux 内核完全剖析》上帝为什么是右移20,而不是22! dir = (unsigned long *) ((from>>20) & 0xffc)
在memory.c里面有这么一段代码。为了其中的一句话,让我内牛满面啊! dir = (unsigned long *) ((from>>20) & 0xffc)int free_page_tables(unsigned long from,unsigned long size){ unsigned long *pg_table; unsigned long原创 2014-05-04 11:01:22 · 3160 阅读 · 3 评论 -
《linux 内核完全剖析》get_free_page(void)【嵌入式汇编复习看这里】
unsigned long get_free_page(void){register unsigned long __res asm("ax");repeat: __asm__("std ; repne ; scasb\n\t" "jne 1f\n\t" "movb $1,1(%%edi)\n\t" "sall $12原创 2014-05-05 15:34:48 · 2899 阅读 · 0 评论 -
《linux 内核完全剖析》 chapter 4 80x86 保护模式极其编程
80x86 保护模式极其编程 首先我不得不说,看这张真的很纠结。。。看了半天,不知道这个东西能干嘛,我感觉唯一有点用的就是对于内存映射的理解。。。我如果不在底层给80x86写汇编的话,我真不知道这章能对我有什么用。。。还是留下自己觉得重要的理解了的笔记吧。。。4.1.1标志寄存器--EFLAGST原创 2014-04-23 17:16:14 · 2076 阅读 · 0 评论 -
x86CPU 实模式 保护模式 傻傻分不清楚? 基于Xv6-OS 分析CR0 寄存器
基于Xv6-OS 分析CR0 寄存器原创 2014-10-04 10:51:18 · 3456 阅读 · 0 评论 -
qemu gdb 调试内核
qemu gdb 调试内核有必要笔记一下了...刚忘记就折腾了半天其实一个截屏就搞定啦~原创 2015-03-13 23:58:23 · 1157 阅读 · 0 评论 -
Mykernel 第三周课程报告
刘子健 +原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000使用gdb跟踪调试内核从start_kernel到init进程启动详细分析从start_kernel到init进程启动的过程原创 2015-03-15 20:22:06 · 1355 阅读 · 0 评论 -
Linux那些事儿之我是U盘(2)Makefile不是Make Love
出来混,迟早要还的.从前在复旦,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉.毕业的时候,身边的人读研的读研,出国的出国,找工作的吧,去麦肯锡的去麦肯锡,去IBM的去IBM.而自己却一无所长,没有任何技能,直到这时候才发现那四年欠了很多债,早知今日,何必当初.幸运的是,我还有一张复旦的文凭,依靠着这张文凭,混进了Intel.然而,工作以后,更是发现当初在校期间没有好好读书其转载 2013-12-22 12:08:05 · 1119 阅读 · 0 评论 -
由linux内核某个片段(container_of)引发的对于C语言的深入理解
/usr/src/linux-source-3.8.0/drivers/gpu/drm/radeon 这个目录下面去找到这个文件 mkregtable.c 打开,就可以看到了。#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)/** * container_of - cast a member of a原创 2014-04-18 20:07:59 · 1987 阅读 · 0 评论 -
《linux 内核完全剖析》 keyboard.S 部分代码分析(key_map)
keyboard.S 部分代码分析(key_map)keyboard中间有这么一段,我一开始没看明白,究竟啥意思key_map: .byte 0,27 .ascii "1234567890-=" .byte 127,9 .ascii "qwertyuiop[]" .byte 13,0 .ascii "asdfghjkl;'" .byte '`,0 .ascii原创 2014-05-11 21:25:21 · 2106 阅读 · 0 评论 -
linux 3.4.103 内核移植到 S3C6410 开发板 移植失败 (问题总结,来日再战!)
linux 3.4.103 内核移植到 S3C6410 开发板这个星期几乎就搭在这里面了,一开始感觉很不值得,移植这种浪费时间的事情,想立马搞定,然后安安静静看书 & coding.坑爹的事情就是一个多星期的时间搭进去了,还是没成功。我把我的移植失败的经验留下来做为笔记,为下次做准备,也让和我一起做移植的道友少走弯路.大家一起共同分享经验,营造更好的开发环境。原创 2014-08-24 11:40:39 · 2155 阅读 · 0 评论 -
ioctl.h 分析
ioctl.h 分析我自己画了个解析图。。。不要嫌弃丑啊。。。哈哈 typeThe magic number. Just choose one number (after consultingioctl-number.txt ) and use it throughout the driver. This field is eight b原创 2014-08-01 09:49:07 · 1577 阅读 · 0 评论 -
linux内核头文件 cdev.h 解析
#include #include #include struct file_operations;struct inode;struct module;struct cdev { struct kobject kobj; struct module *owner; const struct file_opera原创 2014-07-28 23:31:42 · 3998 阅读 · 0 评论 -
《linux 内核完全剖析》 include/asm/io.h
include/asm/io.h #define outb(value,port) \__asm__ ("outb %%al,%%dx"::"a" (value),"d" (port))//宏定义outb用汇编实现了在端口地址port处写入值value//使用的寄存器是al,一个byte长度,而端口port使用的是2byte长度地址来标记的寄存器,注意这里寄存器的使用原创 2014-06-29 14:13:30 · 3609 阅读 · 0 评论 -
Assembly instructions 汇编指令解析 A&AT
Assembly instructions汇编初步学习汇编0基础的戳上面,刷一遍,包治百病%eax寄存器的值与C语言的return的值相对应(%esp)地址处储存的是函数的返回地址 return address%esp 栈顶寄存器 保存栈顶指针。%ebp = boundary between p原创 2014-05-11 20:40:25 · 2470 阅读 · 0 评论 -
《linux 内核完全剖析》 mktime.c
tm结构体的定义在time.h里面struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst;};/*原创 2014-05-06 13:48:39 · 1768 阅读 · 0 评论 -
《linux 内核完全剖析》 chapter 7 初始化程序
初始化程序7.1 main.c 程序 图中,高速缓存的部分还要扣除显存和ROM BIOS占用的部分。告诉缓冲区是用于磁盘等块设备临时存放数据的地方,以1K字节为一个数据单位。init().函数的功能可分为四个部分安装根文件系统显示系统信息运行系统初始资源配置文件rc中的命令执行用户登录程序shell程序原创 2014-04-27 18:38:59 · 1385 阅读 · 0 评论 -
《linux 内核完全剖析》 chapter 5 Linux内核体系结构
Linux内核体系结构原创 2014-04-26 23:11:38 · 2051 阅读 · 0 评论 -
关于<LDD3> "setconsole.c" Alesssandro Rubini 的邮件回复
关于 "setconsole.c" Alesssandro Rubini 的邮件回复 抱着试一试的心态给偶像写了一封求助e-mail,回复了!!!我的小心脏啊~呵呵~Rubini是谁不解释了...我的HELP原文主要的关于setconsole.c的问题,这个是LDD3的一个小程序setconsole.c/*原创 2014-08-31 17:31:16 · 2415 阅读 · 2 评论 -
PDE_DATA 的定义
PDE_DATA 的定义Location:/fs/proc/internal.hstatic inline struct proc_dir_entry *PDE(const struct inode *inode){ return PROC_I(inode)->pde;}static inline void *__PDE_DATA(const struct inode原创 2014-08-08 00:31:43 · 4891 阅读 · 0 评论 -
《linux 内核完全剖析》 signal.c 代码分析笔记
signal.c 代码分析笔记int sys_sgetmask()// 获取当前进程阻塞的信号{ returncurrent->blocked;} int sys_ssetmask(int newmask) //设置当前进程阻塞信号,确保SIGKILL 和SIGSTOP不被阻塞{ int old=current->原创 2014-05-07 10:14:50 · 2416 阅读 · 0 评论 -
《linux 内核完全剖析》 chapter 2 微型计算机组成结构
微型计算机组成结构原创 2014-04-20 11:40:47 · 2507 阅读 · 0 评论 -
linux内核中结构体struct module
struct module{ enum module_state state; /* Member of list of modules */ struct list_head list; /* Unique handle for this module */ char name[MODULE_NAME_LEN]; /* Sysfs stuff. */ struct modu原创 2014-07-28 23:27:15 · 2258 阅读 · 0 评论 -
《Linux Kernel Development》chapter 1 Introduction to Linux Kernel
Introduction to Linux Kernel原创 2014-04-15 23:18:40 · 1966 阅读 · 0 评论 -
《linux 内核完全剖析》 exit.c 代码分析笔记
exit.c 代码分析笔记 release 释放进程的函数release() 主要根据指定进程的任务数据结构指针,在任务数组中删除指定的进程指针,释放相关内存页,并立刻让内核重新调度进程的运行。void release(struct task_struct * p) //释放p指向的进程{ int i; if (!p) //常规检测原创 2014-05-07 18:37:04 · 2512 阅读 · 0 评论 -
《linux 内核完全剖析》 chapter 3 内核编程语言和环境
内核编程语言和环境原创 2014-04-22 15:02:32 · 1686 阅读 · 0 评论 -
Mykernel 第二周实验报告
刘子健 +原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 题目自拟,内容围绕操作系统是如何工作的进行;博客中需要使用实验截图博客内容中需要仔细分析进程的启动和进程的切换机制总结部分需要阐明自己对“操作系统原创 2015-03-13 22:40:49 · 1479 阅读 · 0 评论