- 博客(16)
- 资源 (1)
- 收藏
- 关注
原创 linux内核信号处理过程
基于 uClibc (0.9.33) 和 kernel(4.15)1. signal ( uClibc 中的定义及实现)__sighandler_t signal (int sig, __sighandler_t handler) 其实际是基于 sigaction 来实现的。 sigaction 每个体系各自实现,对于arm体系: libc\sysdeps\linux\a...
2019-08-04 11:26:08
1427
转载 Linux C内联汇编用法
参见:https://blog.youkuaiyun.com/surfacedust/article/details/17138675
2019-08-04 09:01:18
181
原创 新建进程的权限(及能力集)设置流程
内核版本(4.15)运行一个可执行程序,一般分为两步, fork 和 execve 过程,内核中涉及的权限设置如下:1. fork 过程 SYSCALL_DEFINE0(fork) _do_fork copy_process ...
2019-07-31 22:04:46
836
原创 文件打开时内核权限检查流程
内核版本(4.15)DAC: Discretionary access control 自主访问控制 . DAC是传统的Linux的访问控制方式,DAC可以对文件、文件夹、共享资源等进行访问控制。 在DAC这种模型中,文件客体的所有者(或者管理员)负责管理访问控制。DAC使用了ACL(Access Control List,访问控制列表)来给非管理者用户提供不同的权限,而root用户...
2019-07-31 21:36:15
907
原创 新建文件的 uid gid 设置流程 (以jiffs2为例)
内核版本(4.15) do_sys_open do_filp_open path_openat do_last lookup_open ...
2019-07-22 23:05:32
616
原创 nand flash oob区与坏快标记
基于3.10.90内核代码对于nand flash,坏块标记一般位于每个block的第一个page页spare区的第一个字节。如一个page为2k+64Byte,则 64为spare区,用来存放oob和ecc,以及block的坏块标记(只有某些页如第一页)。对于一些文件系统如 yaffs2和jffs2会使用到 oob区来存放一些数据。由于坏块标记位于 spare区的第一个字节,则 oob...
2019-04-12 00:00:36
2318
原创 linux arm 进程调度时机
基于 3.10.90 内核代码在 kernel\sched\core.c 里, 对于 __schedule 有如下注释:/* * __schedule() is the main scheduler function. * * The main means of driving the scheduler and thus entering this function are: * ...
2019-02-08 11:10:39
422
原创 linux arm 系统调用之 swi(注释)
基于 3.10.90 版本在 arch\arm\kernel\entry-armv.S 里有:__stubs_start: /* 异常向量表开始, 主要实现 swi 即系统调用的功能 * 在函数 early_trap_init 里实现异常向量表的拷备 */ @ ...
2019-02-06 10:40:38
1387
转载 ARM汇编中^、!、cxsf符号和movs等指令使用
转载来自 http://www.sohu.com/a/74272814_119709.macro restore_user_regsldr r1,[sp, #S_PSR]ldr lr,[sp, #S_PC]! @ !用来控制基址变址寻址的最终新地址是否进行回写操作,@ 执行ldr之后sp被回写成sp+#S_PC基址变址寻址的新地址msrspsr,r1 @ 把cpsr的值保存到s...
2019-02-05 23:00:56
3896
原创 linux arm 进程切换之 __switch_to (注释)
内核版本 3.10.90arch\arm\kernel\entry-armv.S/* * Register switch for ARMv3 and ARMv4 processors * r0 = previous task_struct, r1 = previous thread_info, r2 = next thread_info * previous and next are...
2019-01-29 21:52:43
2649
原创 linux arm 异常及中断处理过程 2 --- entry-common.S / entry-header.S (注释)
内核版本(3.10.90)1. arch\arm\kernel\entry-common.S /* * "slow" syscall return path. "why" tells us if this was a real syscall. */ENTRY(ret_to_user) /* 执行路径 : *...
2019-01-29 20:26:41
638
原创 linux arm 异常及中断处理过程 1 --- entry-armv.S (注释)
内核版本 3.10.90 arch\arm\kernel\entry-armv.S /* * Interrupt handling. */ .macro irq_handler#ifdef CONFIG_MULTI_IRQ_HANDLER ldr r1, =handle_arch_irq mov r0, sp /* 通过 svc_entr...
2019-01-29 20:15:47
1526
原创 linux arm 内核解压后启动过程(注释)
内核版本 3.10.90内核在解压后执行时会跳转执行的代码为:arch\arm\kernel\head.S 中的/* * Kernel startup entry point. * --------------------------- * * This is normally called from the decompressor code. The requirement...
2019-01-27 21:58:25
296
原创 linux arm 内核解压缩过程(注释)
内核版本 3.10.90对应文件:arch\arm\boot\compressed\head.S (下面的代码有删减) .section ".start", #alloc, #execinstr /* .start 段,在 arch\arm\boot\compressed\vmlinux.lds.in ...
2019-01-27 21:34:33
1394
原创 fuse文件系统分析(一)
fuse文件系统分为应用态和内核态,应用态的代码可参见开源代码 ntfs-3g,下载的地址为:https://www.tuxera.com/community/open-source-ntfs-3g/该文档基于内核 2.6.30 和 ntfs-3g_ntfsprogs-2017.3.231. 用户态总体框架main // ntfs-3g.c mount_fuse ...
2018-12-25 23:03:34
1265
1
原创 /proc 目录下各进程创建过程
/proc/ 下各进程是动态创建的,其创建过程如下 (内核版本为 2.6.30): mount -t proc proc /proc .get_sb = proc_get_sb, proc_fill_super root_inode = proc_get_inode(s, PROC_ROOT_I...
2018-12-09 17:53:59
1178
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人