我们知道,CPU 用 ring 来区分权限,从而 Linux 可以区分内核态和用户态。因此,第一种情况,我们拿涉及从用户态到内核态的变化的系统调用来说。因为涉及权限的改变,会压栈保存 SS、ESP 寄存器的,这两个寄存器共占用 8 个 byte。另一种情况是,不涉及权限的变化,就不会压栈这 8 个 byte。这样就会使得两种情况...
*/ /* Ctrl-C will cause -EINTR */ if (err == -EINTR) {//发生中断,即使用了Ctrl-C err = 0; break; } if (err < 0) {//表示在调用ring_buffer__poll时出现了错误 printf("Error polling perf buffer: %d\n", err); break; } } cleanup://清理代码块 /* Clean up */ ring_buffer_...
int tx_buf_size; /*!< TX ring buffer size */ RingbufHandle_t tx_ring_buf; /*!< TX ring buffer handler*/ bool tx_waiting_fifo; /*!< this flag indicates that some task is waiting for FIFO empty interrupt, used to send all data without any data buffer*/ uint8_t* tx_ptr; /*...
*/ #define task_pt_regs(task) \ ({ \ unsigned long __ptr = (unsigned long)task_stack_page(task); \ __ptr += THREAD_SIZE - TOP_OF_KERNEL_STACK_PADDING; \ ((struct pt_regs *)__ptr) - 1; \ }) 这里面有一个TOP_OF_KERNEL_STACK_PADDING,这个的定义如下: #ifdef CONFIG_X86_32...
node = ERR_PTR(ret); } kvfree(pages); @@ -1018,7 +1016,7 @@ static int io_clone_buffers(struct io_ring_ctx *ctx, struct io_ring_ctx *src_ctx * old and new nodes at this point. */ if (arg->flags & IORING_REGISTER_DST_REPLACE) io_rsrc_data_free(&ctx->buf_table); io...
struct cred *replacement_session_keyring; /* for KEYCTL_SESSION_TO_PARENT */ (17)、相应的程序名 [cpp] view plain copy char comm[TASK_COMM_LEN]; (18)、文件 [cpp] view plain copy /* file system info */ int link_count, total_link_count; /* filesystem information */ struct fs...
structsched_statisticsstats;unsignedintpolicy;intnr_cpus_allowed;constcpumask_t*cpus_ptr;cpumask_t*user_cpus_ptr;cpumask_tcpus_mask;void*migration_pending; unsignedshortmigration_flags;structsched_infosched_info; structlist_headtasks;//指向进程PCB的指针structmm_struct*mm;structmm_struct*active_mm;...
进程权能 */ const struct cred *real_cred; const struct cred *cred; struct mutex cred_guard_mutex; struct cred *replacement_session_keyring; /* 30. comm[TASK_COMM_LEN] 相应的程序名 */ char comm[TASK_COMM_LEN]; /* 31. 文件 1) fs 用来表示进程与文件系统的联系,包括当前目录和根目录 2...
指针类型,指针类型又可以进行细分:1)具体类型的指针类型,如 ARG_PTR_TO_SOCKET 表示 struct socket 指针;2)由 BTF 编号确定数据类型的指针类型,如 ARG_PTR_TO_BTF_ID 表示某一内核数据类型指针,且该内核数据类型由 BTF 编号指定;3)指向某一类型内存的指针,如 ARG_PTR_TO_MAP_KEY 指向 eBPF 程序栈内存的指...
ptr_ring.h ptrace.h purgatory.h pvclock_gtod.h pwm.h pwm_backlight.h pxa168_eth.h pxa2xx_ssp.h qcom-geni-se.h qcom_scm.h qnx6_fs.h quota.h quotaops.h radix-tree.h raid_class.h ramfs.h random.h randomize_kstack.h range.h ras.h ratelimit.h ratelimit_t...