- 博客(6)
- 收藏
- 关注
原创 Linux 接受数据包过程
数据包到达产生PKT arrive中断,某驱动程序的中断服务例程响应中断。 1.当中断到来,首先判断是否报文接收中断,如果是那么必定完成如下工作: skb=dev_alloc_skb(GFP_ATOMIC) skb->protocol=eth_type_trans(skb,dev) 2.触发软中断,ISR返回 首先通过netif_rx从设备驱动程序中收到一个报文 在enqueue_to_backlog中,这块的意思是,先判断是否队列不空,如果队列中还有报文,那么先把收到的报文挂到队列中,然后就返回,
2022-05-08 11:28:47 495
原创 Linux send系统调用
net/socket.c 调用send,调用__sys_sendto 应用层将待发送的数据放在自己申请的buff中 INETsocket层将数据放在msghdr{}中 INETsocket以下的层将数据放在sk_buff{}中 在sendto的系统调用中,首先找到BSD socket,再调用send_message。 sendmessage里面执行socket->ops->sendmsg。这里补充,执行的是sock的prot的sendmessage,即真正的sendmessage 比如
2022-05-08 11:25:38 1230
原创 Linux 协议栈初始化
net/ipv4/ap_inet.c/inet_init函数 首先将几个协议的原型proto{}结构挂到一个全局链表proto_list中,这三个全局变量非常重要,是连接传输层和IP层的纽带。原型里面包括操作。 下面是sock_register函数,它将inet_family_ops塞入net_families数组中,这个结构是为了应付从上到下的关系,用户创建socket时,先指定INET地址簇,再指定套接字类型。 下面把协议添加进去,就是把协议加入到一个hash表中。这是应付从下到上的数据流接受方向
2022-05-08 11:21:44 192
原创 Linux 5.0内核 系统调用
Linux kernel 5.0 系统调用 include/linux/syscalls.h 存放系统调用声明 在一个.c文件下实现自己的系统调用 添加系统调用号
2022-05-08 11:19:50 169
原创 操作系统Shell的实现
一、shell的实现 记录第一次实现简易shell,含makefile。 实现命令如下 ls cat clear echo grep head mkdir rmdir touch rm cd pwd wc 管道命令`ls -l | head 3 | wc 重定向命令 ls -l > ls.out Github:待上传… 命令文件:待上传… 主函数截图 ...
2021-05-29 22:23:42 595
原创 Dijkstra(力扣743)和bellman-Ford(力扣1514)
路由算法 1.dijkstra 普通实现时间复杂度O(N2)O(N^{2})O(N2),堆实现时间复杂度O(NlogN)O(NlogN)O(NlogN) class Solution { public: int networkDelayTime(vector<vector<int>>& times, int n, int k) { int book[n+1]; int map[n+1][n+1]; int dis[n+1
2021-05-29 21:33:12 177
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人