![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
内核
文章平均质量分 74
it潮人
这个作者很懒,什么都没留下…
展开
-
register_chrdev_region、alloc_chrdev_region、register_chrdev区别
内核提供了三个函数来注册一组字符设备编号,这三个函数分别是和。这三个函数都会调用一个共用的函数向内核设备表来注册一组设备编号范围(即一个 char_device_struct 结构)。转载 2024-06-07 09:45:50 · 144 阅读 · 0 评论 -
01-register_chrdev_region解析
注意:cp = &(*cp)->next,cp是char_device_struct **类型,(*cp)->next是一个char_device_struct 类型,所以&(cp)->next,就得到一个char_device_struct **,并且这时候由于是指针,所以对cp赋值,就相当于对链表中的元素的next字段进行操作。在内核4.4版本中,MKDEV(ma,mi) ((ma)<<8 | (mi)),与之前的主设备号占高12位,次设备号占低20位不同,所以次设备号只能从0~255,转载 2024-06-06 17:50:34 · 30 阅读 · 0 评论 -
【Linux】内核线程创建 kthread_run 函数和内核中断
kthread_run函数详解以PCIE的热插拔内核线程创建为例说明注意:内核线程和RTOS的线程略有不同,这里Linux上创建以后直接运行,RTOS上有的是需要加入到调度队列中后才会执行,比如RT-Thread的系统kthread_run 是 Linux 内核中的一个函数,用于创建和运行内核线程(Kernel Thread)。在 Linux 内核中,线程是一种轻量级的执行单位,可以独立运行并共享进程资源。转载 2024-06-06 15:08:45 · 31 阅读 · 0 评论 -
Linux多核运行机制(SMP)
/load_balance检查该cpu在这一层的调度域中是否存在负载不平衡的情况,如果存在该cpu会分担负载最重的那个cpu的一些任务。/* (7) 如果本sd的balance间隔时间已到,进行实际的load_balance() *//* (6) 如果需要串行化(SD_SERIALIZE),做balance之前需要持锁 */for_each_domain(cpu, sd) {//遍历该cpu的所有调度域,从最低一级到最高一级。// next_decay_max_lb_cost 是下一次进行衰减的时间。转载 2024-05-09 17:17:29 · 363 阅读 · 0 评论 -
操作系统 宏内核和微内核的区别
优点:超级稳定,驱动等的错误只会导致相应进程死掉,不会导致整个系统都崩溃,做驱动开发时,发现错误,只需要kill掉进程,修正后重启进程就行了,比较方便。宏内核:简单来说,就是把很多东西都集成进内核,例如linux内核,除了最基本的进程、线程管理、内存管理外,文件系统,驱动,网络协议等等都在内核里面。内核态:CPU可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,CPU也可以将自己从一个程序切换到另一个程序。缺点:稳定性差,开发过程中的bug经常会导致整个系统挂掉。宏内核和微内核的区别。转载 2024-04-28 10:44:04 · 136 阅读 · 0 评论 -
Device Tree 详解
对于DeviceTree的来历和用处大部分人都已经非常了解了,DeviceTree发源于PowerPC架构,为了消除代码中冗余的各种device注册代码而产生的,现在已经成为了linux的通用机制。其中“bootargs”属性用来传递cmdline参数,“stdout-path”属性用来指定标准输出设备,“stdin-path”属性用来指定标准输入设备。“parent unit address”的cells长度由父节点的“#address-cells”指定;每个DeviceTree只有一个根节点。转载 2024-04-03 10:19:44 · 162 阅读 · 0 评论 -
fatal error: openssl/bio.h: No such file or directory 解决方法
后,发现编译错误消除,问题解决。转载 2023-10-19 14:26:35 · 1256 阅读 · 0 评论 -
Linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解
但是一般我们不采取这个方案,我们选择在配置界面中通过空格、esc、回车选择某些选项选中或者不选中,最后保存退出的时候,Linux内核会把新的选项(正确的参考答案)更新到.config中,此时我们可以把.config重命名为其它文件保存起来(当你执行make distclean时系统会把.config文件删除),以后我们再配置内核时就不需要再去arch/arm/configs下考取相应的文件了,省去了重新配置的麻烦,直接将保存的.config文件复制为.config即可.转载 2023-08-16 16:55:57 · 2306 阅读 · 0 评论 -
Linux内核中container_of函数详解
container_of(ptr, type,member)函数的实现包括两部分:1. 判断ptr 与 member 是否为同意类型2. 计算size大小,结构体的起始地址 = (type *)((char *)ptr - size) (注:强转为该结构体指针)现在我们知道container_of()的作用就是通过一个结构变量中一个成员的地址找到这个结构体变量的首地址。container_of(ptr,type,member),这里面有ptr,type,member分别代表指针、类型、成员。1。转载 2024-02-20 17:08:30 · 87 阅读 · 0 评论 -
container_of函数详解
可以说是内核中使用最为频繁的一个函数了,简单来说,它的主要作用就是根据我们结构体中的已知的成员变量的地址,来寻求该结构体的首地址,直接看图,更容易理解。了解完内部完整的实现手法之后,我们也可以手码一个。函数内部涉及的相关知识了然于胸,下面我们再来看。,该如何理解这个表达式呢?,下面我们一一拆解来看。函数中,主要用来断言判断。转载 2024-02-20 15:05:57 · 1535 阅读 · 0 评论 -
nf_register_hooks NF_HOOK
我自己做实验,在nf_register_hooks将自己定义的、包含了hook函数,hook点的nf_hook_ops结构体注册到系统中后,一旦有符合条件的包出现,系统都会打印出相应的语句。通过NF_HOOK的宏定义可以看到,NF_HOOK主要是调用nf_hook_slow,那么,nf_hook_slow主要做了哪些东西呢?返回的是NF_QUEUE,NF_STOLEN,NF_DROP,就立刻返回,如果是NF_REPEAT 只是 改。NF_IP_POST_ROUTING处对所有向链路。转载 2024-01-30 20:04:15 · 210 阅读 · 0 评论 -
内核读写文件
简介用户空间 内核空间环境架构:ARM内核版本:4.15源码file.cMakefile。转载 2023-11-16 10:43:37 · 208 阅读 · 0 评论 -
yes x | make menuconfig解释
原创 2023-08-10 09:52:04 · 56 阅读 · 0 评论 -
内核编译
PATH:/pi/bsp/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin:/pi/bsp/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/ #32位环境,5、编译完成后,在/arch/arm/boot目录下可以看到ZImage,就是编译生成的新内核。使用sudo apt-get install libssl-dev来安装libssl-dev。转载 2023-07-18 15:30:40 · 45 阅读 · 0 评论 -
驱动模块(ko)文件加载失败分析
1.分析内核版本, uname -a 一看,最小系统的内核版本和编译SDK的内核版本一样。自然在编译时是需要依赖内核的。2.通过分析编译最小系统的内核和编译SDK的内核,发现两个内核虽然版本一样,但两个内核配置不一样。问题有眉目了,可能是最小系统的内核做了裁剪,而SDK编译的内核没有同步更新,造成SDk编译的驱动在最小系统中找不到对应的依赖。1.将最小系统的make menucofig所产生的.config 替换SDK编译的内核源码中,做到编译最新系统的内核源码和编译SDK的内核源码 .cofnig一致。转载 2022-10-19 15:14:06 · 2605 阅读 · 0 评论 -
Linux pstore 实现自动“抓捕”内核崩溃日志
作者简介:廖威雄,就职于珠海全志科技股份有限公司,负责Linux IO全栈研发、性能优化、开源社区开发交流、Linux 内核开源社区pstore/blk,mtdpstore模块的作者、大客户存储技术支持、全志首个UBI存储方案主导人、全志首个RTOS NFTL主导人我设计的内核模块pstore/blk及其衍生的pstore/zone,mtdpstore终于在v5.8-rc1版本合入了torvalds/linux.git,而且发现国内外对pstore的介绍都好少好少,干脆来一波科普。简介#.转载 2022-02-15 20:24:16 · 707 阅读 · 0 评论