- 博客(110)
- 资源 (10)
- 收藏
- 关注
原创 ARM64 架构异常处理
使用ARMv8 架构中的访问实效寄存器 – 综合信息寄存器 ESR。代码路经:arch/arm64/kernel/entry.S。bit(25) IL 表示同步异常指令的指令长度。从上面代码可以看出,我们发生数据异常是调用到。对于异常,程序会跳转到el1_sync函数。bit(31-26) EC 表示异常类型。调用到了do_mem_abort 函数。bit(24-0) 具体的异常指令编码。bit(63-32) 保留。
2023-08-24 22:29:39
311
1
原创 页面分配和释放函数
释放内存页面的核心功能是把页面添加到伙伴系统中适当的free_area链表.在释放内存块的时候,会查询相邻内存块是否空闲,如果也是空闲的就会将当前块继续加到更加高一阶的空闲链表free_area中(页面合并),一直到可能合并的内存块都完成合并.get_page_from_freelist 尝试分配物理页面,如果分配失败了.使用__alloc_pages_slowpath,进入慢速分配路径。
2023-04-29 16:04:48
107
原创 内存的初始化
表示在 node 0 上面初始化了262144个页262144*4k = 1048576k = 1024M = 1G。set_pageblock_migratetype:设置页块(pageblock)的迁移类型。get_pageblock_migratetype:获取页块(pageblock)迁移类型。mem_map 存放的是struct page本身,所以需要花费大量的页来存储。页帧号(pfn page frame number )到页(page)迁移类型的最小单位是pageblock!
2023-04-10 23:08:21
127
原创 linux 物理页面分配
用来分配2的order次幂个连续的物理页面,返回第一个物理页面的page数据结构.需要小于MAX_ORDER,默认是1111返回分配内存空间的虚地址,从这个函数不会使用内核的高端地址.
2023-04-05 00:05:57
132
原创 mutex_lock 函数分析
path:kernel/locking/mutex.cfunction source code:void __sched mutex_lock(struct mutex *lock){ might_sleep(); if (!__mutex_trylock_fast(lock)) __mutex_lock_slowpath(lock);}EXPORT_...
2022-04-10 11:03:00
109
原创 编译内核时: [-Warray-bounds]
完整报错:warning: 'memset' offset [17, 48] from the object at 'r6' is out of the bounds of referenced subobject 'rtmsg_dst' with type 'struct in6_addr' at offset 0 [-Warray-bounds]导致编译终止。解决方法1: 找到对应函数...
2021-05-03 00:55:00
150
原创 make 4.2.1 Installing to target 报错
报错内容:2021-05-01T16:21:46 WARNING: 'makeinfo' is missing on your system.2021-05-01T16:21:46 You should only need it if you modified a '.texi' file, or2021-05-01T16:21:46 any other file indirectly aff...
2021-05-01 16:59:00
45
原创 scripts/extract-cert.c:21:10: fatal error: openssl/bio.h: No such file or directory
rk3399skd编译kernel 报错:scripts/extract-cert.c:21:10: fatal error: openssl/bio.h: No such file or directory 21 | #include <openssl/bio.h> | 原因是没有安装 libssl-dev解决方法: sudo apt-get in...
2021-04-25 22:03:00
422
原创 C++ 异常处理
1、使用 try catch 语句处理C++ 中的异常 2、使用throw 关键字抛出异常 3、同一个try语句可以跟上多个catch 语句 4、异常处理 不进行类型转换代码示例:void demo1(){ try { throw 0;// throw 'c';// throw "abc"; } catch...
2020-10-28 00:06:00
38
原创 Qt发送事件与自定义事件
发送事件 主要函数: bool QCoreApplication::sendEvent ( QObject *receiver, QEvent * event ) void QCoreApplication::postEvent ( QObject *receiver, QEvent * event ) sendEvent :阻塞型发送事件,在发送事件时直接调用Event函数(能够在堆 ...
2020-03-20 23:31:00
34
原创 Qt文本流和数据流
Qt文件类型分为文本文件(内容是可以读的文本字符)与数据文件(二进制数据)。 注:对于电脑来说所有的文件都是二进制数据。QFile直接支持文本文件与数据文件的读写。 QTextStream text(&file); QDataStream text(&file);...
2020-02-21 00:20:00
31
原创 Qt文件操作
Qt中IO操作的处理方式: ——Qt通过统一的接口简化了 文件 与 外部设备 的操作方式 ——Qt中的文件可以看成 一种特殊的外部设备 ——Qt中的文件操作 与外部设备操作相同IO操作中接口函数: ——bool open(OpenMode mode) 打开设备 ——QByteArrary read(qint64 maxSize) ...
2020-02-20 17:03:00
29
原创 Qt 布局管理器
布局管理器: ——提供相关类对界面组件进行布局管理 ——能够自动排列窗口的组件界面 ——窗口变化后自动更新组件的大小QBoxLayout布局管理器(可以相互嵌套) ——以水平或者垂直的方式进行管理界面组件 ——垂直方式QVBoxLayout ——水平方式QHBoxLayout测试代码:/*布局管理器*/ layout1->addWidget(&a...
2020-02-11 17:53:00
30
原创 Qt 标准对话框
Qt提供了一些可以复用的对话框类型,这些对话框类型全部继承与QDialo类。 Qt中标准对话框遵循相同的使用方法: //定义对话框对象 DialogType dlg(this); //设置对话框属性 dlg.setPrpertyXXX(value); if(dlg.exec() == DialogType::value) { //获取对话框数据 Type ...
2020-02-09 01:09:00
33
原创 Qt 对话框QDailog及其类型
学习目的: Qt 对话框QDialog 学习。 对话框是与用户进行简短交互的顶层窗口 QDailog是Qt中所有对话框的基类 QDailog继承于QWidget是一种容器类型的组件 —— QDialog作为专用的交互窗口而存在——QDialog不能作为子部件嵌入其它容器中——QDialog其实就是定制了窗口样式的特殊QWidget实验:QDialog与QWidget...
2020-02-05 16:31:00
57
原创 Qt 对象间的父子关系
Qt对象间可以存在父子关系: ——每个对象都保存有它所有子对象的指针 ——每个对象都有一个其父对象的指针 当指定Qt对象的父对象时: ——其父对象会在自己的子对象链表中加入该对象的指针 ——该子对象会保存其父对象的指针 实验代码: 1、通过创建三个QObject 对象 p c1 c2 2、p 作为c1 c2的父对象 3、打印c1 c2 的地址 4、打印...
2020-02-04 17:16:00
40
原创 Qt 信号与槽
Qt信号模型: Qt封装了具体操作系统的消息机制 Qt遵循进店的GUI消息驱动事件模型 Qt中系统消息概念: 信号(Signal)——由操作系统产生的消息 槽(Slot)——程序中的消息处理函数 链接(Connect)——将系统消息绑定到信息处理函数信号与槽 核心函数 QObject::connect 函数 bool connect(const QObject...
2020-02-02 21:08:00
31
原创 Qt 计算器界面实现
学习目的: QWidget QPushbutton QLineEdit使用。 通过Qt 代码实现一个计算器界面。QWidget窗口组件: QWidget类继承自 QObject 类和QPaintDevice类 QObject 是所有 支持Qt对象模型 的基类 QPaintDevice Qt中所有 可绘制组件 的基类 QWidget能够绘制自己 和处理 用户的输...
2020-02-01 18:43:00
54
原创 C++ 多态、虚函数(virtual 关键字)、静态联编、动态联编
函数重写:(在子类中重写父类中的函数) 父类中被重写的函数 依然会继承 给子类。 子类中重写的函数将覆盖父类中的函数。 通过作用域分辨符 :: 可以访问到父类中的函数。 例如:#include <iostream>#include <string>using namespace std;class parent{ publ...
2019-11-08 21:05:00
47
原创 C++ 类类型转换函数explicit 关键字
标准数据之间会进行 隐式类型安全转换。 转换规则: 隐式类型转换的问题: #include <iostream>#include <string>using namespace std;int main(){ short s = 'a'; unsigned int ui = 1000; int i = -2000;...
2019-10-30 23:14:00
28
原创 c++ 智能指针
在使用指针的时候容易产生内存泄漏(在申请后没有释放) -动态申请堆空间,用完不归还。这样就导致越来越多的堆空间不能够被使用到。 -C++语言中没有垃圾回收的机制 -指针无法控制所指堆空间的声明周期(但是类的构析函数可以)。 例如如下代码:#include <iostream>using namespace std;class testPointer{...
2019-10-29 22:18:00
24
原创 C++ 数组操作符重载、函数对象分析、赋值操作符
string类型访问单个字符 #include <iostream>#include <string>#include <sstream>using namespace std;//访问 string单个字符int main(){ string s = "1a2b3a4c"; int n = 0; ...
2019-10-23 23:14:00
39
原创 C++ 标准库字符串类使用
标准库中的字符串类 C++语言直接支持C语言所有概念。 C++中没有原生的字符串类型。由于C++中没有原生的字符串类型,C++标准库提供了string类型。 1、string 直接支持字符串链接 2、字符串大小比较 /*实验 字符串排序 拼接*/ #include <iostream>#include <string>#inclu...
2019-10-18 00:12:00
27
原创 C++ 友元(friend关键字)、类中的重载、操作符重载(operator关键字)
C++ 中友元的用法: 1、在类中使用friend关键字声明 2、类的友元可以是其它类或者具体函数 3、友元不是类的一部分 4、友元不受类中访问级别的限制 5、友元可以直接访问具体类中的所有成员。友元声明使用格式: class class_name() { int x; int y; public: ...
2019-10-16 21:58:00
63
原创 C++ 二阶构造模式
1、如何判断构造函数的执行结果? 构造函数没有返回值,所以不能通过返回值来判断是构造函数是否构造成功。 如果给构造函数强行加入一个返回值,用来表示是否构造成功。这样确实能够反映出构造的结果,但是不够优雅,有点呆。2、在构造函数中执return 会发生什么? 当构造函数中执行return后构造函数直接返回,后面的程序将不能被执行到。这样将产生一个“半成品对象”。3、构造函数执行结束...
2019-10-14 23:45:00
35
原创 C++ 对象构造顺序、构析函数、临时对象。
对象的构造顺序:1、对于局部对象,构造顺序是根据程序执行流进行构造,从上到下。#include <stdio.h>class Test{ int mi; public: Test() { printf("Test()\n"); } Test(int v) { printf("Test(...
2019-10-12 22:17:00
31
原创 C++ 初始化列表
C++中提供了初始化列表对成员变量进行初始化。 语法规则:class_name::class_name() m1(v1),m2(v2,v3),m3(v3) { ....... }注意: 成员的初始化顺序,与成员的声明顺序相同。 成员的初始化顺序与初始化列表的位置无关。 初始化列表比构造函数先执行。测试代码...
2019-10-12 12:57:00
29
原创 C++ 对象的构造
在类里面成员函数的初始值是多少了?(取决于创建对象的位置,是在堆、栈、还是在静态存储区中创建。) 例如: #include <stdio.h>class Test{ private: int i; int j; public : int get_i(void) {return i;} int get_j(void)...
2019-10-10 23:21:00
38
原创 C++ 类学习笔记 :: 作用域限定符
类与封装的概念:1、类: 类的实现、类的使用。 当使用类的时候,不需要关心实现的细节。当创建类的时候,才需要考虑到内部具体的实现细节。2、类的封装: 成员变量,C++用于表示属性的变量。 成员函数,C++中用于表示类的行为的函数。3、pubic、private关键字。(使得变量和函数有了访问权限) pubic:成员变量和成员函数。可以在类的外部被访问。 privat...
2019-10-08 23:08:00
72
原创 C++新型强制类型转换。
C++强制类型转换分为4个不同的类型。 1、static_cast -用作基本类型转换。 -不能用于基本类型指针转换。 -可以用于有继承关系对象之间的转换和类指针之间的转换。#include <stdio.h>void static_cast_demo(void){ int i = 0x12345; char c = 'c';...
2019-10-07 13:38:00
27
原创 C++ new、delete、namespace关键字。
C++ 中的动态内存分配: C++与C语言分配内存关键字不同,C语言中的动态内存分配是通过 malloc(分配内存) 与 free(释放内存)完成。C++使用new(分配内存) delete(释放内存)。 C++与C语言分配内存方式不同,C语言是以字节进行内存分配,C++是以类型进行内存分配。 C++申请内存方法: 变量申请内存:type *name = new typ...
2019-10-07 10:15:00
32
原创 C++ 调用C语言、extern "C"、__cplusplus关键字
——C++编译器完全兼容C语言的编译方式。(但是得有源代码)——C++编译器会优先使用C++的编译方式进行编译——extern "C" 关键字能够强制C++编译器进行C方式的编译 学习目标:实现C语言与C++之间的互相调用 学习 extern "C" {} 关键字 学习 __cplusplus标准宏实验一、通过C++调用C编译器编译出来的 .o 文件 ...
2019-09-28 22:29:00
30
ubuntu-base-18.04.4-base-armhf.tar.gz
2020-08-06
ubuntu-base-16.04.6-base-armhf.tar.gz
2020-08-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人