内核C语言程序嵌入式汇编代码又叫内联汇编,具有输入和输出参数的嵌入汇编语句的基本格式为: ************************************************** asm("汇编语句" : 输出寄存器 : 输入寄存器 : 会被修改的寄存器); ************************************************** 除第一行外,后面带冒号的行若不使用就可以省略.其中,"asm"是内联汇编语句关键词:"…
摘自Linux内核文档 Documentation/atomic_ops.txt,不是本人原创 Semantics and Behavior of Atomic and Bitmask Operations David S. Miller This document is intended to serve as a guide to Linux port maintainers on how to implement atomic counter, bitops, and spinlock i…
__builtin_prefetch是gcc扩展的,用来提高访问效率,需要硬件的支持. 在标准C语言中是不允许static inline联合使用的. 删除依赖的头文件,将相应的结构拷贝到LinuxList.h中: 此外,需要将container_of改写成我们自己的形式. #define container_of(ptr, type, member) ((type *)((char *)ptr - offsetof(type,member))) 移植后的内核链表如下: #ifndef _LINU…
1. Linux内核链表的位置及依赖 (1)位置:{linux-2.6.39}\\include\linux\list.h (2)依赖 ①#include<linux\types.h> ②#include<linux\stddef.h> ③#include<linux\poison.h> ④#include<linux\prefetch.h> 2. 移植及注意事项 (1)清除文件间的依赖:剥离依赖文件中与链表实现相关的代码 (2)清除与平台相关代码(GNU…
1.移植linux内核链表,使其适用于非GNU编译器 2.分析linux内核中链表的基本实现 移植时的注意事项 清除文件间的依赖 剥离依赖文件中与链表实现相关的代码 清除平台相关的代码(GNU C) ({}) typeof __builtin_prefetch  gcc编译器的内置函数,作用是提高访问效率,需要硬件的支持 static inline在标准c中是不能被同时使用的,但在GNU C编译器是允许的…
fork.c 代码分析笔记 verifiy_area long last_pid=0; //全局变量,用来记录眼下最大的pid数值 void verify_area(void * addr,int size) // addr 是虚拟地址 ,size是须要写入的字节大小 { unsigned long start; start = (unsigned long) addr; //把地址强制类型转换之后,赋值给start size += start & 0xfff; //取addr在当前虚拟地址中4…
我×.. . 最终好了,大概3 4个小时吧...各种毛刺问题.终究还是闯过来了.. .. ubuntu2@ubuntu:~/Downloads/linux-0.00-050613/linux-0.00$ make ld -s -x -M head.o  -o system > System.map dd bs=32 if=boot of=Image skip=1 16+0 records in 16+0 records out 512 bytes (512 B) copied, 0.000605…
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011368821/article/details/25129835 sched.c sched.h 代码分析笔记 首先上header file sched.h #ifndef _SCHED_H #define _SCHED_H #define HZ 100 #define NR_TASKS 64 #define TASK_SIZE 0x04000000 #define LIBRARY_SIZE…
微型计算机组成结构 系统的基本组成: 软件是一种控制硬件操作和动作的指令流. 2.1 微型计算机的组成原理 当中CPU通过地址线,数据线,和控制信号线组成的内部总线与系统其它部分进行数据通信.地址线用于提供内存或者I/O设备的地址,即指明须要读写的数据的详细位置.数据线用于在CPU和内存的I/O设备之间提供传输数据的通道,而控制线则负责指挥运行的详细读写操作 除了CPU以外,现代计算机PC主板主要由两个超大规模芯片构成的芯片组(chipsets):北桥(Northbrige)和南桥(Southb…
根据一下问题来看笔记 进程占多大的线形地址空间 进程实际分配多少物理内存 创建进程的开销在哪里 一. 从fork系统调用开始 kernel/sys_call.s第222行 _sys_fork: call _find_empty_process #为新进程分配id testl %eax,%eax #若为负数则返回 js 1f push %gs #压入copy_process需要的参数 pushl %esi pushl %edi pushl %ebp pushl %eax call _copy_pr…