kernel
蓝白天际线
本人从事linux的嵌入式开发.
展开
-
Linux内核INIT_WORK如何传参数
怎样传递参数到工作队列原创 2023-12-06 17:36:37 · 310 阅读 · 0 评论 -
Linux内核notifier机制通知链
内核使用通知链的机制在内核各子系统之间进行事件通知(注:无法用于内核态和用户态之间的事件通知)。一、通知链介绍在文件include/linux/notifier.h中,可以查看Linux内核定义的四种通知链类型:通知链类型 初始化 注册函数 通知函数 Atomic notifier chains(原子通知链) ATOMIC_NOTIFIER_HEAD() atomic_notifier_chain_register()/ atomic_notifier_c转载 2021-12-23 18:10:23 · 1465 阅读 · 0 评论 -
Android 9.0 Auto及m4 core倒车逻辑--基于imx8qm
新板子car版本android系统收不到m4发送的资源释放消息,屏不亮,先分析一下逻辑关系。上图就是car版本AP核和M41核之间的倒车逻辑。阶段1 系统启动完毕mek_8q.mk 63: $(IMX_DEVICE_PATH)/init_car_m4.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.car_additional.rc 68: $(IMX_DEVICE_PATH)/init_car_no_m4.rc:$(TARGET_COPY_O.转载 2020-05-08 18:25:52 · 1240 阅读 · 0 评论 -
Linux内核中的软中断、tasklet和工作队列详解
本文基于Linux2.6.32内核版本。引言软中断、tasklet和工作队列并不是Linux内核中一直存在的机制,而是由更早版本的内核中的“下半部”(bottom half)演变而来。下半部的机制实际上包括五种,但2.6版本的内核中,下半部和任务队列的函数都消失了,只剩下了前三者。介绍这三种下半部实现之前,有必要说一下上半部与下半部的区别。上半部指的是中断处理程序,下半部则指的是一些...转载 2019-12-16 11:03:51 · 302 阅读 · 0 评论 -
request_firmware函数的使用
request_firmware函数主要是用来在kermnel 里给外围设备更新固件的时候,获得固件文件的。调用此函数后,编译进系统的固件文件,就被调用内存。当调用request_firmware 函数时,它会自动在几个固定的文件夹下搜索,查找和文件名字相同的文件,然后打开读到内存。1.调用方法: const struct firmware *cfg; int re...原创 2019-11-19 11:10:40 · 1195 阅读 · 0 评论 -
一次spinlock死锁故障的定位(太经典,收藏!)
本文讲述一次spinlock死锁故障的定位过程,目的不在于问题本身,而在于展现一个内核bug的分析过程,提供一种分析思路,供大家参考。一、问题现象内核出现panic,kdump搜集到了vmcore。vmcore中直接导致panic的log信息为(包含相应CPU上的堆栈):点击(此处)折叠或打开Kernel panic-notsyncing:Watchdog detect...转载 2019-05-20 19:58:30 · 3363 阅读 · 0 评论 -
Linux编程-让进程或线程运行在指定的CPU上
By:Ailson JackDate:2016.03.18个人博客:www.only2fire.com本文在我博客的地址是:http://www.only2fire.com/archives/55.html,排版更好,便于学习。为了让程序拥有更好的性能,有时候需要将进程或线程绑定到特定的CPU上,这样可以减少调度的开销和保...转载 2019-05-07 11:08:23 · 445 阅读 · 1 评论 -
linux下指定进程运行的CPU
如果你觉得比内核的进程调度器更了解你的进程,不想过多的占用CPU0,更高的缓存命中,那么可以设置进程运行在某个或某些CPU上。redis是单进程模型,为了充分利用多核服务器性能,可以指定不同的redis实例运行在不同CPU上,这样也可以减少进程上下文切换。方法有两种:一、使用命令taskset 在RedHat系linux中,可以sudo yum p...转载 2019-05-07 11:06:17 · 1837 阅读 · 0 评论 -
c语言设置cpu affinity (设置程序需要使用的cpu内核) cpu mask
最近打算写个小程序, 需要控制使用的是哪个 cpu 内核,所以做了一些调查, 整理一下分享给大家。主要参考:http://www.gnu.org/software/libc/manual/html_node/CPU-Affinity.html/http://stackoverflow.com/questions/7296963/gnu-source-and-use-gnuhtt...转载 2019-05-07 10:53:31 · 1447 阅读 · 0 评论 -
Linux操作系统在ARM上 的移植过程及分析
一. 前言 面向A R M 微处理器构架的嵌入式操作系统的使用量将在今后五年持续增长,在各种嵌入式操作系统中,Linux是获得支持最多的第三大力量。 目前,ARMLinux 支持包括A R M 6 1 0 、A R M 7 1 0、A R M 7 2 0 Tcores、ARM920T cores、StrongARM110、StrongARM 1100、XScale 等系列...转载 2019-04-30 17:07:31 · 10143 阅读 · 0 评论 -
用bochs调试自己写的系统引导代码
1 安装和配置bochs 首先从bochs.sourceforge.net里面把BOCHS给download下来,鉴于Windows的普及,仅仅谈BOCHS在win下的使用方法,其实在其它的OS中方法差不多,不过我仅仅在Window和Linux下安装使用过。 在bochs.sourceforge.net里面把Bochs-2.6.1.exe给download下来,双击就开始安装。转载 2017-02-17 09:45:22 · 2725 阅读 · 0 评论 -
linux kernel的cmdline参数解析原理分析
转载:http://blog.csdn.net/skyflying2012/article/details/41142801Kernel 版本号:3.4.55Kernel启动时会解析cmdline,然后根据这些参数如console root来进行配置运行。Cmdline是由bootloader传给kernel,如uboot,将需要传给kernel的参数做成一转载 2018-01-25 17:08:39 · 1360 阅读 · 0 评论 -
怎样使用module_param()来手动传递变量
对于如何向模块传递参数,Linux kernel 提供了一个简单的框架。其允许驱动程序声明参数,并且用户在系统启动或模块装载时为参数指定相应值,在驱动程序里,参数的用法如同全局变量。使用下面的宏时需要包含头文件。module_param() 和 module_param_array() 的作用就是让那些全局变量对 insmod 可见,使模块装载时可重新赋值。原创 2018-01-25 18:33:24 · 1091 阅读 · 0 评论 -
怎么使用cmdline来传递参数
要求: 根据不同的cmdline设置值,选择不同的液晶尺寸参数配置驱动。步骤:1. 首先设置cmdline。 在uboot里,设置命令如下: setenv bootargs 'console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:dev=lcd,bpp=32 video=mxcfb原创 2018-01-26 10:06:03 · 1484 阅读 · 0 评论 -
Linux 的死锁检测
死锁死锁:就是多个进程(≥2)因为争夺资源而相互等待的一种现象,若无外力推动,将无法继续运行下去。注意,只有在多进程或者多线程之间或者他们与中断之间相互通讯或者共享资源才有可能发生死锁,单线程或者进程之间没有联系的话,一般不会发生死锁。锁的种类比较多,这里主要说自旋锁和信号量。两者的差别就在于前者获得不到资源时的动作是不断的资源(即忙转浪费 cpu 的 cycles)而后者则表现为睡眠等待...转载 2019-04-26 16:45:36 · 1097 阅读 · 0 评论 -
Linux 死锁检测模块 Lockdep 简介——转自魅族内核团队,对死锁检测认识上升到新高度
Linux 死锁检测模块 Lockdep 简介原文地址http://kernel.meizu.com/linux-dead-lock-detect-lockdep.html25 July 2016死锁概念死锁是指多个进程(线程)因为长久等待已被其他进程占有的的资源而陷入阻塞的一种状态。当等待的资源一直得不到释放,死锁会一直持续下去。死锁一旦发生,程序本身是解决不...转载 2019-04-28 11:06:38 · 646 阅读 · 0 评论 -
Linux Workqueue
转载之:http://kernel.meizu.com/linux-workqueue.html21 August 2016Workqueue 是内核里面很重要的一个机制,特别是内核驱动,一般的小型任务 (work) 都不会自己起一个线程来处理,而是扔到 Workqueue 中处理。Workqueue 的主要工作就是用进程上下文来处理内核中大量的小任务。所以 Workqueue 的主...转载 2019-04-28 11:34:16 · 528 阅读 · 0 评论 -
Linux Interrupt
转载之:http://kernel.meizu.com/linux-interrupt.html02 September 2016在面试的时候我们常常被问及一个问题:几种中断下半部机制 softirq、tasklet、workqueue 有什么区别?Linux 为什么要设计这几种机制?真正能够回答清楚的人还是少数的。下面我们就详细分析一下这其中的区别。本文的代码分析基于 Linux...转载 2019-04-28 11:40:12 · 1328 阅读 · 0 评论