
系统调用
天麓
很懒的码农
展开
-
慢慢欣赏linux 获取进程组id即tgid
#define __NR_getpid 172__SYSCALL(__NR_getpid, sys_getpid) =>SYSCALL_DEFINE0(getpid) // sys_getpid - return the thread group id of the current process { return task_tgid_vnr(current); =>pid_t task_tgid_vnr(struct task_struct *tsk) { retur.原创 2021-04-03 07:57:56 · 838 阅读 · 0 评论 -
慢慢欣赏linux 进程组的终止
voiddo_group_exit(int exit_code){ struct signal_struct *sig = current->signal; if (signal_group_exit(sig)) exit_code = sig->group_exit_code; else if (!thread_group_empty(current)) { struct sighand_struct *const sighand = current->sigha.原创 2021-03-20 23:29:00 · 125 阅读 · 0 评论 -
慢慢欣赏linux 进程创建的时候堆栈的建立
慢慢欣赏linux 进程创建的时候堆栈的建立long _do_fork(unsigned long clone_flags, unsigned long stack_start, unsigned long stack_size, int __user *parent_tidptr, int __user *child_tidptr, unsigned long tls){ p = copy_process(clone_flags.原创 2021-03-20 23:09:32 · 216 阅读 · 0 评论 -
进程调度之创建进程
do_fork =>struct pid *pid = alloc_pid(); =>struct pid *pid = kmem_cache_alloc(pid_cachep, GFP_KERNEL);//分配pid结构体空间 =>nr = alloc_pidmap(current->nsproxy->pid_ns);//分配PID进程号 =>...原创 2018-05-12 23:52:57 · 554 阅读 · 0 评论 -
慢慢欣赏linux 系统调用
ENTRY(entry_SYSCALL_64) movq %rsp, PER_CPU_VAR(rsp_scratch) // 保存用户堆栈指针 movq PER_CPU_VAR(cpu_current_top_of_stack), %rsp // 获取tss段作为内核栈 =># define cpu_current_top_of_stack (cpu_tss_rw + TSS_sp1) /* 讲用户寄存器压到tss段 */ /* Construct struct pt_regs on.原创 2021-02-27 22:53:02 · 386 阅读 · 0 评论 -
软件人生感触之四 很难复现和errno
不要过多自信,调用系统调用的时候想,恩,我的代码肯定不会有问题。这个世界最怕认真两个字,最不怕的是膨胀。当系统调用mmap或者别的系统调用返回失败,而这个问题很难复现的话,你就悲剧了。系统调用内部依赖于太多的周边环境,很容易出错。调用系统调用注意打印返回值和error信息。原创 2017-12-20 07:24:15 · 246 阅读 · 0 评论