LDD3 学习笔记
LDD3 WEEK4代码补充环境
Linux rogerthat 5.19.0-46-generic #47-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 16 13:30:11 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
第五章complete轻量级的一种同步机制
#include <linux/module.h>
#include <linux/init.h>
#include <linux/sched.h> /* current and everything */
#include <linux/kernel.h> /* printk() */
#include <linux/fs.h> /* everything... */
#include <linux/types.h> /* size_t */
#include <linux/completion.h>
MODULE_LICENSE("Dual BSD/GPL");
static int complet ...
LDD3 学习笔记
LDD3 WEEK2第七章 时间、延时,和延后工作jiffies 回绕
定时器也是一种潜在的竞争条件的源
tasklet 大部分用于中断管理,也就是后文第十章的前和后半部。把一个中断处理分成两部分,也可以使用工作队列。
tasklet workqueue 区别:
tasklet 代码必须是原子的
tasklet 在同一 cpu 上运行
内核可以请求工作队列延后一个明确的间隔。
第八章 分配内存kmalloc
kmem_cache_create,Slab 缓存(内存排列密集,速度稍微提升)scullc
mempool_create 内存池
get_free_page(get_free_pages) 请求页 scullp
vmalloc,vmalloc 在分配几个页时比其他函数更快, 但是 当获取单个页时有些慢, 因为页表建立的开销 scullv
DEFINE_PER_CPU,per-cpu 每个都使用自己的拷贝
alloc_bootmem,启动时获得大量缓冲,绕开了所有内存管理
第九章 与硬件通信I/O 端口 request_region
端口分配(部分)
rt@roge ...
LDD3 学习笔记
LDD3 WEEK1关于几种
一些 log level,感觉 ERR 还挺好用的
8 #define KERN_EMERG KERN_SOH "" /* system is unusable */
9 #define KERN_ALERT KERN_SOH "" /* action must be taken immediately */
10 #define KERN_CRIT KERN_SOH "" /* critical conditions */
11 #define KERN_ERR KERN_SOH "" /* error conditions */
12 #define KERN_WARNING KERN_SOH "" /* warning conditions */
13 #define KERN_NOTICE KERN_SOH "" /* normal but significant condition */
14 #define KERN_INFO KERN_SOH "" /* informational */
15 #define KERN_DE ...
LDD3 学习笔记
LDD3 WEEK0这周忙于人工智能课程的作业,书本看的不多,下周多看一些多实践一些。
1.简介主要介绍了驱动程序的角色,内核划分,以及 Linux 版本号、社区的一些基本信息。
2.建立和运行模块hello worldobj-m += hello_world.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
#include<linux/module.h>
#include<linux/kernel.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("RogerThat");
MODULE_DESCRIPTION("A simple hello world module");
MODULE_VERSION("0.01");
static int __init hello_mod_init(void)
{ ...
Windows Terminal Customization
Windows Terminal CustomizationThis article mainly solved the problem of “open windows terminal here”.
Firstly u need to download windows terminal in Microsoft Store,then u need to edit settings of windows terminal, add a customized shell like conda.
Run this registry file.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="open terminal here"
[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="wt -d %V -p conda"
-d ...
MIT6.191
SOME OF NOTES FROM THE LECTUREDeep Generative ModelingGenerative Modeling Goal: Take as input training samples from some distribution and learn a model that represents that distribution
latent variable: They are not directly observable, but they are the true underlying features or explanatory factors
Autoencoder: An autoencoder is a type of artificial neural network used to learn efficient codings of unlabeled data (unsupervised learning)
variational autoencoders(VAEs):
Generative Adversarial ...
英语学习笔记
关于不记录点什么就什么也记不住这件事。
学习英语的困境阅读的速度比较慢,时常会在心里默读,但是主动看快点,又会导致囫囵吞枣。
口语发音不标准,听力容易理解出错。
目前的方法单词/句的积累(单纯的记忆,墨墨背单词,结合句子,部分结合词根)目前的进度是 100 w/m, 已经连续背了 25 天,但还是有一点慢。
关于口语/听力这回事音节(Syllable)每个音节都包含一个元音英标,辅音则是音节的分界线。
音节的划分可以用(-)或(·)来表示。
闭音节:以辅音结尾的音节。
开音节:以元音结尾的音节。
这俩后文也(自然拼读)中涉及到。
重音(Word Stress)重音符号(ˈ),次重音符号(ˌ)
自然拼读(Phonics)很多非常规的拼读,仍需积累。
单个辅音字母在单词中通常的读法(以英音为例)
辅音字母(组合)在单词中通常的读法(以英音为例)
单个元音字母在单词中的通常读法(以英音为例)
元音字母(组合)在单词中的通常读法(以英音为例)
节奏(Rhythm)英语不像中文的发音,中文每个字基本都是一个音节,每个音节等时,而英文一个单词可以有 ...
如何给 LLVM RISCV 添加一条“指令”(改进)
实验报告(改进)实验要求
完成指令编码设计(4分)
能够通过自己编写的至少2个正确汇编测试程序,生成正确的madd指令编码(4分)
能够通过自己编写的至少2个错误汇编测试程序,进行适当的错误处理(4分)
能够通过自己编写的至少1个C语言测试程序,生成正确的madd汇编指令(4分)
编码规范,风格良好,注释适当,架构合理(4分)
额外完成的
使用比较合适的测试方法
可以给 llvm 前端也添加相应的支持,支持高级语言的内联汇编或者内置函数生成对应的汇编
代码 Patch主模块rt@rogerthat ~/m/llvm-project-llvmorg-13.0.0 (master)> git format-patch 3c115231b000ed300a6f0551b5b30bd549d566f3
0001-Add-builtin-__builtin_riscv_madd.patch
0002-Edit-Emit-function-type-error-and-grammer-error.patch
0003-Repair-fix-int_ri ...
算法學習笔记
动态规划最长递增子序列问题(Longest Increasing Subsequence)
子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
这是我写的代码(有点差劲的代码
class Solution {
public:
vector<int> dp;
int tryThrough(vector<int>& nums) {
int res = 0x80000000;
for (int i = 0; i < nums.size(); i++) {
if(dp[i] > res){
res = dp[i];
}
}
return res;
}
int lengthOfLIS(vector<int>&am ...
论文笔记:Tracer:Signature-based Static Analysis for Detecting Recurring Vulnerabilities
阅读论文:Tracer: Signature-based Static Analysis for Detecting Recurring Vulnerabilities
Intro由于开发者很容易在同样的地方踩坑(数学运算,协议等),或者人们对复杂的低级语意的误解(C 语言中的未定义行为等),加之代码重用,致使相似的漏洞重复出现。
代码相似性有一些相关论文,这里记录一下
Yaniv David et al. Firmup: Precise static detection of common vulnerabilities in firmware.
Steven H. et al. Asm2vec: Boosting static representation robustness for binary clone search against code obfuscation and compiler optimization
Jiyong Jang et al. Redebug: Finding unpatched code clones in entire os distrib ...