2023-9
内核向应用层发送netlink单播消息:
nlmsg_unicast -> netlink_unicast -> netlink_sendskb -> __netlink_sendskb -> 把skb链入struct sock 的 sk_receive_queue 链表中,再调用sk->sk_data_ready(sk); -> sock_def_readable -> wake_up_interruptible_sync_poll
sk_sleep 获取对应struct sock的 wait_queue_head_t
sk_wait_data
tcp_recvmsg Linux 内核中用于接收 TCP 数据的函数(发送 TCP 数据的函数是 tcp_sendmsg)
内核向应用层发送netlink多播消息:
nlmsg_multicast -> netlink_broadcast -> netlink_broadcast_filtered -> do_one_broadcast -> netlink_broadcast_deliver -> __netlink_sendskb -> sk->sk_data_ready(sk); -> netlink_data_ready -> BUG();
内核netlink套接字是无论如何也不能发送 / 接收到组播消息的。register_pernet_subsys -> register_pernet_operations -> __register_pernet_operations -> ops_init -> ops->init(net); -> rtnetlink_net_ops.init -> rtnetlink_net_init -> netlink_kernel_create -> __netlink_kernel_create -> sk->sk_data_ready = netlink_data_ready;
__netlink_create -> sock_init_data ?
但是对于应用层netlink套接字,该sk_data_ready()钩子函数在初始化netlink函数sock_init_data()中被注册为sock_def_readable()
二者流程上有什么不同导致了 hook不一样,一个是socket系统调用,一个是内核netlink socket
kobject_uevent -> kobject_uevent_env -> netlink_broadcast_filtered
struct iovec 用于描述一块连续的内存区域,它包含了指向数据缓冲区的指针和缓冲区的大小。
这个结构体有两个成员变量:
void *iov_base:指向数据缓冲区的指针,通常是一个 void * 类型。它指向实际的数据存储区域。
size_t iov_len:指定了数据缓冲区的大小,以字节为单位。
用户态调用socket时,返回一个fd,在内核会有一个struct socket 和 struct sock 与这个fd对应,这两个对象都是在socket调用时创建并初始化的。
基于这个socket fd找到对应的struct socket过程:
sockfd_lookup_light
fdget 获取到对应的fd (struct fd类型)
sock_from_file :若 struct fd类型的file成员,struct file类型为 socket_file类型,判断f_op是否为socket_file_ops
要找的struct socket即为struct file的private_data成员
进程的fd如何找到对应的文件结构体?
fdget的入参是int,返回的struct fd,其函数内部:首先获取当前函数所在的strut task_struct,在获取其struct files_struct files成员访问进程的打开文件相关信息,struct files_struct files的fdt成员的fd成员,fd成员是一个数组,入参即为数组下标
SP_EL0是ARM处理器中的一个特权级别,用于指向用户态的堆栈指针(Stack Pointer)。
ARM处理器的特权级别分为:EL0(用户态)、EL1(内核态)、EL2(虚拟化扩展)、EL3(安全监管),其中EL0是最低特权级别。
在EL0特权级别下运行的代码是:用户态的应用程序,其访问权限和功能受到一定限制,无法直接访问系统级的资源和特权指令。SP_EL0指针用于指向用户态应用程序的堆栈,用于存储函数调用、局部变量和返回地址等数据。
当处理器从内核态(EL1)切换到用户态(EL0)时,SP_EL0会被设置为用户态的堆栈指针,以便应用程序在用户态下正常运行。
同样,当处理器从用户态切换回内核态时,SP_EL0会被保存,以便在需要时恢复用户态堆栈的状态。
总之,SP_EL0是ARM处理器中用于指向用户态堆栈的特权级别寄存器。它在EL0特权级别下被设置和使用,以支持用户态应用程序的正常运行。
在arm64中,current就是 get_current内联函数宏,会返回一个 struct task_struct指针,这个指针指向的地址就是 sp_el0指向的地址
相关文章:
![](https://img-blog.csdnimg.cn/c33b6e2810f34a748b3cfef7a2a7c46d.png)
2023-9
内核向应用层发送netlink单播消息: nlmsg_unicast -> netlink_unicast -> netlink_sendskb -> __netlink_sendskb -> 把skb链入struct sock 的 sk_receive_queue 链表中,再调用sk->sk_data_ready(sk); -> sock_def_readable -> wak…...
![](https://img-blog.csdnimg.cn/85400546c8b44d8f9fbcfffc9d442bd8.jpg)
软考高级+系统架构设计师教程+第二版新版+电子版pdf
注意!!! 系统架构设计师出新版教程啦,2022年11月出版。所以今年下半年是新版第一次考试,不要再复习老版教程了,内容改动挺大的。 【内容简介】系统架构设计师教程(第2版)作为全国计…...
![](https://img-blog.csdnimg.cn/7bcc750e211541f9bf66388335c5ebeb.png)
【产品运营】如何提升B端产品竞争力(下)
“好产品不是能力内核,做好产品的流程才是” 一、建立需求池和需求反馈渠道 需求池管理是B端产品进化最重要的环节,它的重要性远超产品设计、开发等其他环节。 维护需求池有主动和被动两种。 主动维护是产品经理在参与售前、迭代、交付、售后、竞品分…...
![](https://www.ngui.cc/images/no-images.jpg)
uniapp 微信小程序使用echarts
本文目的:通过分包的方式,尽可能在微信小程序中使用最新的echarts。 当然你也可以直接使用现成的uchart或者市场里别人封好的echarts. 准备工作 下载echarts-for-weixin源码。 复制ec-canvas文件夹以及下属文件,在uniapp项目中与pages同级的地…...
![](https://img-blog.csdnimg.cn/4f1dd682c55047938e645231d3ef7698.png)
【漏洞复现】企望制造 ERP命令执行
漏洞描述 由于企望制造 ERP comboxstore.action接口权限设置不当,默认的配置可执行任意SQL语句,利用xp_cmdshell函数可远程执行命令,未经认证的攻击者可通过该漏洞获取服务器权限。 免责声明 技术文章仅供参考,任何个人和组织…...
![](https://img-blog.csdnimg.cn/3843c68ef1104afcbfe98c4cee2b6fc9.png#pic_center)
2023 “华为杯” 中国研究生数学建模竞赛(E题)深度剖析|数学建模完整代码+建模过程全解全析
问题一 血肿扩张风险相关因素探索建模 思路: 根据题目要求,首先需要判断每个患者是否发生了血肿扩张事件。根据定义,如果后续检查的血肿体积比首次检查增加≥6 mL或≥33%,则判断为发生了血肿扩张。 具体判断步骤: (1) 从表1中提取每个患者的入院首次影像检查…...
![](https://img-blog.csdnimg.cn/78b531f8496d4f4ebb4345bd1e35e903.png)
【腾讯云国际站】CDN内容分发网络特性介绍
为什么使用腾讯云国际站 CDN 内容分发网络? 当用户直接访问源站中的静态内容时,可能面临的体验问题: 客户离服务器越远,访问速度越慢。客户数量越多,网络带宽费用越高。跨境用户访问体验较差。 腾讯云国际站CDN 如何改…...
![](https://img-blog.csdnimg.cn/f35fff544c4447228d2cb858db1885d1.png#pic_center)
【工业机器人视觉】
工业机器人视觉 工业机器人的定位、抓取任务是工业生产线上一项重要的应用,一般通过预先示教的方式让机器人执行预定的指令动作。但是,一旦工件的状态发生改变时,机器人便无法完成工作任务。区别:就像人睁眼走直线和闭眼走直线。…...
![](https://www.ngui.cc/images/no-images.jpg)
跨域(浏览器)
跨域问题 是前端开发中常遇到的一个挑战。由于浏览器的同源策略限制,前端在发起异步请求时会受到限制,只能向相同源(域名、协议和端口号都相同)的服务器发送请求。当请求的目标服务器与当前页面的源不一致时,就会触发…...
![](https://www.ngui.cc/images/no-images.jpg)
Leetcode 2866. Beautiful Towers II
Leetcode 2866. Beautiful Towers II 1. 解题思路2. 代码实现 题目链接:2866. Beautiful Towers II 1. 解题思路 这一题其实思路上还是比较明显的,就是一个单调数组的问题,问题在于说如果具体去设计这个单调数组。 我们从题目出发&#x…...
![](https://img-blog.csdnimg.cn/f9149f3594234c2ba9683f1957e7f3d7.png#pic_center)
电脑C盘爆红怎么办?(小白篇)
文章目录 前言:1、清理临时和系统文件2、更改电脑默认软件安装位置3、微信、QQ文件存储路径放在其它盘4、卸载一些不常用的软件彩蛋 前言: C盘作为电脑的系统盘,如果出现爆满或者剩余空间很小整个C盘变红,这样会导致电脑系统运行…...
![](https://www.ngui.cc/images/no-images.jpg)
Office Xml 2003转XLSX
一、使用到的依赖包 1、xelem-3.1.jar 下载地址:管网下载地址 2、poi-3.17.jar 下载地址:https://mvnrepository.com/artifact/org.apache.poi/poi 二、实现方法 1、Xml2003公式转XLSX公式算法 (1)Xml2003函数格式 SUM(R[-1…...
![](https://www.ngui.cc/images/no-images.jpg)
skyWalking搭建(一)
title: “SkyWalking搭建(一)” createTime: 2021-07-27T14:34:2108:00 updateTime: 2021-07-27T14:34:2108:00 draft: false author: “name” tags: [“skywalking”] categories: [“java”] description: “测试的” 基于 docker 部署 skywalking 并实现 SpringBoot 全链路…...
![](https://www.ngui.cc/images/no-images.jpg)
Golang开发--sync.WaitGroup
sync.WaitGroup 是 Go 语言标准库中的一个并发原语,用于等待一组并发操作的完成。它提供了一种简单的方式来跟踪一组 goroutine 的执行状态,并在所有 goroutine 完成后恢复执行。 下面是关于 sync.WaitGroup 的实现细节的详细解释: 创建 Wa…...
![](https://www.ngui.cc/images/no-images.jpg)
Linux命令教程:使用cat命令查看和处理文件
文章目录 教程:使用cat命令在Linux中查看和处理文件1. 引言2. cat命令的基本概述3. 查看文件内容4. 创建文件5. 文件重定向和管道6. 格式化和编辑文件7. 实际应用示例7.1 使用cat命令浏览日志文件7.2 利用cat命令合并多个配置文件7.3 使用cat命令将文件内容发送到其…...
![](https://img-blog.csdnimg.cn/30d92c3181dd4731b957d43c8d2f9544.png)
Websocket集群解决方案以及实战(附图文源码)
最近在项目中在做一个消息推送的功能,比如客户下单之后通知给给对应的客户发送系统通知,这种消息推送需要使用到全双工的websocket推送消息。 所谓的全双工表示客户端和服务端都能向对方发送消息。不使用同样是全双工的http是因为http只能由客户端主动发…...
![](https://www.ngui.cc/images/no-images.jpg)
科技的成就(五十一)
397、初等数论的不可解问题 1936 年 4 月,邱奇证明判定性问题不可解。33 岁的邱奇发表论文《初等数论的不可解问题》,运用λ演算给出了判定性问题一个否定的答案。λ演算是一套从数学逻辑中发展起来的形式系统,采用变量绑定和替换,…...
![](https://img-blog.csdnimg.cn/3e8a40ea6c9c4ac6a116eec4946fe393.png)
Tomcat8 任意写文件PUT方法 (CVE-2017-12615)
Tomcat 任意写文件PUT方法 (CVE-2017-12615) 文章目录 Tomcat 任意写文件PUT方法 (CVE-2017-12615)1 在线漏洞解读:2 版本影响3 环境搭建4 漏洞复现4.1 访问4.2 POC攻击点4.2.1 直接发送以下数据包,然后shell将被写入Web根目录。4.2.2 访问是否通,可以访…...
![](https://www.ngui.cc/images/no-images.jpg)
SAP服务器修改主机名操作手册
1、业务背景 SAP服务器P2V:虚拟化后的服务器主机名(或叫计算机名、设备名,hostname,下文同)会和原参照克隆的服务器主机名一样,若两台服务器处于同一网域,会出现域冲突,导致以下事故发生 (1)、使得原服务器出现掉域情况(DEV->CLN->PRD后台服务器访问失效) …...
![](https://img-blog.csdnimg.cn/0a17f23e32cc42bd804b87148b3c075f.png#pic_center)
【大数据】Doris 构建实时数仓落地方案详解(一):实时数据仓库概述
本系列包含: Doris 构建实时数仓落地方案详解(一):实时数据仓库概述Doris 构建实时数仓落地方案详解(二):Doris 核心功能解读Doris 构建实时数仓落地方案详解(三)&#…...
![](https://img-blog.csdnimg.cn/1b853ed154cc4197bbc9a5cd441f83d0.png)
C++ list容器的实现及讲解
所需要的基础知识 对C类的基本了解 默认构造函数 操作符重载 this指针 引用 模板等知识具有一定的了解,阅读该文章会很轻松。 链表节点 template<class T>struct list_node{T _data;list_node<T>* _next;list_node<T>* _prev;list_node(const T&…...
![](https://img-blog.csdnimg.cn/ec5d1c22dc93493aa62e460987e051ae.png)
前端项目练习(练习-002-NodeJS项目初始化)
首先,创建一个web-002项目,内容和web-001一样。 下一步,规范一下项目结构,将html,js,css三个文件放到 src/view目录下面: 由于html引入css和js时,使用的是相对路径,所以…...
![](https://img-blog.csdnimg.cn/5ab92a30e02d484889e1a7743937dcc6.png)
C++QT day11
绘制时钟 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPaintEvent>//绘制事件类 #include <QDebug>//信息调试类 #include <QPainter>//画家类 #include <QTimer>//定时器类 #include <QTime> #include &…...
![](https://img-blog.csdnimg.cn/15f5202872d74787a88b502c92b46ed6.png)
Stable DIffusion 炫酷应用 | AI嵌入艺术字+光影光效
目录 1 生成AI艺术字基本流程 1.1 生成黑白图 1.2 启用ControlNet 参数设置 1.3 选择大模型 写提示词 2 不同效果组合 2.1 更改提示词 2.2 更改ControlNet 2.2.1 更改模型或者预处理器 2.2.2 更改参数 3. 其他应用 3.1 AI光影字 本节需要用到ControlNet,可…...
![](https://img-blog.csdnimg.cn/51baf48a44884f7eac75b3718fe50307.png)
C#通过重写Panel改变边框颜色与宽度的方法
在C#中,Panel控件是一个容器控件,用于在窗体或用户控件中创建一个可用于容纳其他控件的面板。Panel提供了一种将相关控件组合在一起并进行布局的方式。以下是Panel控件的详细使用方法: 在窗体上放置 Panel 控件: 在 Visual Studio 的窗体设计器中,从工具箱中拖动并放置一…...
![](https://img-blog.csdnimg.cn/fa372a73669a43e88b9e549a1c05ceae.png)
Vue2+ElementUI 静态首页案例
源码 <template><div class"app-container home"><el-row type"flex" justify"space-around" class"row-bg"><el-card class"box-card cardDiv1"><el-col :span"5"><div clas…...
![](https://img-blog.csdnimg.cn/a785b7240bce4cb68fdcfad22a2af115.png)
Linux的socket通信
关于套接字通信定义如下: 套接字对应程序猿来说就是一套网络通信的接口,使用这套接口就可以完成网络通信。网络通信的主体主要分为两部分:客户端和服务器端。在客户端和服务器通信的时候需要频繁提到三个概念:IP、端口、通信数据&…...
![](https://www.ngui.cc/images/no-images.jpg)
MySQL学习大纲
了解 MySQL 的基础知识和命令是使用此数据库的前提。以下是一些必须了解的 MySQL 概念和命令,包括基础的 CRUD(创建,读取,更新,删除)操作,以及一些高级功能: 1. 安装和启动 命令su…...
![](https://img-blog.csdnimg.cn/img_convert/b6592ab25a41dcb293d25ffcb30f5fac.png)
【Ambari】银河麒麟V10 ARM64架构_安装Ambari2.7.6HDP3.3.1(HiDataPlus)
🍁 博主 "开着拖拉机回家"带您 Go to New World.✨🍁 🦄 个人主页——🎐开着拖拉机回家_大数据运维-CSDN博客 🎐✨🍁 🪁🍁 希望本文能够给您带来一定的帮助🌸文…...
![](https://img-blog.csdnimg.cn/f9197261127343fcba2bcd9c296e7590.jpeg)
驱动开发练习,platform实现如下功能
实验要求 驱动代码 #include <linux/init.h> #include <linux/module.h> #include <linux/platform_device.h> #include <linux/mod_devicetable.h> #include <linux/of_gpio.h> #include <linux/unistd.h> #include <linux/interrupt…...
![](/images/no-images.jpg)
网站地图制作视频教程/网站推广做什么
四种方法实现单元格内的自动换行: 1.输入数据随时换行 在输入数据时换行,AltEnter组合键即可实现。此方法可使已输入内容的单元格在光标所在处换行。 2.单元格区域内换行 将某个长行转成段落并在指定区域内换行。例如&am…...
![](/images/no-images.jpg)
口碑好网站建设/推广计划怎么做
超时时间已到。在操作完成之前超时时间已过或服务器未响应”初步分析原因为对MSSQL操作时连接超时,知道这事,以前没留意,大概是在配置文件中设置连接时限,在网上找了下解决方法,大多说在数据库连接字符串里解决 SqlCo…...
![](https://img-blog.csdnimg.cn/20210427213256559.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjMwODA4MQ==,size_16,color_FFFFFF,t_70)
企业电子商务网站/怎么去做推广
目录一.基础二.一元函数求解(1)代码(2)结果(3)分析三.二元函数求解(1)代码(2)结果一.基础 梯度下降法是一个一阶最优化算法,它需要用到函数的一阶…...
![](/images/no-images.jpg)
天津网站制作软件/开通网站需要多少钱
1.环境配置教程 环境变量、安装版、配置版 2.编写启动tomcat的批处理文件 3.改变端口 4.虚拟目录 转载于:https://www.cnblogs.com/bdqczhl/p/5929741.html...
![](https://img-blog.csdnimg.cn/img_convert/6677fd70ef7de85432e3d4c53b10a949.png)
本溪城乡建设委员会网站/企业网站排名优化
500立方米的锦鲤鱼池过滤系统改造后,水质终于清澈了!锦鲤鱼池作为园林景观项目的组成元素之一,其核心在于用水造景,在很多公共区域、市政园林、酒店会所、私家庭院都有分布。在当前,锦鲤鱼池可以说随处可见,…...
![](https://img-blog.csdnimg.cn/202001182213016.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dteTAyMTdf,size_16,color_FFFFFF,t_70)
福州建站服务/百度榜单
串的定义 串(string)(或字符串)是由零个或多个字符组成的有限序列,一般记为, s“a1,a2…an”(n≥0) n为字符串的长度零个字符的串称为空串,其长度也为0串中任…...