linux 0.11 源码 中文注释

时间:2012-12-09 07:25:50
【文件属性】:
文件名称:linux 0.11 源码 中文注释
文件大小:284KB
文件格式:RAR
更新时间:2012-12-09 07:25:50
linux Linux0.11 源码 linux 0.11源码 /* * linux/init/main.c * * (C) 1991 Linus Torvalds */ #define __LIBRARY__ // 定义该变量是为了包括定义在unistd.h 中的内嵌汇编代码等信息。 #include // *.h 头文件所在的默认目录是include/,则在代码中就不用明确指明位置。 // 如果不是UNIX 的标准头文件,则需要指明所在的目录,并用双引号括住。 // 标准符号常数与类型文件。定义了各种符号常数和类型,并申明了各种函数。 // 如果定义了__LIBRARY__,则还包括系统调用号和内嵌汇编代码_syscall0()等。 #include // 时间类型头文件。其中最主要定义了tm 结构和一些有关时间的函数原形。 /* * we need this inline - forking from kernel space will result * in NO COPY ON WRITE (!!!), until an execve is executed. This * is no problem, but for the stack. This is handled by not letting * main() use the stack at all after fork(). Thus, no function * calls - which means inline code for fork too, as otherwise we * would use the stack upon exit from 'fork()'. * * Actually only pause and fork are needed inline, so that there * won't be any messing with the stack from main(), but we define * some others too. */ /* * 我们需要下面这些内嵌语句 - 从内核空间创建进程(forking)将导致没有写时复制(COPY ON WRITE)!!! * 直到一个执行execve 调用。这对堆栈可能带来问题。处理的方法是在fork()调用之后不让main()使用 * 任何堆栈。因此就不能有函数调用 - 这意味着fork 也要使用内嵌的代码,否则我们在从fork()退出 * 时就要使用堆栈了。 * 实际上只有pause 和fork 需要使用内嵌方式,以保证从main()中不会弄乱堆栈,但是我们同时还 * 定义了其它一些函数。 */ static inline _syscall0 (int, fork) // 是unistd.h 中的内嵌宏代码。以嵌入汇编的形式调用 // Linux 的系统调用中断0x80。该中断是所有系统调用的 // 入口。该条语句实际上是int fork()创建进程系统调用。 // syscall0 名称中最后的0 表示无参数,1 表示1 个参数。 static inline _syscall0 (int, pause) // int pause()系统调用:暂停进程的执行,直到 // 收到一个信号。 static inline _syscall1 (int, setup, void *, BIOS) // int setup(void * BIOS)系统调用,仅用于 // linux 初始化(仅在这个程序中被调用)。 static inline _syscall0 (int, sync) // int sync()系统调用:更新文件系统。 #include // tty 头文件,定义了有关tty_io,串行通信方面的参数、常数。 #include // 调度程序头文件,定义了任务结构task_struct、第1 个初始任务 // 的数据。还有一些以宏的形式定义的有关描述符参数设置和获取的 // 嵌入式汇编函数程序。 #include // head 头文件,定义了段描述符的简单结构,和几个选择符常量。 #include // 系统头文件。以宏的形式定义了许多有关设置或修改 // 描述符/中断门等的嵌入式汇编子程序。 #include // io 头文件。以宏的嵌入汇编程序形式定义对io 端口操作的函数。 #include // 标准定义头文件。定义了NULL, offsetof(TYPE, MEMBER)。 #include // 标准参数头文件。以宏的形式定义变量参数列表。主要说明了-个 // 类型(va_list)和三个宏(va_start, va_arg 和va_end),vsprintf、 // vprintf、vfprintf。 #include #include // 文件控制头文件。用于文件及其描述符的操作控制常数符号的定义。 #include // 类型头文件。定义了基本的系统数据类型。 #include // 文件系统头文件。定义文件表结构(file,buffer_head,m_inode 等)。 static char printbuf[1024]; // 静态字符串数组。 extern int vsprintf (); // 送格式化输出到一字符串中(在kernel/vsprintf.c,92 行)。 extern void init (void); // 函数原形,初始化(在168 行)。 extern void blk_dev_init (void); // 块设备初始化子程序(kernel/blk_drv/ll_rw_blk.c,157 行) extern void chr_dev_init (void); // 字符设备初始化(kernel/chr_drv/tty_io.c, 347 行) extern void hd_init (void); // 硬盘初始化程序(kernel/blk_drv/hd.c, 343 行) extern void floppy_init (void); // 软驱初始化程序(kernel/blk_drv/floppy.c, 457 行) extern void mem_init (long start, long end); // 内存管理初始化(mm/memory.c, 399 行) extern long rd_init (long mem_start, int length); //虚拟盘初始化(kernel/blk_drv/ramdisk.c,52) extern long kernel_mktime (struct tm *tm); // 建立内核时间(秒)。 extern long startup_time; // 内核启动时间(开机时间)(秒)。
【文件预览】:
linux内核0.11注释版
----mm()
--------page.s(842B)
--------memory.c(25KB)
--------Makefile(3KB)
----boot()
--------head.s(13KB)
--------bootsect.s(12KB)
--------setup.s(12KB)
----fs()
--------inode.c(15KB)
--------pipe.c(5KB)
--------read_write.c(6KB)
--------bitmap.c(8KB)
--------namei.c(37KB)
--------exec.c(19KB)
--------stat.c(3KB)
--------char_dev.c(4KB)
--------buffer.c(18KB)
--------ioctl.c(2KB)
--------file_dev.c(5KB)
--------truncate.c(2KB)
--------super.c(14KB)
--------fcntl.c(3KB)
--------block_dev.c(4KB)
--------file_table.c(209B)
--------Makefile(7KB)
--------open.c(10KB)
----include()
--------a.out.h(8KB)
--------string.h(22KB)
--------signal.h(4KB)
--------unistd.h(9KB)
--------stdarg.h(2KB)
--------utime.h(392B)
--------fcntl.h(3KB)
--------linux()
--------ctype.h(2KB)
--------stddef.h(378B)
--------termios.h(14KB)
--------errno.h(2KB)
--------time.h(2KB)
--------const.h(589B)
--------asm()
--------sys()
----kernel()
--------signal.c(6KB)
--------system_call.s(13KB)
--------panic.c(952B)
--------fork.c(7KB)
--------sched.c(19KB)
--------math()
--------sys.c(8KB)
--------mktime.c(3KB)
--------vsprintf.c(10KB)
--------exit.c(8KB)
--------printk.c(2KB)
--------asm.s(5KB)
--------blk_drv()
--------chr_drv()
----init()
--------main.c(13KB)
----tools()
--------build.c(8KB)
----Makefile(9KB)
----lib()
--------errno.c(66B)
--------execve.c(607B)
--------ctype.c(2KB)
--------dup.c(401B)
--------wait.c(774B)
--------_exit.c(616B)
--------string.c(199B)
--------setsid.c(382B)
--------malloc.c(14KB)
--------write.c(545B)
--------close.c(397B)
--------Makefile(5KB)
--------open.c(1KB)

网友评论

  • 资料不错,很好
  • 好代码 适合初学者
  • 资源不错,可以下载
  • 不错,很有参考价值,感谢无私分享
  • 谢谢了,刚刚开始学习,资源非常好
  • 资源还不错,值得一看
  • 很不错的解析,自己水平有限,理解还是有点困难
  • 不错哦,学习了
  • 很不错 适合初学者
  • 适合初学者。
  • 很好,大量中文注释,应该会非常有帮助理解,谢谢!
  • 不错,对开始研究linux 内核很有帮助。
  • 很不错的资源,值得一看
  • 非常不错,适合初学者入门
  • 挺不错的资料,谢谢分享
  • 非常的不错,我非常的需要
  • 短小精悍,入门学习linux必备。如果是linux开始一段时间头晕的人,也适合回头看这个
  • 很经典,代码量不大
  • 很经典,代码量不大,配合注释看起来很容易入门
  • 正在配合着赵炯博士的linux书,感觉不错!