请稍侯

Linux系统调用的定义

kernel 的系统调用现在都是用宏来定义实现的,比如 sys_socket ,它的定义不像一般的函数那样定义的: int func(argument) { ... } 而是使用宏实现的: SYSCALL_DEFINE3(socket, int, family, int, ty...

开始认真写笔记

今天是个好日子,经过两天的折腾,总算在 github 上把自己的笔记集搭起来了,不得不说现在 web 技术发展的很棒,写几个 markdown 文件,在托管平台上申请个账户就可以制作一个效果很棒的个人静态网站了。 之前我也私下做一些笔记,记录下自己工作中遇到的问题,以及自己业余时间学习的一些...

内核启动的initcall

1. initcall 定义 include/linux/init.h 中定义: #define early_initcall(fn) __define_initcall(fn, early) #define pure_initcall(fn) __define_in...

Linux网络协议栈初始化

Linux 网络协议栈初始化 (in developing) socket 和文件系统都位于 VFS 下一层,对 socket 的操作都要经过 VFS sock 初始化 2....

Linux下拦截系统调用的一种方法

Linux允许让我们自己的动态链接库加载在其它动态链接库之前,甚至是系统库(如 libc.so.6),如此一来就可以写程序拦截替换系统的 time() 、 read() 、 open() 这些函数。 首先,我们的 open()函数会比较一下文件名是不是我们所想要打开的,如果是,则将文件描述符...

Uboot驱动框架概述

6. 驱动框架 6.1. 声明 方式 A 每个设备在 uboot 中都对应一个驱动结构体变量, uboot 操纵外设都是通过该结构体变量实现的。以 ti 的 cpsw 网卡为例,在 driver/net/cpsw.c 中定义了多个函数实现了网卡的收发、配置、中断处...

Uboot的网络

7. net uboot 支持 tcp/ip 网络协议,但是作为一个 bootloader 它并没有把协议栈作为一个后台线程长时间运行,而是在使用到网络功能时才会初始化协议栈、使用网络功能。 7.1. 协议栈主循环 net_loop(net/net.c) 是网络协议栈的主循环,所有的网络...

Uboot文件系统框架概述

8. 文件系统 uboot 支持多种常见的文件系统,包括 fat 、 ext 、 jffs2 、 reiserfs 、 yaffs2 、 zfs 、ubifs 、cbfs 、cramfs 等。 uboot 的文件系统有两种接口,一种是 fs_* 一种是具体的文件系统的接口,比如 yaffs...

Uboot的shell

4. uboot shell 命令的实现 4.1. 添加命令 以命令 boot 为例(cmd/bootm.c),添加该命令使用了下面的语句: U_BOOT_CMD( boot, 1, 1, do_bootd, "boot default, i.e., run 'b...

Uboot最重要的全局变量gd

8. gd gd 是一个 gd_t 类型的结构体变量,在 uboot 阶段地址保存在寄存器 r9: #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r9") gd_t 结构体定义在 include...