![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
leaf_cold
这个作者很懒,什么都没留下…
展开
-
fork 分配pid位图法
typedef struct pidmap { atomic_t nr_free; //表示已经分配多少的pid void *page; //页 } pidmap_t;int alloc_pidmap(void) { int i, offset, max_scan, pid, last = last_pid;//last_pid 是全局变量 pidmap_t *map; //分配的单原创 2017-11-13 20:19:18 · 470 阅读 · 0 评论 -
fork全面剖析
asmlinkage int sys_fork(struct pt_regs regs) { return do_fork(SIGCHLD, regs.esp, ®s, 0, NULL, NULL); }这个是linux 上所有的包括线程进程的创建最终那个调用用的函数如果是一个喜欢看小说的 就知道所谓的道生一 一生二 三生万物 如果把一个程序一个程序比喻成为一件一件事物 那么如何做到三生万原创 2017-12-02 13:50:09 · 244 阅读 · 0 评论 -
寄存器的用途
最近再看linux内核源码的0.01 版本 寄存器的用途就显得尤为重要 最近ESP EBP ESI EDI EIP 这些对于内存而已尤为重要 ESP 如果有看我之前的博客 栈顶指针 EBP 是栈低指针 堆栈段寄存器 ESI 是寄存器 +ds段寄存器-》4位 就是真正数据段的值 EDI +es段寄存器 就是额外段的值 EIP +IP寄存器就是 代码段的值原创 2018-02-24 22:57:33 · 1019 阅读 · 0 评论 -
select 源码剖析
asmlinkage long sys_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp, struct timeval __user *tvp) { fd_set_bits fds; char *bits; long timeout; int ret, size, max_fdset; ...原创 2018-03-06 00:10:44 · 388 阅读 · 0 评论