排序:
默认
按更新时间
按访问量

eventfd机制

eventfd 主要用于实现线程间通讯,可以用于用户态和内核通讯.主要涉及两个系统调用 SYSCALL_DEFINE2(eventfd2, unsigned int, count, int, flags) { return do_eventfd(count, flags); } SYSCAL...

2018-11-21 19:29:27

阅读数:2

评论数:0

Asynchronous function calls for boot performance

Asynchronous function calls for boot performance 个人理解主要是通过函数异步调用还减少启动时间,即将没有依赖且没有严格串行 的程序可以异步执行来减少启动时间。 异步函数调用的具体实现在kernel/async.c中。我们举例说明async的用法. ...

2018-11-21 10:14:29

阅读数:8

评论数:0

kernel space 中调用系统调用对地址空间检查

在内核中调用系统调用,需要使用get_fs,set_fs来对其保护,因为这些函数会检查参数地址是不是 用户空间的,但是很显然,我们是在内核空间中调用这些系统调用。 #define get_ds() (KERNEL_DS) 可以看到这里的get_fs 直接返回的是当前进程的地址限制,用户进程和内核...

2018-10-29 19:35:50

阅读数:39

评论数:0

argument list too long

但使用基本的ls/rm 命令时,参数不能超过范围,如果超过范围就会提示argument list too long 每个os支持的参数大小可能有所不能,具体可以通过下面的命令查询 [root@157 ~]# getconf ARG_MAX 2097152 [root@157 ~]# 这个值是在i...

2018-10-26 10:02:33

阅读数:20

评论数:0

tun/tap 设备

tun/tap是一个虚拟网卡驱动,为用户态程序提供网络数据包的发送和接收能力,tun/tap 包含一个字符设备驱动和一个网卡驱动,利用网卡驱动接收来自tcp/ip协议栈的网络分包并发送或者将接收到的网络分包传给协议栈处理。 用户可以通过ip tuntao add veth1 mode tap的方...

2018-10-04 18:00:58

阅读数:84

评论数:0

判断盘是HDD还是SSD

在block/blk-sysfs.c 中定义了一个rotational 的sysctl变量可以判断当前盘是ssd和hdd static struct queue_sysfs_entry queue_nonrot_entry = { .attr = {.name = "rota...

2018-09-30 17:29:19

阅读数:67

评论数:0

roce是网卡的一部分

roce分为软件实现的roce和硬件实现的roce,硬件roce就是在普通网卡中添加一个模块,其中pf和vf 都可以使用roce 由于roce是网卡的一部分,因此roce在初始化的时候是包含在网卡初始化中的过程中,例如下面这个roce就会注册 自己的初始化函数到网卡驱动中 static cons...

2018-09-22 16:30:12

阅读数:144

评论数:0

ASID

为了提高TLB的性能,将TLB分成Global和process-specific。global 是指常驻在tlb中不会被刷出的,例如内核空间的翻译,process-specific 是指每个进程独有的地址空间,当发生进程切换的时候,这部分tlb可以被刷出 为了支持process-specific...

2018-09-18 13:58:17

阅读数:146

评论数:0

vhe

vhe的全称是Virtualization Host Extension support。是armv8.1的新特性,其最终要就是支持type-2的hypervisors 这种扩展让kernel直接跑在el2上,这样可以减少host和guest之间share的寄存器,并减少overhead of ...

2018-09-11 08:42:30

阅读数:69

评论数:0

veth pair

veth pari是用于不同nerwork namespace间进行通信的方式。其代码在driver/net/veth.c中 其入口函数如下:可以看出这是以模块的形参存在中的 static __init int veth_init(void) { return rtnl_link_regist...

2018-08-25 19:06:42

阅读数:80

评论数:0

signal的优先级高于系统调用

在进行系统调用时发生signal的情况下改怎么办呢? 从kernel中信号量的处理函数do_signal中可以可以看到, 通过in_syscall(regs)来判断发生signal的时候是否正在进行系统调用,如果是的话,则暂时忽略掉系统调用 ,等处理完信号量后再进行系统调用的过程 static...

2018-08-07 10:48:00

阅读数:66

评论数:0

vdso支持四个系统调用

vdso的全称是virtual dynamic shared object的全称,比vsyscall 安全。从vsdo.lds.s中可以 看到目前vsdo 支持下面四个系统调用 /* * This controls what symbols we export from the DSO. ...

2018-08-06 11:51:38

阅读数:50

评论数:0

每个cpu有一个16byte的中断栈

在arm64/kernel/irq.c中有为每个cpu定义一个16 byte的中断栈 #ifdef CONFIG_VMAP_STACK static void init_irq_stacks(void) { int cpu; unsigned long *p; for_each_poss...

2018-08-06 09:03:49

阅读数:75

评论数:0

configfs例程

configfs文件系统是一种基于ram的文件系统,用于配置内核对象,configfs可以通过用户态目录文件访问接口配置复杂的对象,可以在用户态创建和删除内核对象。configfs 可以让用户通过shell 来配置内核对象 在samples下有个configfs_example的例程 分析如下:...

2018-08-02 11:45:17

阅读数:127

评论数:0

device attributes 的G,R,E的解释

The three device attributes are G, R, and E, with the following definitions: Gathering (G/nG) - Determines whether multiple accesses can be merge...

2018-07-26 17:08:31

阅读数:36

评论数:0

sysctl_hung_task_panic

通过在grub中添加参数hung_task_panic=1,可以在进程stuck的时候dump当前所有cpu的stack 其源码分析如下: __setup("hung_task_panic=", hung_task_panic_setup); static in...

2018-07-10 11:32:18

阅读数:56

评论数:0

module blacklist

对内核模块来说,黑名单是指禁止某个模块装入的机制 使用 /etc/modprobe.d/ 中的文件 在 /etc/modprobe.d/ 中创建 .conf 文件,使用 blacklist 关键字屏蔽不需要的模块,例如如果不想装入 pcspkr 模块: /etc/modprobe.d/nobee...

2018-07-09 10:30:21

阅读数:148

评论数:0

udev修改网卡name的patch

网卡的name一般是在udev中命名的,这个patch 为https://github.com/systemd/systemd/pull/5933/files 从这个patch中可以看到网卡name有一定的规则,其中vendor id 一般占四个字符 具体的规则如下: * [P&...

2018-07-06 18:16:57

阅读数:50

评论数:0

seccomp

seccomp主要是用来对系统调用权限控制的,用户可以通过prctl或者seccomp_init/seccomp_rule_add/seccomp_load等函数来限制用户控件对每个系统调用的是否禁止通过下面的命令可以查看某个进程的设置的seccomp状态[root@localhost ~]# c...

2018-07-05 19:33:10

阅读数:92

评论数:0

uninitialized_var

在kernel中有一些变量不想或者没有必要初始化,但是这样编译器会报警告,这样可以采用宏uninitialized_var 来解决这个未初始化的警告 例如下面这段code中calltime就没有初始化,但是用uninitialized_var包起来,这样编译器就不会报警告了 static voi...

2018-06-25 10:11:08

阅读数:89

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭