13 yinming005

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 14w+

C语言的可变参数函数

open函数有两种声明:int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode);疑问:C语言不支持函数重载,怎么可以一个函数名字有两种参数列表呢?在<fcntl.h>中,这样声明:int open (const c...

2019-04-19 14:29:34

内存节点初始化

内存节点结构体的定义typedef struct pglist_data { struct zone node_zones[MAX_NR_ZONES]; struct zonelist node_zonelists[MAX_ZONELISTS]; int nr_zones;#ifndef CONFIG_NO_BOOTMEM struct bootmem_data *bdata;#en...

2018-12-27 17:47:29

mem_map 分析

文章目录mem_map的作用mem_map的定义dump_stack的输出alloc_node_mem_map源码分析mem_map的作用mem_map的定义/* \linux\mm\memory.c */#ifndef CONFIG_NEED_MULTIPLE_NODES/* use the per-pgdat data instead for discontigmem - mbli...

2018-12-27 17:30:00

nr_free_buffer_pages 算法分析

基本概念数据结构代码分析

2018-12-27 10:54:41

min_free_kbytes 的初始化

min_free_kbytes的初始化欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出...

2018-12-27 09:13:20

linux 系统启动内存初始化

linux version: 4.9.51 build_all_zonelists_init(void){ __build_all_zonelists(NULL); mminit_verify_zonelist(); cpuset_init_current_mems_allowed();}1 __build_all_zonelists 

2018-12-22 19:30:11

fork 的内核实现

linux/kernel/fork.c#ifdef CONFIG_CLONE_BACKWARDSSYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp, int __user *, parent_tidptr, unsigned long, tls, int __user *, chi...

2018-12-13 18:23:51

getpid的内核实现

APP:int main(){ int pid; pid = getpid(); printf("[%s %d] pid: %d.\n", __func__, __LINE__, pid); return 0;} 内核入口:\linux\kernel\sys.cSYSCALL_DEFINE0(getpid){ return ...

2018-12-13 08:21:57

sk_rcvbuff 的设定

sk->rcvbuf          :当前sock 的读写buf的最大限制(这个值是可以变化的)sk->rmem_alloc :当前sock占据的内存(这个值随着出入队skbuff的出入而变化)sk_forward_alloc:这个值表示一个预分配值,也就是整个tcp协议栈的内存cache,第一次为一个缓冲区分配 buf的时候,我们不会直接分配精确的大小,而是按页来分配,而...

2018-12-06 08:35:21

TCP ACK报文中window_size的设定

ACK的调用流程:SyS_recv -- SyS_recvfrom -- inet_recvmsg -- tcp_recvmsg -- release_sock -- __release_sock -- tcp_v4_do_rcv -- tcp_send_ack tcp_select_window 计算window_sizeSyS_recv -- SyS_recvfrom -- i...

2018-12-03 11:43:06

系统调用recv的实现

文件 linux\net\socket.cSYSCALL_DEFINE4(recv, int, fd, void __user *, ubuf, size_t, size,        unsigned int, flags)SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size,        un...

2018-11-29 10:52:09

linux启动过程中 totalram_pages 的计算过程

 1 释放bootmemstart_kernel -- mem_init -- free_all_bootmem/** * free_all_bootmem - release free pages to the buddy allocator * * Returns the number of pages actually released. */unsigned long ...

2018-11-28 10:59:57

linux 系统启动以后,执行脚本的顺序

1 首先是 rcS#! /bin/shexport PATH=/bin:/sbin:/usr/bin:/usr/sbin:.# 挂载虚拟文件系统echo "Mounting virtual filesystems"mkdir -p /sys /proc /devmount -t proc proc /procmount -t sysfs sys /sysif grep -q...

2018-11-26 18:35:19

read(socket) 内核实现

 [ 18.043024] [<c0856dfc>] (tcp_recvmsg) from [<c0880964>] (inet_recvmsg+0xa4/0xcc)[ 18.050551] [<c0880964>] (inet_recvmsg) from [<c07e3bcc>] (sock_read_iter+0x9c/0xe0)...

2018-11-21 17:18:01

tcp receive data 的三个队列

Prequeue queue: struct tcp_sock { /* Data for direct copy to user */ struct { struct sk_buff_head prequeue; struct task_struct *task; struct msghdr *msg; int memory; int len; } ...

2018-11-21 14:32:19

sk->sk_lock.owned 的设定

read的实现[ 45.024721] [<c07e8104>] (lock_sock_nested) from [<c07e8adc>] (sk_wait_data+0xa0/0x120)[ 45.032827] [<c07e8adc>] (sk_wait_data) from [<c085711c>] (tcp_recvmsg+0...

2018-11-21 09:19:28

几个重要数据结构的关系

这几个数据结构关联在一起:tcp_sock --> inet_connection_sock --> inet_sock --> sock --> sock_commonstruct tcp_sock { /* inet_connection_sock has to be the first member of tcp_sock */ struct inet...

2018-11-21 08:21:25

prequeue 实现

struct tcp_sock { /* Data for direct copy to user */ struct { struct sk_buff_head prequeue; struct task_struct *task; struct msghdr *msg; int memory; int len; } ucopy;}; 

2018-11-21 08:13:18

系统调用accept的实现

linux版本:4.9.51在APP中,connfd = accept(listenfd, (struct sockaddr*)&cli_addr, &clilen);SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr,        int __user *, upee...

2018-11-19 09:07:00

系统调用listen的实现

linux版本:4.9.51在APP中,listen(listenfd, BACKLOG_SIZE);//The backlog argument defines the maximum length to which the queue of pending connections for sockfd may grow. SYSCALL_DEFINE2(listen, int,...

2018-11-19 08:36:59

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!