Linux内核
文章平均质量分 75
lee_xin_gml
这个作者很懒,什么都没留下…
展开
-
schedutil--调频与调度的交互
cpufreq_update_utilsched模块通过cpufreq_update_util进行调频, flags里包含SCHED_CPUFREQ_WALT,表示是WALT负载变化导致的调频; 否则,就是PELT负载变化引起的调频, 高通设备的默认配置中为WALT负载追踪,因此需要重点关注因WALT产生的调频; static inline void cpufreq_update_util(struct rq *rq, unsigned int flags){ struct原创 2021-07-18 16:21:03 · 2298 阅读 · 0 评论 -
高通Q888内核源码分析--概述篇
基于小米开源代码Linux Kernel5.4.61, github地址为https://github.com/MiCode/Xiaomi_Kernel_OpenSource.gitstar-r-oss Mi 11 Lite 5G, Mi 11 Pro, Mi 11 Ultra, MIX FOLD Android R LA.UM.9.14.r1-11500-LAHAINA.0 star-r-oss 第一部分 调频部分1. 调频与调度的交互2. 调频相关的负载信号原创 2021-07-18 16:11:01 · 1546 阅读 · 0 评论 -
如何在linux内核中调用用户空间的程序
教科书里的Linux代码例子都已作古,所以看到的代码不能当真,领会意思就行了比如以前的init进程的启动代码execve(init_filename,argv_init,envp_init); 现在改为static void run_init_process(char *init_filename){argv_init[0] = init_filename;kern转载 2012-11-07 21:19:28 · 1438 阅读 · 0 评论 -
Linux内核中断相关的数据结构 (三)
中断相关的数据结构 1. irq_descstruct irq_desc {structirq_data irq_data;struct timer_rand_state*timer_rand_state;unsigned int __percpu *kstat_irqs;irq_flow_handler_t handle_irq;#ifd原创 2012-09-17 16:31:11 · 2783 阅读 · 0 评论 -
ARM based Linux中断(四)
下面介绍三对管理中断的函数,这些函数都是对第2节中提到的内核中的数据结构进行操作。第一对:request_irq和free_irq一般用于动态注册irq_action结构到内核,在设备驱动中使用;第二对:setup_irq和remove_irq用于静态的注册irq_action,一般用于启动之处的函数的注册和移除;第三对:__setup_irq和__free_irq仅用于内核中断核心代码,一般内核原创 2012-09-17 16:35:10 · 1432 阅读 · 0 评论 -
ARM based Linux中断 (二)
1 中断处理一般的中断处理过程如图1所示,可以看出中断的处理过程是软件和硬件协同完成的。图1中断处理过程当中断发生后,当前处理器上正在执行的任务将被中断, CPU(Processor Interrupt logic)将会完成一些保护现场跳到中断向量表等工作,在跳转中断向量表后开始执行一些体系结构相关的工作,然后进入通用的中断处理流程,然后找到相应的中断处理函数并执原创 2012-08-25 16:40:18 · 2467 阅读 · 0 评论 -
ARM based Linux中断 (一)
在start_kernel会存在如下调用start_kernel setup_arch early_trap_init early_irq_initinit_IRQlocal_irq_enable();1 中断相关的初始化工作内核配置选项关于中断子系统的配置如下:CONFIG_GENERIC_HAR原创 2012-08-25 16:33:25 · 1907 阅读 · 0 评论 -
Linux时间管理(7)
在freerun_clocksource_init函数中向系统注册新的时钟源,但没有切换时钟源。freerun_clocksource_init clocksource_mmio_init clocksource_register_hz __clocksource_register_scale原创 2012-08-14 18:48:14 · 1510 阅读 · 0 评论 -
Linux时间管理(六)
1 NOHZ模式(动态时钟)在dynamic tick引入之前,内核一直使用周期性的基于HZ的tick。传统的tick机制在系统进入空闲状态时仍然会产生周期性的中断,这种频繁的中断迫使CPU无法进入更深的睡眠。如果放开这个限制,在系统进入空闲时停止tick,有工作时恢复tick,实现完全自由的,根据需要产生tick的机制,可以使CPU获得更多的睡眠机会以及更深的睡眠,从而进一步节能原创 2012-08-14 18:44:43 · 2857 阅读 · 0 评论 -
Linux时间管理(五)
1.1 低精度下的hrtimer在低精度模式下,hrtimer的核心处理函数是 hrtimer_run_queues,每一次 tick中断都要执行一次(在tick的中断处理函数中调用update_process_times)。这个函数的调用流程为: update_process_times run_local_timers hrtim原创 2012-08-14 18:43:25 · 2479 阅读 · 0 评论 -
Linux时间管理(四)
hrtimer是建立在per-CPU时钟事件设备上的,对于一个SMP系统,如果只有全局的时钟事件设备,hrtimer无法工作。因为如果没有per-CPU时钟事件设备,时钟中断发生时系统必须产生必要的IPI中断来通知其他CPU完成相应的工作,而过多的IPI中断会带来很大的系统开销,这样会令使用hrtimer的代价太大,不如不用。为了支持hrtimer,内核需要配置CONFIG_HIGH_RES_TI原创 2012-08-14 18:42:15 · 1697 阅读 · 0 评论 -
Linux时间管理(三) GTOD
1 通用时间子系统1.1 用于时间管理的对象 时钟源设备(clock-source device)系统中可以提供一定精度的计时设备都可以作为时钟源设备。如x86构架里的TSC、HPET、ACPI PM-Timer、PIT等。但是不同的时钟源提供的时钟精度是不一样的。像TSC、HPET等时钟源既支持高精度模式(high-resolution mod原创 2012-08-13 19:50:10 · 11917 阅读 · 0 评论 -
Linux时间管理 (二)
1.1 Wheel时钟的实现(低精度定时器的实现)通常OS操作系统都支持Wheel方式,例如Linux、Neclues和vxworks都支持100-200Hz的节拍时钟。通过节拍OS进行时钟刷新以及产生任务调度,而每个硬件节拍就称为tick。1.1.1 核心数据结构在Linux 2.6.16之前,内核一直使用一种称为timer wheel(定时器轮)的机制来原创 2012-08-13 18:44:30 · 1885 阅读 · 0 评论 -
Linux时间管理(一)
linux的时钟系统的两大主要功能是计时和定时。计时功能就是指记录或设置当前的系统时间(包括日期),gettimeofday、settimeofday、time、clock_gettime、clock_settime等系统调用与计时相关。定时功能与定时器相关。设定一个定时器的(定时)时间,设定定时器的回调函数,启动定时器,在(定时)时间到时,定时器的回调函数会被调用。在 Linux内核中主要有原创 2012-08-13 18:31:12 · 1584 阅读 · 0 评论