@testtest:下面 nothing 的提问中应该回答了你这个问题,进程切换的时候会重置monitor为open state:
When an operating system performs a context switch, it must reset the local monitor to open s…
3、Pending owner task
val = queued_fetch_set_pending_acquire(lock);---------A
if (unlikely(val & ~_Q_LOCKED_MASK)) {------------B
if (!(val & _Q_PENDIN…
@奥特曼:补充: kernel版本是4.14.73
启动时有
Clockevents: could not switch to one-shot
Clockevents: could not switch to one-shot
Clockevents: could not switch to one-s…
用发行版的config有个问题,就是发行版为了在各种机器上运行配置了大量的ko,导致编译时间会非常长。其实内核已经给我们提供了一个方法 make localmodconfig,会根据系统现在的状态只配置目前加载的ko,这样编译时间就会非常快,在我的电脑上virtualbox虚拟机里4核编译不到30分钟就编译好了。
22 ← Linux电源管理(7)_Wakeup events framework
@X1hq:你可以看下安卓的autosleep的实现,部分上层程序持wake_lock,然后以熄灭屏幕为检查点判断wake_lock是否全都释放,释放了就走内核休眠,也就是说上层程序也被分为了可以阻止休眠和不可以的两部分,内核不管上层在做什么任务,只要线程不是D状态就无法影响进入内核后的休眠
deng ← linux kernel的中断子系统之(八):softirq
@owen:ksoftirqd真正执行do_softirq的时候应该不会,抢占入口判断当前如果是中断上下文就不会执行切换
deng ← linux kernel的中断子系统之(八):softirq
@lingkep:如果硬中断打断的是软中断的执行,虽然硬中断退出了,但是仍然处在软中断上下文,文章可能是想表达这个吧
chaicai ← 留言板
站内搜索不支持了么?
玖伍贰柒 ← Concurrency Managed Workqueue之(三):创建workqueue代码分析
@坚强的小孩:3,虽然上面分析workqueue肯定会得到调用,但是关于是per workqueue和unbound workqueue哪一个性能好一点,这里确实不太清楚。 ----------------------------------------------------- 你好,per cpu的wq有更好的…
玖伍贰柒 ← Concurrency Managed Workqueue之(三):创建workqueue代码分析
@每天一小步:你好,讨论的这块代码的调用路径是这样的: alloc_and_link_pwqs apply_workqueue_attrs dfl_pwq = alloc_unbound_pwq(wq, new_attrs) if (wq_calc_node_cpumask()) alloc_…
玖伍贰柒 ← Concurrency Managed Workqueue之(二):CMWQ概述
@bsp:你好。如果你的camera work是每次在irq handler里enqueue的话,我觉得可以固定让某个非cpu0来处理该irq,然后将workqueue改为BOUND类型,这样camera work每次都会由这个固定的非cpu0处理。 /sys/devices/virtual/workqueue# e…
玖伍贰柒 ← Concurrency Managed Workqueue之(二):CMWQ概述
@hdzhang:你好,关于max_active,我的理解是这样的: 1. max_active是pool_workqueue的成员变量,表示当前pwq允许的最大acitve work数; 2. 对于UNBOUND类型的workqueue,其对应的pool_workqueue不是per CPU的,而是per NUM…
rte ← 留言板
@三唑仑哪里有:发nm的广告,还尼玛是这种广告,冯死了
biaowang ← 留言板
@manjaro-user:笔记本上的一般搭配了USB接口的蜂窝模块。首先怀疑是usb autosuspend有问题,唤醒后可能触发了usb reset
凌云行者 ← Linux内存模型
@gh:vmemmap只是加速了pfn和struct page之间的转换,整个sparse内存模型也不止是做了这个转换而已。比如vmemmap只映射真正存在的物理内存,kernel要知道哪一段地址真正有物理内存还是得依赖sparse内存模型的吧
凌云行者 ← 文件缓存回写简述
有点串台了,TLB是在cpu上的东西,负责缓存虚拟地址映射物理地址的;TLB flush是invalidate这些cache。本文说的是内存中的dirty page更新到磁盘中
凌云行者 ← linux kernel内存碎片防治技术
@Bob:把extfrag_threshold设置为1000只是说明kernel不会在分配内存时因为内存碎片程序进行compact了,不代表kernel不会compact,还有kcompactd线程负责compact
凌云行者 ← linux kernel内存碎片防治技术
@davidlamb:肯定是有的,所以选择在系统内存使用率低的时候进行碎片整合
小石 ← Linux kernel scatterlist API介绍
讲的很好,谢谢
bsp ← Linux时间子系统之(十七):ARM generic timer驱动代码分析
@bsp:这就把每个cpu的tick_cpu_device的event_handler 赋成了hrtimer_interrupt。
bsp ← Linux时间子系统之(十七):ARM generic timer驱动代码分析
@yuhezhouping:cat /proc/timer_list |grep event_handler 一般Broadcast device 的 event_handler: tick_handle_oneshot_broadcast Per CPU device的event_handler: hrt…
菜就多练 ← 逆向映射的演进
虽然但是,这些地方要表达的是不是AV,而非VA... “当VMA和VA首次相遇” “立父子进程之间的VMA、VA的“大厦”,主要的步骤如下:” “建立子进程VMA和“父进程们”VA的关系” “建立子进程VMA和子进程VA的关系” “将该AVC加入VA红黑树” 巨难受哇我去,我想了半天我寻思这…
玖伍贰柒 ← linux kernel的中断子系统之(九):tasklet
@wowo_man:TASKLET_STATE_SCHED标志 + 你说的pending位也是个solution,但我觉得当前的SCHED + RUN标志位方案更优雅,原因有二: 1. tasklet的调度和执行是分开的,每个标志各司其职,逻辑更清晰; 2. SCHED + RUN标志位只引入了一个变量state,…
玖伍贰柒 ← linux kernel的中断子系统之(九):tasklet
@玖伍贰柒:是为了回复这个问题: schedule 2015-07-07 17:33 (b)中断返回software interrupt context,也就是中断抢占软中断上下文的场景 ============================================= 楼主好,这句我有些疑问 …
玖伍贰柒 ← linux kernel的中断子系统之(九):tasklet
softirq那篇文章中,linuxer贴出了asmlinkage void __do_softirq(void)函数的代码,在开始处理软中断之前,调用了local_irq_enable()来打开本地中断响应。
玖伍贰柒 ← linux kernel的中断子系统之(八):softirq
@linuxer_fy:ARM平台上,CPU收到中断后硬件会自动将CPSR寄存器的IRQ位置1,CPU将不会再响应中断,以此保证不会嵌套。对于其它CPU的场景,则由GIC保证,GIC对每个中断维护了一个状态机,当该中断处于active状态时,GIC不会把该中断再发给其它CPU。
lx ← linux kernel的中断子系统之(八):softirq
@owen:应该是的,大佬的中断子系统之(五)文章中写道:“在Linux kernel中,一个外设的中断处理被分成top half和bottom half,top half进行最关键,最基本的处理,而比较耗时的操作被放到bottom half(softirq、tasklet)中延迟执行。虽然bottom half被延迟…
牛逼666 ← Linux kernel scatterlist API介绍
牛逼
hurricane618 ← Linux内核同步机制之(一):原子操作
@wangxingxing:如果是arm32 arch/arm/lib/xxxx.S 里面,比如set_bit在arch/arm/lib/setbit.S 不同的架构会有所区别
ppzzDD ← 蓝牙协议分析(11)_BLE安全机制之SM
wowo大佬,能否讲一讲关于蓝牙OTA那部。感谢感谢。
ppzzDD ← 蓝牙协议分析(1)_基本概念
感谢wowo,2019年开始看wowo大佬的文章,2025年任来回味。
test ← mmap在arm64背后的那个深坑
这个问题有意思,我感觉不是由dsb引起的, 因为这个时候 core A 收到这个tlbi还是能处理的。 看看是不是page fault的处理有其它依赖,造成时间很长。 h
magina ← Linux内核同步机制之(三):memory barrier
这里描述的不对,当该值从memory中加载到cache 0中的cache line之后,该cache line的状态有以下几种情况: 1. 如果其他Core的Cache没有缓存该Cache Line,那么Cache 0的状态为 E, 表示独占; 2. 如果其他Core的Cache有缓存该Cache Line,那么C…
Hichens ← Linux设备模型(1)_基本概念
常看常新
pudding_art ← Linux CPU core的电源管理(2)_cpu topology
@koala:cpu是逻辑核心,core是物理核心
black8mamba ← u-boot启动流程分析(1)_平台相关部分
CONFIG_SPL_BUILD这个配置项应该在哪里配置打开呢。
wpfly ← Linux graphic subsytem(1)_概述
通过framebuffer来图形化的LVGL处在哪个位置呢?
zouzp ← Linux电源管理(4)_Power Management Interface
@heziq:其实是把那个树状拓扑给横过来转换为链表
xqplfly ← Linux时间子系统之(十七):ARM generic timer驱动代码分析
@wangyongrui:芯片厂商或者固件厂商在固件阶段(一般是ATF)写进去的。
鲁班七号 ← Linux设备模型(1)_基本概念
2025年转行linux 考古来了。文章一看就懂了不少。点赞博主。
wangyongrui ← Linux时间子系统之(十七):ARM generic timer驱动代码分析
设备树没写频率的情况下,寄存器CNTFRQ里的值是谁写进去的呢
wangjing ← Linux时间子系统系列文章之目录
写得太好了
wangjing ← Linux时间子系统系列文章之目录
写得太好了!
DRAM ← DRAM 原理 2 :DRAM Memory Organization
圖面都沒辦法顯示出來好像掛點了。
Simbr ← Linux设备模型(1)_基本概念
bus至少是不是还有个subsystem?
troy ← Linux内核同步机制之(一):原子操作
@testtest:只要ldrex-modify-strex中间插入了其它内核路径,该次的原子操作就会失败,也就是strex会失败,但atomic_add()里的汇编代码会对strex是否正确完成进行检查,如果是失败的,那么就会跳转到label 1处,再次进行ldrex-modify-strex。极端的说,如果每次ld…
gh ← Linux内存模型
Linux 内核在 sparse 内存模型基础上实现了vmemmap 优化, vmemmap完全可以替换 sparse,为何还需要 sparse 存在?
luc ← Concurrency Managed Workqueue之(一):workqueue的基本概念
keventd_wq 从2010 年就变成 system_wq 了
linux-fan ← linux kernel的中断子系统之(九):tasklet
一、前言 1、推迟到top half执行完毕 -> 这里typo,应该是bottom half?
内核菜鸟 ← 支持与合作
感谢分享
deven ← Linux kernel scatterlist API介绍
@一个网友:从数据结构定义就能知道肯定不支持大页
内核小白 ← 图解slub
@smcdef:今天正好看到这部分源码。KMALLOC_MAX_CACHE_SIZE 这个宏和架构有关,以及和你自己的config 有关。现在又有大页。总体上是16 14 12三个size, 4kb, 16kb, 64kb.
xinghuo ← Linux内核同步机制之(三):memory barrier
@1912:我也觉得是exclusive的,因为其他cache还不存在副本
xinghuo ← Linux内核同步机制之(三):memory barrier
“barrier只是保证compiler输出的汇编指令的顺序是OK的,不能确保CPU执行时候的乱序。 对这个问题的回答来自ARM architecture的内存访问模型:对于program order是A1-->A2的情况(A1和A2都是对Device或是Strongly-ordered的memory进行访问的指令),…
xinghuo ← 编译乱序(Compiler Reordering)
@xinghuo:我想说的是ab赋值之间有没有屏障,与其之间有没有函数调用无关
xinghuo ← 编译乱序(Compiler Reordering)
隐式编译器屏障(Implied Compiler Barriers)小节中,虽然最后的结论“要显式的插入barrier(),而不是依靠函数调用附加的隐式compiler barriers”大家都没有什么疑问,但个人对其中fun()函数不包含barrier()的情况下“大多数的函数调用都表现出compiler barri…
xinghuo ← 编译乱序(Compiler Reordering)
显式编译器屏障(Explicit Compiler Barriers)节中barrier()是最弱的屏障,只是静态的代码上做了屏障不能乱序,但后面对barrier()的解释中关联到缓存,寄存器这些硬件,是不是不太合适?
R_R ← CFS调度器(1)-基本原理
weight = 1024 / 1.25nice 看起来不完全是根据这个公式计算得到的,大佬知道这些数值具体由来嘛
pdzhu ← Linux cpuidle framework(4)_menu governor
@ctwillson:state=4294967295为-1,退出idle态的意思
linuxer ← Linux内核同步机制之(七):RCU基础
@白璐:有兴趣可以聊一聊,OPPO内核优化team需要的是对内核比较有热情的伙伴,而不是仅仅当成一份工作。 我的微信号是:Linuxer-at-wowo
ylsislove ← 蓝牙协议分析(1)_基本概念
感谢大佬的文章
xing ← futex基础问答
@王:牛逼
白璐 ← Linux内核同步机制之(七):RCU基础
@linuxer:学长 还要人吗
muto ← mmap在arm64背后的那个深坑
终于看到更新了,赞 +1
piter ← Linux common clock framework(3)_实现逻辑分析
在linux 4.14 的版本中 struct clk *__of_clk_get_from_provider(struct of_phandle_args *clkspec, const char *dev_id, const char *con_id) { struct of_c…
lingkep ← linux kernel的中断子系统之(八):softirq
考古到了大佬的文章 看的好爽 另外有个疑问想请教下,在__irq_exit_rcu中判断if (!in_interrupt() && local_softirq_pending());invoke_softirq();之前会执行preempt_count_sub(HARDIRQ_OFFSET);那么既然中断不能嵌套,并…
毋庸置疑 ← 蓝牙协议分析(11)_BLE安全机制之SM
看完了,感谢,,催更来了
rzbdz ← Concurrency Managed Workqueue之(四):workqueue如何处理work
请教一下,为什么 __queue_work 中读取 wq->flags 的过程不需要对 wq->mutex 加锁呢? if (unlikely(wq->flags & (__WQ_DESTROYING | __WQ_DRAINING) && WARN_ON_ONCE(!is_chained_wo…
水禾田 ← Linux时间子系统之(二):软件架构
大神请教一下,mips架构,使用cpufreq框架动态调整CPU频率,发现调整频率后,时钟变了。比如900M调整到300M,发现sleep 1变成了3秒。Compare寄存器的1毫秒中断间隔一直是初始的900M的频率间隔(450000)。需要怎么调整才能使得时钟和CPU频率匹配呢?
zrant ← CFS调度器(5)-带宽控制
为什么调大cpu.cfs_period_us会有更大吞吐量。默认都是100ms这个是什么依据选的呢
SuiTang ← 蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍
请教下大神,蓝牙Beacon的Local Name可以重复吗?
huozi ← Linux内核同步机制之(一):原子操作
@testtest:下面 nothing 的提问中应该回答了你这个问题,进程切换的时候会重置monitor为open state: When an operating system performs a context switch, it must reset the local monitor to open s…
huozi ← Linux内核同步机制之(一):原子操作
@passenger:是的,在ldrex后是会被打断,但返回原来的代码执行的时候,会执行失败,因为这时候monitor的状态是Open Access state,原来的代码继续执行后面的strex会执行失败,进而重新执行ldrex而保持原子性。
hdzhang ← Concurrency Managed Workqueue之(二):CMWQ概述
CMWQ机制引入后我发现会有个问题,创建UNBOUND类型的workqueue指定的max_active是针对单个CPU的而不是系统全局的。 假如系统有8个CPU core,我想限制workqueue总并发为64,那我就只能把max_active设置成8,但如果这样设置,我起一个进程把所有work入队,发现只有8个并…
北葵依旧菜 ← 关于蜗窝
感谢博主,博主多年前的文章在今天依旧熠熠生辉,解答了很多疑惑
jqdeng ← CFS调度器(2)-源码解析
@新手:curr的确是从rb tree拿下来了,但是on_rq还是1,如果curr->on_rq=0,则说明curr即将进入睡眠或者迁移状态了,你可以去看一下__schedule中deactivate_task处的注释。
leelockhey ← linux内核中的GPIO系统之(5):gpio subsysem和pinctrl subsystem之间的耦合
@入行真的好难:遇到写得好的技术博客真滴少啊,遇到写得好的一堆博客那是更稀有了
飞翔的蜗牛2024 ← ARM64的启动过程之(一):内核第一个脚印
请问怎么在head.S中bl __enable_mmu后使用串口打印进行调试?
Jam ← Linux设备模型(1)_基本概念
2024.9.1来考古
Shiina ← 基本电路概念之(一):什么是电压?
一个电路(circuit)中,由于是回路,所以用电势差的概念会有问题 因为回路首尾相连,电势从头处的高电势一直在下降,但是转一圈后,电势又突然从低电势跳到的高电势,如果用电势差来表示,那么这个回路的电势差为 0,这显示违反逻辑,所以我需要一个新概念来定义这种情况,这个概念就被称为电动势(electromotive f…
Shiina ← 基本电路概念之(一):什么是电压?
其中比较关键的点是相对位置概念和点电荷的静电势能计算。
leelockhey ← Linux电源管理(2)_Generic PM之基本概念和软件架构
你这是哪个内核版本
ja ← Linux内核同步机制之(四):spin lock
@dream:我看完這段也有相同的想法,引用 @dream 最後一段的說法 即使当前进程在持有锁的时候,被高优先级进程抢占也访问了锁,进入自旋状态,那么内核不是支持时间片轮转的调度嘛,当产生 tick 中断的时候,高优先级的进程时间片用完,那么低优先级的进程就有再次执行的机会,只要低优先级有执行的机会,自然就能完…
元神高手 ← Linux电源管理(14)_从设备驱动的角度看电源管理
围观首席power managerment专家
十七 ← 进程切换分析(1):基本框架
内核空间的映射在系统启动时就已经设定好,并且在所有进程的页表中这部分映射是相同的。
lw ← Linux内存模型
sparse模型和disconti模型没看出来有什么本质区别啊
肥饶 ← mmap在arm64背后的那个深坑
一个没设置好就出错
orange ← Device Tree(四):文件结构解析
点赞点赞,对linuxer的文章总结到位
mubai ← Linux电源管理(6)_Generic PM之Suspend功能
wowo您好,我们这边有个奇怪的现象,是概率性的,通过在bl31的代码里增加打印的方式,发下系统suspend的流程走到.cpu_kill的时候执行__invoke_psci_fn_smc后没有陷入到ATF中,想请教下会有哪方面的原因?
Aloys ← Linux电源管理(9)_wakelocks
最新的Android版本已经不再通过/sys/power/wake_lock和/sys/power/wake_unlock来控制wake source了。 当前通过SuspendControlService与/sys/power/wake_count来实现上层和kernel的锁同步
haohlliang ← 浅谈Cache Memory
赞!请教下,有什么工具可以扫出业务代码中低hit行为?
新手 ← DRAM 原理 1 :DRAM Storage Cell
圖面好像顯示不出來,請問有什麼方法可以看到圖示呢謝謝
shousi ← Linux reset framework
挺巧妙的
kkkkkkkaixa ← 《奔跑吧,Linux内核》已经上架预售了
@风中尘埃:换块板子
育 ← ARM WFI和WFE指令
@wowo 想請問大神,我的board有兩個Kernel 但只有其中一個可以輸入指令另一個不能,這樣我要怎麼輸入WFI command
duckwu ← Linux内核同步机制之(二):Per-CPU变量
@立志学linux:我觉得percpu变量就是等于定义了好几个不同的变量但是比定义多个变量更好。假设一个进程在运行过程中需要某个变量,该变量在各个CPU上逻辑独立,但是程序员在编码时是无法知道该进程运行在哪个cpu上,也就无法为其指定对应的变量。想反,让cpu自己去选择对应的变量即per-cpu变量就可以解决这个问题。
新手 ← DRAM 原理 1 :DRAM Storage Cell
請問為什麼Storage Capacitor 中儲存正電荷會流向Bitline 呢兩邊電壓不是都是VCC/2嗎 感謝。
葡萄 ← 逆向映射的演进
原文中的“而一个AV会管理若干的VMA,所有相关的VMA(其子进程或者孙进程)都挂入红黑树,根节点就是AV的rb_root成员。” 应该是一个AV 会管理若干AVC, 这里描述有误
jiyouzhan ← mmap在arm64背后的那个深坑
这篇文章写得深入浅出,让我这个小白也看懂了!
er3s56 ← Linux TTY framework(3)_从应用的角度看TTY设备
文中内容:"而pym,则根据具体情况,具体实现。例如:要通过网络接口和终端设备交互,则pym需要打开对应的socket,将pts写来的数据,从socket送出,将从socket读取的数据,送回给pts。" 这里的pym似乎是笔误,应为ptm。
abcde ← CFS调度器(2)-源码解析
我想“Linux菜鸟”的本意应该是 “当某个se的slice > sysctl_sched_min_granularity && < tick”时,如果此se用完了自己的slice,但,中断时间却又尚未到达,那么,就没有机制让此se停下来,所以,se实际执行时间,不就超出自己应得的slice了吗? 这个问题…
abcde ← CFS调度器(3)-组调度
图中上半部,nr_runing和h_nr_running的值分别等于10和19,多出的9是group cfs_rq的h_nr_running。group cfs_rq由于没有group se,因此nr_runing和h_nr_running的值都等于9。 ===============================…
elliot ← KASAN实现原理
@keith:有一个工具叫做pahole,可以解决你的问题
elliot ← KASAN实现原理
@pete:KASAN目前已经支持vmalloc的检测了
卷心菜 ← KASAN实现原理
@zecard:这种情况kasan应该检测不出来
小明不明白 ← 留言板
请问一个问题: 如何控制win10的usb接口的供电?例如cmd命令,编写程序等方法。 期望的结果就是能随时让电脑的某个usb接口断电,以及随时可以开启供电。 感谢任何关注与回复!
安庆 ← mmap在arm64背后的那个深坑
@markened-frank:是的,但是它前面是tlbi啊
bngvcztboj ← 留言板
劲舞团问道密传一条龙www.43vb.com1325876192@qq.com倚天2龙驹魔钥巨商服务端出售 丝路传说开区大话西游开区蜀门开区机战开区剑侠情缘开区 绝对女神开区传说OL开区刀剑开区弹弹堂开区科洛斯开区 魔力宝贝开区武林外传开区网页游戏开区页游开区希望OL开区 成吉思汗开区剑侠世界开区全民奇…
small ← Linux电源管理(8)_Wakeup count功能
wowo,你好 我遇见有一个唤醒锁一直无法关闭,我想强制关闭这个唤醒锁,我应该怎样去调用接口强制关闭这个唤醒锁呢
狗子 ← futex基础问答
@王:老铁 休息就别卷了 受不了
markened-frank ← mmap在arm64背后的那个深坑
我记得DSB的语义是等待本核的前面的操作完成,并不能等待其他核的操作完成吧
bsp ← Linux内核同步机制之(四):spin lock
@icy_river:bsp 2023-02-01 13:11 ticket-based-spinlock有个重大问题: 假如当CPU0获取了spinlock,而CPU1、CPU2、CPU3...在等锁,在CPU0 spin_unlock时通过sev/stlr唤醒其它所有所有CPU去check是否轮到自己;我们通…
bsp ← Linux内核同步机制之(四):spin lock
@icy_river:嗯,我其实就在说qspinlock 替代ticket-based-spinlock的原因。 通过qspinlock,只需要唤醒lock->next所在的cpu,其它cpu继续自旋。
bsp ← Linux内核同步机制之(四):spin lock
@icy_river:嗯,我其实就在说qspinlock 替代ticket-based-spinlock的原因。 通过qspinlock,只需要唤醒lock->next所在的cpu,其它cpu继续自旋。
aly ← CFS调度器(1)-基本原理
@see:cfs保证一个调度周期结束后所有进程的虚拟时间是一样的。 调度周期内,不同进程会累积自己的虚拟时间,因此会有虚拟时间上的差别。
透苇 ← mmap在arm64背后的那个深坑
终于看到更新了,赞
huozi ← 内存初始化(上)
@兔子:既然是reserve,那就应该可用可不用。开启了MMU之后,若要用,应该要建立映射通过虚拟地址来访问。
huozi ← 内存初始化(上)
@HW.Yang:页表自身存放在哪里,原文中也有一些提示,如下: 内核起始刚开始的汇编代码基本上是PIC的,首先需要定位到页表的位置,然后在页表中填入kernel image mapping和identity mapping的页表项。页表的起始位置比较好定(bss段之后),但是具体的size还是需要思考一下的。
huozi ← 内存初始化(上)
@landau:我想原文应该也是想表达这样一个意思,举一个映射范围最大为2M的例子,只是他这个例子,我们读者可能都默认level0-level2对应的三个page均填满,那样映射范围肯定不止2M,原文level0-level2 均是只有一个entry才有原文的结论。
huozi ← 内存初始化(上)
@啊啊啊:你这个前提就是entry0、entry1、entry2均是1,entry3为512才是这个,但为什么level 0、level 1、level 2、level 3均有1page保存,为什么entry0、entry1、entry2均是1,entry3为512呢?
huozi ← 内存初始化(上)
我也是还没看懂这句话,映射范围不应该是entry0*entry1*entry2*entry3*4k吗? 另外entry3为何是512?
aly ← Linux kernel的中断子系统之(二):IRQ Domain介绍
@gzz:文章说的比较明白了,我理解你说的64号中断是硬件中断号。硬件中断号在级联情况下的确是会重复的,但驱动里用的是软件中断号,linux在启动时帮你映射好的。软件中断号不会重复,你可以在驱动代码里通过irq_of_parse_and_map或者platform_get_irq获取软件中断号
wiryls ← 进化论、人工智能和外星人
时隔多年无意间看到这篇文章,回想起前段时间也有想过类似的问题,忍不住来一记洛阳铲。 我倒是认为基因并不独特,基因也只是一种信息的载体。复制的是信息,变异的是信息,传播的是信息,消亡的也是信息。基因携带的信息目前只能由某些细胞读写,人类暂时只能分析其中的一部分。如果人类彻底掌握了基因解析、修改的技术,说不定还能诞生…
linzai ← 关于java单线程经常占用cpu100%分析
大佬你好,你在文中多次使用crash,但是crash是需要dump文件,你的dump文件是将云宿主机通过/proc/sys/sysrq-trigger直接生成的吗?
cheng ← 支持者列表
坚持更新,佩服
rankie007 ← Linux时间子系统之(十七):ARM generic timer驱动代码分析
老师好,我们在KVM虚拟化开发过程中需要适配不同厂家的CPU,遇到个问题,当两家CPU的external clock(通过dmidecode -t processor查询)不同时,其上运行的虚拟机执行在线迁移后,虚拟机内部系统的计时器会加快或减慢,比如A厂商CPU的 external clock是100Mhz,B厂商C…
bsp ← Linux时间子系统之(十五):clocksource
kernel是不建议使用浮点运算的,尝试回答一下: 1.使用浮点寄存器是存在竞争的,此时需要保护这些register的,包括入栈&出栈;arm64有16个128bit的浮点寄存器:q0~q15,入栈/出栈的时间和内存消耗都不小; 2.竞争点有: 两个kernel-thread在同一个cpu-core上去访…
donge ← 为什么会有文件系统(一)
@test:有道理
btrace ← 以太网驱动的流程浅析(二)-Ifconfig的详细代码流程
@kangkang:你来个深入的,否则就shutup
landau ← 内存初始化(上)
@melo:基于melo 的说法,如果level0不止一个entry,那么意味着level1的entry不止一个page(此时一个page在level0~level3 中都是能保存512个entry),因为level0的entry存放的值,对应的是pgd table中的level1的table的地址。level1也同理…
testtest ← Linux内核同步机制之(一):原子操作
@wangdl:就是线程1的ldrex因为线程2先strex而失效,但在线程1strex之前,其他线程如果又ldrex一次,那么线程1下来的strex是不是还是有效的?
Syed ← 关于蜗窝
@憨憨也是态度:十年之后终于来到了这里,感谢还在!感谢您的坚持!作为一名嵌入式驱动新手,我也会继续努力,一定会坚持下去的!
lw ← 蓝牙协议分析(2)_协议架构
@wowo:逻辑层那些协议的具体使用场景,能帮忙列一下吗?
Harry Song ← Linux内核同步机制之(四):spin lock
文中对 ticket 的机制进行举例和实际的汇编实现有偏差: "最开始的时候,slock被赋值为0,也就是说owner和next都是0,owner和next相等,表示unlocked。" --> 实际上应该是默认值是1,第一位来排队的,先 next+1 = 1,然后 当前owner == 当前next,拿到…
slava_chen ← CFS调度器(3)-组调度
@slava_chen:抱歉,我又看了sched_create_group()->alloc_fair_sched_group()->init_tg_cfs_entry()的代码,发现task_group的cfs_rq和se长度的确是CPU数目
slava_chen ← CFS调度器(3)-组调度
我认为struct task_group里边的成员**se,他的长度和该主机中的CPU数量没有关系,成员**cfs_rq的长度和CPU数量数目相等。 **se的长度只取决于当前task_group有多少个任务实体,每一个cfs_rq队列都同时可以接受多个任务实体se,但是一个cfs_rq队列只能对应于一个CPU上的r…
灵药世家 ← 留言板
FM2 GHB DDK 唛可奈因可瑞敏微信sddf828 听话水/乖乖水/催情/迷昏/迷幻/迷情药出售 氟硝西泮蓝精灵,乙醚,春药,久光千岛片,微信SDDF828 【迷昏药喷雾型800元】【迷昏药香烟型900元】【迷昏药服用型500元】【迷昏药拍肩型900元】【迷昏药盘香型900元】【迷情粉500元】【七氟烷12…
憨憨也是态度 ← 关于蜗窝
感谢 你的蓝牙笔记写的很好 我与梦想永远在路上
坚强的小孩 ← Concurrency Managed Workqueue之(三):创建workqueue代码分析
@ele:以下是一些自己的看法,麻烦看看有什么不对的地方,希望大家指出来,谢谢。 1、workqueue的调度其实还是依赖与进程调度吧,虽然是软中断触发的,但是调度还是进程的调度,所以不存在有大量的线程长时间占用,而调度不到workqueue的情况,只是workqueue会等待的时间比正常的时间长一点而已; 2、大…
semilog ← 关于蜗窝
最近看你很久没有更新了,时光如梭,十年一晃而过,那个对技术充满激情的少年还在吗?对我们这些追求技术的人来说,永远是少年~~~ 你的文章写的很好。
icy_river ← Linux调度器:用户空间接口
// glibc实现 int __getpriority (enum __priority_which which, id_t who) { int res; res = INLINE_SYSCALL (getpriority, 2, (int) which, who); if (res >…
遥遥领先 ← 关于蜗窝
不快餐,怎么遥遥领先,怎么印钱,怎么炒房。不是技术人想快餐,而是顶层设计的是遥遥领先的规则
russell ← 支持者列表
23年几乎没有更新了,太可惜了
エルメス 550 ← schedutil governor情景分析
時計,バッグ,財布,ルイヴィトンコピー,エルメスコピー 弊店に主要な販売する商品は時計,バッグ,財布,ルイヴィトンコピー,エルメスコピー, シャネルコピー,グッチコピー,プラダコピー,ロレックスコピー,カルティエコピー,オメガコピー, ウブロ コピーなどの世界にプランド商品です。 2006年に弊社が設立された、…
manjaro-user ← 留言板
请教老大一个问题,我们在thinkpad的X1笔记本上安装了manjaro,6.1的内核,最近发现休眠后唤醒的时候,笔记本的LTE4宽带网络经常不能自动恢复,需要手动执行一下“systemctl restart ModemManager”,偶然也能唤醒后自动恢复联网,在网上查了一圈也没有头绪,想请教一下老大,能不能帮忙…
坚强的小孩 ← RCU(2)- 使用方法
写的真好,干货满满
Enlin ← KASLR
在4.15中,我觉得节点信息应该是:kaslr-seed = <0x10000000 0x10000000>;这类格式的。 因为下面有如下的判断: if (!prop || len != sizeof(u64)) 节点长度不够,直接return 0;
chenan ← Linux电源管理(10)_autosleep
@schspa:我理解的 autosleep 本身就是给 Android 打的补丁,autosleep 在内核里本身也是一个配置项。 对于 android 的休眠机制,完成由上层控制了,只要没唤醒锁,抓住机会就睡
设备树工程师 ← 关于蜗窝
为这种蜗牛精神干杯
schspa ← Linux电源管理(10)_autosleep
@chenan:autosleep只是android不使用吧, 内核里边的支持还是在的吧。
chenan ← Linux电源管理(10)_autosleep
autosleep 早已经废弃了,蜗窝也好久没更新了
wasd ← CFS调度器(6)-总结
@marvin263:那请问,如果是这样的话,那按照nr_running * sysctl_sched_min_granularity算出来的调度周期不是不准确了吗?因为nice值小的进程会运行超过sysctl_sched_min_granularity
bsp ← linux kernel的中断子系统之(八):softirq
@农夫山泉:linux的软中断(invoke_softirq) 是在硬中段(top half)退出时才会执行,关了hardirq就等于关了softirq。
chenningjun ← linux kernel的中断子系统之(八):softirq
@owen:不会,但softirqd内部 cond_resched 主动出让CPU了。 按目前理解:调度抢占是针对用户态。内核态只有中断。
chenan ← Linux电源管理(10)_autosleep
@myh123:android 9以后已经没有 libsuspend,取而代之的 SystemSuspend service
在努力 ← 关于蜗窝
新手入门linux 看到你写的文章 点赞 继续点灯去了 哈哈哈
xiaotonga ← 致驱动工程师的一封信
驱动节点通过sysfs暴露给用户,通过sysfs可以查看驱动节点信息,打call
Sail ← 留言板
@jalen:设置上升沿触发或者下降沿触发就能达到只触发一次
jalen ← 留言板
请教各位大佬个问题: 电平触发类型的中断(比如高电平触发),需要手动将电平恢复到低电平吗?如果不需要的话,怎么保证这个中断不会反复的触发呢?(个人理解,这种类型的中断,会保持触发电平,那么如果不恢复电平,退出中断后,不就立即又触发中断了吗?)
bngvpyhuyj ← 留言板
天堂传世真封神服务端出售www.a3sf.com776356990@qq.com墨香决战千年希望OL服务端出售 丝路传说开区大话西游开区蜀门开区机战开区剑侠情缘开区 绝对女神开区传说OL开区刀剑开区弹弹堂开区科洛斯开区 魔力宝贝开区武林外传开区网页游戏开区页游开区希望OL开区 成吉思汗开区剑侠世界开区全…
wangjb ← Linux DMA Engine framework(1)_概述
老板,你好! 我这里遇到一个dma 直接映射物理内存的问题,是用cma的机制,我发的时间太长了,都还没有 解决,能否帮忙提供思路,非常感谢!!! 驱动qca-7850调试的结果和我写的关于A函数的内核测试模块的结果一样,我就用我的测试程序描述一下问题。 问题1 linux 内…
baron ← Linux电源管理(1)_整体架构
还能留言
wwlinus ← 留言板
实际电路中大量使用电平转换芯片,一个电平转换芯片可能为多个功能芯片使用。电平转换芯片本身需要两个电源,这两个电源的开启应该由各个功能芯片控制。但在linux内核似乎没有适合于电平芯片的驱动模型。大家对这个问题有什么看法? ps,这里所说的驱动模型,如电源对应regulator模型,时钟对应clk模型等。
xiaotonga ← Linux设备模型(5)_device和device driver
了解device和device_driver相关概念和结构,但对应device和device_driver之间怎么匹配或建立联系呢? 1.内核解析dts(device tree source)文件获知系统存在的硬件设备及其配置; 2.device driver 通过设备树来获取系统中硬件设备,并与其通信。 3.d…
xiaotonga ← Linux设备模型(4)_sysfs
文中介绍的比较清楚,用户对kernel空间特定数据属性访问是通过sysfs来实现,具体形式为读写设备文件属性。文中对calss.c进行分析说明但对device driver实现kobj->ktype->sysfs_ops->show调用逻辑理解不是特别清楚; 结合kernel driver的实现补充,进一步理解其调用…
tschome ← tty驱动分析
博主,可以问一下,你的这个图使用什么软件去画的呢,感觉很方便的样子。
支持大佬 ← 支持与合作
支持大佬!
xiaotonga ← Linux设备模型(3)_Uevent
@wowo 昵称被限制,要换个马甲,ip被限制咋办呢,总不能再换设备吧
xiaotonga ← Linux设备模型(3)_Uevent
1.个人理解kset_uevent_ops的逻辑和vfs中struct file_operations {}结构很类似(linux/v2.6.39.4/source/include/linux/fs.h#L1537); 2.用户只需读写设备文件,不用关心底层设备驱动,通过文件系统vfs的标准接口调用设备文件对应dev…
xiaotongs ← Linux设备模型(2)_Kobject
@devin:1.动态创建:在内核空间动态分配内存。 2.而不能静态定义或者位于堆栈之上:静态变量区、堆、栈是用户空间,用户空间分配内存需用通过C库或系统调用分配内存,实际上,用户空间分配的物理内存需通过内核来分配;
xiaotongs ← Linux设备模型(2)_Kobject
kobject,内核基础设施,怎么和device(抽象设备)关联?怎么和driver关联?内核怎么通过kobject调用到对应的device? 1. kobject会设备文件的形式在“sys”下出现,ket是kobject的集合,会将相似的kobj集合起来,在sys下也会以设备文件形式显示。 2.ktype包含ko…
ziliang ← zRAM内存压缩技术原理与应用
@bsp:大佬讲的好详细呀
黑桃JK ← 留言板
@红桃JK:捉
阿布 ← DMB DSB ISB以及SMP CPU 乱序
@阿布:内核中io.h里使用dsb 定义了 io barriers。内核源码里的其他地方也有使用dsb 的,但有些地方的使用感觉有些不太好,比如android7.1 内核(msm-3.18)里 app_setting.c 75行中的mb(),其实完全可以使用smp_mb(),对吗?
阿布 ← DMB DSB ISB以及SMP CPU 乱序
@阿布:在 real memory space 和io memory space交换数据时,由于io 设备可能对指令存在强依赖的关系(比如必须先给io 设备的时钟寄存器初始化,才能使能该io 设备的控制寄存器的使能bit),这种情况下需要使用dsb 指令去保证到达io设备的指令顺序是符合预期的(dsb 指令等待在此之前…
阿布 ← DMB DSB ISB以及SMP CPU 乱序
@forion:请问能结合点实际例子指点下DMB和DSB的使用吗?他们的应用场景有什么区别?如果在使用DSB的场景下使用了DMB,会出现什么情况?执行乱序除了是由多核cache 一致性引起的?还有别的地方也会造成执行乱序吗?我的理解是DMB避免了cache一致性造成的执行乱序,那么DSB在DMB的基础上到底为了应对什么…
阿布 ← DMB DSB ISB以及SMP CPU 乱序
我一直不理解DMB 和DSB的应用场景,如果在使用DSB的场景下使用了DMB,会出现什么情况?请问能指点一下吗
Caeser ← 为什么会有“ARMv8A Architecture”这个分类
写的很清晰 非常赞呀
Mana ← 蓝牙协议分析(1)_基本概念
太棒了,23年未入门的新手就缺少这样系统、细致的讲解
ychao ← linux内核中的GPIO系统之(1):软件框架
@bigpillow:拿锤子掉两下试试
入行真的好难 ← linux内核中的GPIO系统之(5):gpio subsysem和pinctrl subsystem之间的耦合
@wulala:期待wowo网站再次“忙碌起来”
wulala ← linux内核中的GPIO系统之(5):gpio subsysem和pinctrl subsystem之间的耦合
wowo前辈 请问另有博客或者公众号吗
wangdl ← Linux内核同步机制之(一):原子操作
@testtest:分析的对啊,完全没问题
kzf123456 ← 支持与合作
@冲:我支持了39。99
Roy ← 基本电路概念之(一):什么是电压?
@linuxer 兄, 关于您讨论的电压的本质,从静电场,电势差考虑,甚至加上欧姆定律都可以无缝缝合。 但是,假设考虑超导呢? 假设有一段超导体一直延伸到无限远处,那么无限远处的电势是多少? 电压这个概念是否真的是某种物质的內秉属性吗?
Roy ← 基本电路概念之(一):什么是电压?
@linuxer 兄,令公子要好好培养。 我家两个小儿,目前还无法开窍。 整个夏天,几乎每天都是一边在电脑上玩迷你世界,一边让奶奶喂饭。
Kiddy ← 关于numa loadbance的死锁分析
这个问题在内核5.15也存在,但是我看好像合入了这个patch。博主能给点思路吗
lifetjk ← Linux CPU core的电源管理(1)_概述
@hh20194362:可以啊,直接使用CPU hotplug不就可以直接减核了吗?
冲 ← 支持与合作
支持10块大洋,获准良多
Marvin ← DRAM 原理 5 :DRAM Devices Organization
这个系列写的太好了,非常有帮助,感谢!
hh20194362 ← Linux CPU core的电源管理(1)_概述
请教wowo专家一个问题,是否可以不通过suspend流程,直接对CPU进行减核操作呢?如果没有冻结线程,直接调用函数freeze_secondary_cpus,会不会使某个正在运行的CPU下电,导致业务中断呢?期待您的答复。
sleep ← Linux kernel的中断子系统之(二):IRQ Domain介绍
我是初学者,首先感觉大佬很强,文章写的也很细,但少了点框架性的概述,感觉文章结构,内容组织和语句上可以改进下。文章开始我觉得可以先描述下interrupt-controller,irq-domain,irq-desc等几个对象的组织方式和对应关系或所属关系,稍稍具象化一点,不然一直说添加domain,添加映射其实是比较…
yeee ← Linux common clock framework(1)_概述
@吴兵:pclk还没注册?
aha ← Device Tree(三):代码分析
从arm64的setup_arch来看,arm64架构不需要做platform匹配,只检查了root节点是否有model或者compatible。也就是说不同的arm64的soc都是无差异的setup arch过程,不需要实现struct machine_desc结构体中各种回调。这是因为arm64的soc真的不需要,…
波加查在北京 ← Linux电源管理(9)_wakelocks
这里的意思是kernel层的wakelock为android层的提供了接口,android的wakelock就是基于kernel的wakelock实现的,而kernel的wakelock本质上又是基于wakeup source。 相当于三层套娃,android wakelock —> kernel wakelock …
iptvphone ← 关于蜗窝
认真学习!感谢主人的分享!
zxq ← Linux内核同步机制之(九):Queued spinlock
看的不够仔细,A处已经被我们自己设置了pending bit,clear之前别人没有机会再设置pending bit,也不存在误清被人设置的pending bit。
zxq ← Linux内核同步机制之(九):Queued spinlock
3、Pending owner task val = queued_fetch_set_pending_acquire(lock);---------A if (unlikely(val & ~_Q_LOCKED_MASK)) {------------B if (!(val & _Q_PENDIN…
Bright-Ho ← Linux设备模型(7)_Class
@wowo:2. 所谓的event机制,正是基于设备模型(uevent)的封装。 wowo,你好! 这句话有依据吗?event事件作为input子系统的事件上报机制,与设备模型(uevent)有关系吗?
uucad ← 浅谈Cache Memory
@炒河粉的:L1I, 指令cache?
zzzz ← Linux cpuidle framework(1)_概述和软件架构
@wowo:sched_class是调度类,linux调度类中包含cfs(完全公平调度),rt(实时调度)以及idle等。优先级由高到低为rt->cfs->idle。每个调度类有其对应的运行队列,在linux调度选择下一个需要运行的进程时,会按照优先级由高到低扫描每一个调度类,找到可以运行的进程。也就是说,rt调度类的…
平平淡淡 ← 关于蜗窝
太赞了,多谢博主!
ty ← Linux设备模型(1)_基本概念
@lin:23年前来学习
yanl1229 ← Linux读写锁逻辑解析
终于等到更新了。
5song ← linux kernel的中断子系统之(三):IRQ number和中断描述符
@立志学linux:一般handle_irq()会进行如下操作,可参考(kernel/irq/chip.c: void handle_edge_irq(struct irq_desc *desc)): 调用中断描述符中的底层chip driver进行mask以及中断ACK回调,进行IRQ flow control…
立志学linux ← linux kernel的中断子系统之(三):IRQ number和中断描述符
有没有大佬知道,high level handler 和 通过request_threaded_irq注册的那个的handler(也就是irq_desc->irqaction->handler)是什么关系呀
立志学linux ← Linux内核同步机制之(二):Per-CPU变量
@Magicmanoooo:既然这样,那为什么不干脆用好几个不同的变量呢?还是说percpu变量就是等于定义了好几个不同的变量?
laoyekang ← Linux时间子系统之(四):timekeeping
推荐一个油管视频 对于此模块各个时间的计算有一个初步介绍 对理解此模块各种公式计算有帮助 www.youtube.com/watch?v=E1uyXn0kBAc
顶点软件 ← futex基础问答
你写得非常清晰明了,让我很容易理解你的观点。
eillon ← TLB flush操作
@Egan:需要ARMv8.4硬件支持
Yogi ← DRAM 原理 5 :DRAM Devices Organization
图片看不见了,是否可以重新上传一下
Tptogiar ← 关于蜗窝
正在入门linux kernel,入门KVM虚拟化,学习kernel技术 学kernel,学虚拟化,每每有幸能阅读到高质量的文章,我都会兴奋,而站主的文章就是这样的文章
BMC开发 ← 支持与合作
踏实做的需要支持,世界因为分享而美妙
storage ← Linux内核同步机制之(六):Seqlock
@呜啦啦:好问题,确实是这样
Hector ← 关于蜗窝
果断收藏
123 ← 蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍
@wowo:以上除“Profile”外的每一个定义,Service、Characteristic、Characteristic Properties、Characteristic Value、Characteristic Descriptor等等,都是作为一个Attribute存在的,具备第8章所描述的Attribut…
ecjtusbs ← KASAN实现原理
@zecard:“两块相邻的内存块都被申请过 影子内存都是0” 这种情况的越界检测是否有效,不知道答主有没有明确的结论,我的感觉应该无法区分。
nemo ← Linux电源管理(6)_Generic PM之Suspend功能
wakeup处理等过个知识点 = > 多个知识点
melo ← 内存初始化(上)
@鱼儿:我觉得: 假设我们分配4个page分别保存 只有4个pages, 第一个page存放pgd, 第二个放pud, 第三个放pmd, 第四个放pte pte最多放512个entries 为何只算level3呢?如果低于level3, 需要的pages就多于4个了
icy_river ← Why Memory Barriers?中文翻译(上)
从store_buffer和invalid_queue的角度, 能很好的理解rmb(), wmb(), mb(); 怎么从这种硬件的角度理解半屏障呢? ldaxr, stxr这样的指令执行之后, 在store_buffer和invalid_queue上,是个怎样的行为呢? 最终从外部observer看起来, 半屏…
一只卤蛋 ← 致驱动工程师的一封信
作者现在不更新了么,还是换了平台了呢,有没有朋友知道的
一只卤蛋 ← 中断唤醒系统流程
写的真好哇,逻辑好清楚
hulianqing ← Linux设备模型(2)_Kobject
@devin:我的理解是:1、把kobject定义在你的自定义结构体内,然后自定义结构体动态分配 2、直接单独分配kobject
qliangw ← Linux设备模型(9)_device resource management
学了小半年相关linux kernel知识,再看博主的文章真的是醍醐灌顶!!!感谢博主的分享,相关文章值得细读细品,满满干货
icy_river ← Linux内核同步机制之(四):spin lock
@dream:在你假设的场景是,功能是没问题的; 但是这样B的时间片不是完全浪费了吗?
icy_river ← Linux内核同步机制之(四):spin lock
@bsp:1. sev只有sev/sevl两种, 无法给指定core发event; 2. 同时自旋的core太多的话, cache同步开销就不能忽略了; 3. kernel 5.10, ticket spinlock已经换成qspinlock;
cc ← 蓝牙协议分析(10)_BLE安全机制之LE Encryption
@EE:控制
sql ← 支持与合作
感动与敬佩,一点心意,聊表支持与感谢。这个世界会好的~
XuLiDown ← Linux kernel scatterlist API介绍
@code_搬运工:个人感觉这里的表述可能有点问题。sg_dma_address 代表的应该是内存块在总线地址空间中的基地址,dma_length 代表的则是内存块在总线地址空间中的长度
leo ← 进程切换分析(1):基本框架
如果切入的是普通进程,那么这时候进程的地址空间已经切换了,也就是说在A--->B进程的过程中,进程本身尚未切换,而进程的地址空间已经切换到了B进程了。这样会不会造成问题呢?还好,呵呵,这时候代码执行在kernel space,A和B进程的kernel space都是一样一样的啊,即便是切了进程地址空间,不过内核空间实际…
YG ← linux kernel的中断子系统之(四):High level irq event handler
博主14年写的文章,现在读起来依然受益匪浅,佩服!! 真想知道博主是怎么一步步到达这种水平的
单手御龙 ← 蜗窝微信群问题整理
蜗窝的大群(457024058)已经加满了,我建了个小群(733620975),方便大家沟通交流(非官方)
cc ← Linux kernel的中断子系统之(一):综述
博主你好,说起来是在其他博文里看的东西,但是有个问题一直没有解决。问题是这样的,检测充电器的插拔,插和拔两个动作产生两种中断,但是只有一个检测中断的引脚。我看到文章的示例中,设备节点的interrupts属性中只有一个中断向量,但是获取中断号时却可以得到两个中断号,很疑惑,如果博主或者其他读者看到我的问题,可以解答一下…
Thomas ← Linux设备模型(5)_device和device driver
前辈你好,阅读你的文章受益良多。linuxer新手前来讨论。对以下两段话还是感觉有不对的地方。 1.在"Linux设备模型(4)_sysfs”中,我们有讲到,大多数时候,attribute文件的读写数据流为:vfs---->sysfs---->kobject---->attribute---->kobj_type--…
shousi ← linux kernel的中断子系统之(八):softirq
@农夫山泉:我理解是进exception的时候,硬件关闭了CPU的Interrupt位。直到irq_exit里面才主动打开。可以在qmeu里打个断点看下。
devin ← Linux设备模型(2)_Kobject
动态创建 "前面讲过,Kobject必须动态分配,而不能静态定义或者位于堆栈之上,它的分配方法有两种。"这里笔误了吗?
double_qiang ← Linux内核同步机制之(六):Seqlock
@呜啦啦:不是啊,write thread把reader thread给抢占了,然后将对应的B node释放后,之后reader thread还会再重新进临界区,这时候再去遍历链表时,链表中已经不存在B node,又怎么会去访问B node呢
double_qiang ← Linux内核同步机制之(一):原子操作
@九五二七:我的理解抢占时机可以简化成两种,一种是依赖中断发生调度时,另外一个就是当前进程主动调用schedule,显然后面这种的抢占时机肯定是不存在原子操作的
g ← 逆向映射的演进
@linuxer:请问书名是什么?
禅机子 ← Linux进程冻结技术
@bsp:想问一下,最近我遇到一个问题,就是user_task,存在扫描文件的操作,如果刚好在suspend流程中,会出现freezing of tasks。 有什么解决思路嘛,麻烦啦
hymmsx ← KASLR
@litao6169:你这个结果计算出来是A6200000和他设的A6200000不一样?
hymmsx ← KASLR
@litao6169:你这个结果计算出来是A6200000和他设的A6200000不一样?
jqdeng ← 内存初始化(上)
@Zaiqiang:用的已经不是启动时的页表,而是在early_fixmap_init里面使用了bm_pud/bm_pmd/bm_pte这三个数组重新建立了映射
小鱼儿 ← CFS任务的负载均衡(概述)
看的很舒服啊
550W ← CFS调度器(3)-组调度
好问题。 这个是因为: grq->avg.load_avg = (cfs_rq->load.weight * delta_time) / LOAD_AVG_MAX 当这个CPU一直运行,idle时间很少的时间,可以近似认为delta_time = LOAD_AVG_MAX,也就是可以用load_avg来模拟l…
龟仙人 ← 关于蜗窝
与诸君共勉! 认同站长的理念“透透彻彻,明明白白” 拒绝在奔走忙碌中无所长进,争取在沟通思考中共同进步。
bsp ← zRAM内存压缩技术原理与应用
@bsp:swap & page fault流程 1:将待swap的page 加入到swapcache中; 2:解除task和该page的映射关系; 3:通过pageout 进行zram压缩,并将此page压到某个buffer中; 4:压缩完成后,选择性从swapcache中free该page(比如swapca…
yayaya ← O(n)、O(1)和CFS调度器
用户设置nice值后在内核中会有NICE_TO_PRIO宏转换成优先级,我们平常看到的nice值都为0不代表内核没有对其他nice值做处理,看下内核代码就会明白的
yayaya ← O(n)、O(1)和CFS调度器
@威点零:任务主动休眠或系统调用是随机的,与tick无关,也就是在两个tick之间就有可能发生,这时就要判断实际的执行时间,而不是根据tick数确定
yayaya ← O(n)、O(1)和CFS调度器
@markened:是实际时间
testtest ← Linux内核同步机制之(一):原子操作
ldrex和strex的方案,如果三个线程竞争是不是有问题?如下场景 ldrex 1 => r1 thread1 modify r1++ thread1 ldrex 1 => r2 thread2 modify r2++ thread2 strex r2 thread2 success …
Li Chen ← Linux common clock framework(2)_clock provider
dts需要准确的描述硬件,如果SoC的所有clk相关setting都是放在一个module,比如clk module或者某个system controller,那么就应该放在一个node里,否则应该放在自己独立的node
耗子尾汁 ← 蜗窝微信群问题整理
QQ群现在加不了了吗?
东城阿大 ← CFS任务的负载均衡(load balance)
本文中的“busy cpu" 改为 "active cpu"与 idle相对更容易理解些,busy指的是忙,本来讲的是负载均衡,如果还是busy cpu去拉取其它进程过来,这地方会让人费解,如果看成是active cpu的话,这样就容易理解了。没有进入idle状态的,还在运行的。
woda ← 关于蜗窝
群满了
bsp ← Linux内核同步机制之(九):Queued spinlock
ticket-based-spinlock有个重大问题: 假如当CPU0获取了spinlock,而CPU1、CPU2、CPU3...在等锁,在CPU0 spin_unlock时通过sev/stlr唤醒其它所有所有CPU去check是否轮到自己;我们通过ticket可以知道lock->next是哪个CPU,其实只需要唤…
bsp ← Linux内核同步机制之(四):spin lock
ticket-based-spinlock有个问题, CPU0获取了spinlock,CPU1、CPU2、CPU3...在等锁时,CPU0通过spinunlock中的sev唤醒其它所有所有CPU去check是否轮到自己;既然我们通过ticket知道了lock->next是哪个CPU,其实只需要唤醒对应CPU上的tas…
bsp ← Linux内核同步机制之(四):spin lock
@dream:B如果为rt线程,SCHED_FIFO时,是不考虑时间片的;
maan008 ← 留言板
@飞鸟:wowo还在呢啊~~~ 以为你离开了啊 同事推荐的网站,受益匪浅,感谢感谢~
红桃JK ← 留言板
今天下午1点偶然发现这个网页,原本想简单看看,没想到一直看到晚上八点半。 写的太好了,每部分内容都十分具体详细。 直接转粉,收藏,以后慢慢看
bang ← 浅谈Cache Memory
@wmzjzwlzs:可以的,如ARM64通过PTE页表控制的,是否是cache的还是no-cache的,不同的虚拟地址对应不同PTE页表。
learner ← PELT算法浅析
@donbear:PELT虽然是按se计算的。但是因为pelt最终是用来衡量cpu超载、cpu负载均衡的,所以时间是从cpu的角度看待的,对于一个cpu来说,统计的都是几何级数最大值时间段内的负载,所以对于每个任务都要计算在这段时间内的负载。
bsp ← zRAM内存压缩技术原理与应用
内存压缩的调用路径中,add_to_swap并不会直接call pageout,add_to_swap只是将page变成SwapPage并和swap_entry建立对应关系; 并且,add_to_swap时,page对应的mapping还未unmap; 流程大致是:先add_to_swap,后try_to_unma…
农夫山泉 ← linux kernel的中断子系统之(八):softirq
关本地中断实际上是禁止了top half和bottom half抢占当前进程上下文的运行?这个是怎么实现的,看local_irq_disable()的代码并没有关软中断/
abccdeg ← 文件系统和裸块设备的page cache问题
篇幅不多,但讲得非常透彻,尤其实验过程,赞!
abccdeg ← O(n)、O(1)和CFS调度器
@judy:个人的一点理解,不知是否正确:自旋锁解锁时、系统调用返回用户空间时、当前时间片用完(hrtick到期时)。
judy ← O(n)、O(1)和CFS调度器
"在当前进程被抢占的场景下,调度并不是立刻发生,而是延迟执行,具体的方法是设定当前进程的need_resched等于1,然后静静的等待最近一个调度点的来临,当调度点到来的时候,内核会调用schedule函数,抢占当前task的执行。"请问“调度点”是什么呢?是谁设置的呢?
Yaksama ← Linux内核同步机制之(四):spin lock
@dream:个人认为spinlock本身就是一种轻量级的锁,设计初衷除了考虑中断访问临界区资源的情况,还有一个就是避免过多进程上下文切换带来的开销。 如果不disable preempt,的确拥有锁的线程早晚有得到执行的一天,但这种情况为什么不直接用mutex呢,而且线程获取spinlock之后执行的任务都是轻量级…
ecjtusbs ← Linux kernel的中断子系统之(六):ARM中断处理过程
2022年12月14日 读了好几遍,每次感觉受益匪浅! 前人栽树后人乘凉。感谢前辈的无私分享。
Li Chen ← ARM64的启动过程之(二):创建启动阶段的页表
> 实际上是从TEXT_OFFSET开始的,偏移这么一小段内存估计是为了bootloader和kernel之间传递一些信息 不是, 这段当初是给swapper page table用的
炒河粉的 ← 浅谈Cache Memory
为什么有的一级缓存read-only?这个read-only该怎么理解呢
Egan ← TLB flush操作
ARM architecture现在有支持TLB range的
wmzjzwlzs ← Linux内核同步机制之(三):memory barrier
smp_mb实际是dmb ish,在inner shareable内的多core管用.如果是多个cluster之间的core应该是dmb osh吧?linux支持多cluster为啥smp_mb不是dmb osh?
marvin263 ← CFS调度器(6)-总结
时间片太小,调度就会更为频繁。从v5.13起,加了个开关,确保最小执行时间为sysctl_sched_min_granularity的。 http(s)://github.com/torvalds/linux/commit/0c2de3f054a59f15e01804b75a04355c48de628c T…
xxxxxxx ← DMB DSB ISB以及SMP CPU 乱序
赞~
Roy ← ARMv8-a架构简介
拜阅 Guest OS(Linux kernel、window等)位于EL1 是否大致逻辑如下: 若实现Hypervisor(EL2),则EL1可运行若干GuestOS,否则EL1运行OS。 只有在异常发生时(或者异常处理返回时),才能切换Exception level(...) SMC或HVC 是否…
Roy ← 为什么会有“ARMv8A Architecture”这个分类
拜阅 linuxer、forion、wowo等同学,都表现(除)出了极大的兴趣, //除 ->出 建议修改 从最初的ARM7(v4),ARM9/9E(v5),到后来的ARM11(v6),
muzimuke ← Linux内核同步机制之(三):memory barrier
"它实际上会本cpu的进程上下文和中断上下文访问" 文中的这句话是不是写错了呀?
卷心菜 ← SLUB DEBUG原理
请问红区的size是多大?
kongsuozt ← KASAN实现原理
@smcdef:vmalloc也可以做,不过得自己去实现shadow memory的映射、状态更新以及分配释放的hook插入
doran ← 浅谈Cache Memory
@zach:你的理解是对的,但是不够完善
melo ← Linux graphic subsystem(2)_DRI介绍
@11号tony老师:1 card0这个节点, 可以通过open打开, 获取crtc encoder connector fb等资源, 实现设置分辨率, 刷新率等设置 renderxx这个节点, 应该是card0的子集, 只有3d加速部分, 实际没看到过怎么打开使用 fb这个是一个被drm淘汰下来的陈旧显示模块 …
abcdggg ← 图解slub
kmem_cache.kmem_cache_node.list_lock这个锁仅用于写kmem_cache_node结构成员的场合(读操作未见加锁),那么就有一定概率出现错乱
abcdggg ← 图解slub
请教一下,假如一个cpu在kmem_cache_destroy销毁句柄,另一个cpu在kmem_cache_alloc使用句柄分配内存,二者如何互斥?没有看到加锁的情形。
sxr ← DRAM 原理 1 :DRAM Storage Cell
@sxr:哦哦,没事了,貌似是加载很慢,我过了五六分钟就出来了
sxr ← DRAM 原理 1 :DRAM Storage Cell
图片没挂,但是加载不出来,f12查看源代码找到图片链接是能打开的,求修正
wowo ← 留言板
@飞鸟:抱歉哈,没来得及处理,已经修复了。 感谢~~~
joker ← 关于蜗窝
博客很好,果断收藏了
飞鸟 ← 留言板
站内搜索为啥不支持了呢?
Ren Zhijie ← load_balance函数代码详解
E、将detach_tasks函数摘下的任务挂入到src rq上去。由于detach_tasks、attach_tasks会进行多轮,ld_moved记录了总共迁移的任务数量,cur_ld_moved是本轮迁移的任务数 将detach_tasks函数摘下的任务挂入到*dst_rq*上去。
凉冰 ← 致驱动工程师的一封信
什么时候出一篇致入门小白的一封信啊,好多的点到为止,小白真就点到为止了。
Ren Zhijie ← CFS任务的负载均衡(load balance)
有个疑惑,问题如下: 二、周期性负载均衡->2、均衡处理->D、每个level的sched domain都会计算下一次均衡的时间点,这里记录最近的那个均衡时间点,是怎么推导出后面的降低均衡次数,避免不必要均衡带来的开销的结论的呢? 我理解这里应该是保证tick可以触发sd层级中最接近的那个next_balance时间…
lin ← Linux设备模型(1)_基本概念
@alilili:22年前来学习
木木在努力 ← 关于蜗窝
刚刚跨入linux工作的大军中,真的蜗蜗写的内容的好详细,对我的帮助真的好大,爱了
llama ← Linux DMA Engine framework(3)_dma controller驱动
@Toni:用内嵌DMA是标准做法。用系统的DMA理论上是可以的。但是这样就要每个系统都要做芯片设计上的集成。这样比起即插即用的内嵌DMA,成本上差太多了。
刘 ← linux kernel的中断子系统之(三):IRQ number和中断描述符
第一个问题就是:为何irq_set_chip接口函数使用irq_get_desc_lock来获取中断描述符,而irq_set_irq_type这个函数却需要irq_get_desc_buslock呢?其实也很简单,irq_set_chip不需要访问底层的irq chip(也就是interrupt controller)…
王 ← futex基础问答
不错,休闲刚好学习一下
bsp ← schedutil governor情景分析
schedtuil最初的设计不是为big_little这种架构吧?毕竟inte在l2016年写scheutil时,intel还没开始搞大小核。只是后来发现schedutil用来给arm的大小核调频 也能更好的匹配上?
小鱼儿 ← X-002-HW-S900芯片boot from USB有关的硬件描述
作为IC公司,确实没有办法
小鱼儿 ← 关于蜗窝
很难不支持
奥特曼 ← Linux时间子系统之(二):软件架构
@奥特曼:补充: kernel版本是4.14.73 启动时有 Clockevents: could not switch to one-shot Clockevents: could not switch to one-shot Clockevents: could not switch to one-s…
奥特曼 ← Linux时间子系统之(二):软件架构
你好 我有一个问题 在用户层调用usleep(1000)时,发现实际用时有10000us(100HZ的配置),但是我是有自己的HRTIMER的,不知道为啥没起效,经过排查,我自己注册的clk_event被系统的dummy_timer替代作为了pre_cpu的clk_evnent (我是ARMV7的),而我注册的clk…
yibai ← 支持与合作
很棒,感谢分享
DyalnW ← Device Tree(一):背景介绍
正在学习device tree,感谢大佬的文章
wmzjzwlzs ← 浅谈Cache Memory
@bsp:多谢, 可以同时存在的吗?同一个物理地址ioreamp到虚拟地址a时开启cache,ioreamp到虚拟地址b时关闭cache,然后同时使用a与b
bsp ← 浅谈Cache Memory
@wmzjzwlzs:当然可以,最基本的操作,内核里可以参考ioreamp;
补零补零补零 ← Linux内核中的GPIO系统之(3):pin controller driver代码分析
@zxl:通过代码分析一下,本人菜鸡,谨慎阅读 ---creat_pinctrl 对于其他的设备使用pinctrl子系统来设置引脚,获取pinctrl 时解析设备树的步骤是这样的, 循环获取pinctrl-n,通过state = 0 ,依次解析各个state --- pinctrl_dt_to_map 函数 …
wmzjzwlzs ← 浅谈Cache Memory
linux arm,同一个物理地址能否映射到虚拟地址a时开启cache,映射到虚拟地址b时关闭cache?这样cpu访问a经过cache,访问b就不经过cache
Aero ← u-boot启动流程分析(1)_平台相关部分
@蚂蚁的爸爸:人家说的就是妥的意思. 别反复嚼舌根子, 自己理解错了还用昵称骂人, 这是不对的. 这里是技术论坛, 蚂蚁说话一直都客客气气, 你别把扣帽子WG气息带到这里来. 你的回复暴露你的智商, 你的昵称又暴露了你的素质. 换了马甲再来吧.
ymmmy ← 基本电路概念之(二):什么是电容?
大学四年令我一直困惑的是如何理解三极管的寄生电容,现在理解了,邻近器件不同的电位使然,器件也可以是导线。
11 ← DRAM 原理 3 :DRAM Device
第一次进行读写的时候需要precharge吗?这个precharge为什么叫做关闭行?明明是读写前的准备工作呀。
三变 ← 留言板
wowo是一个团队吗?还是一个人? 真的太渊博了,几乎覆盖整个底层驱动。。。
xinhe ← 为什么会有文件系统(二)
mark, 很顺理成章的讲解
xinhe ← eMMC框架及其初始化
@wolf:我还以为是我这边的问题呢
blazer ← Linux内核同步机制之(三):memory barrier
@tuhh:我也觉得参考文献列出来好一些,毕竟cache的这些性质俺们也不一定懂呢
Bin ← Device Tree(二):基本概念
@郭健:label在设备树中用,aliases中定义的别名在驱动源码中用
schspa ← Atomic operation in aarch64
@raceant:hwspinlock是外部IP提供的(不同厂家的IP会有不同),每次操作都需要通过MMIO来方位外部寄存器(Device nGnRnE),速度会慢的多. 这种的每次访问都不会经过cache.
schspa ← Atomic operation in aarch64
@raceant:hwspinlock是外部IP提供的(不同厂家的IP会有不同),每次操作都需要通过MMIO来方位外部寄存器(Device nGnRnE),速度会慢的多. 这种的每次访问都不会经过cache.
schspa ← Atomic operation in aarch64
@raceant:hwspinlock是外部IP提供的(不同厂家的IP会有不同),每次操作都需要通过MMIO来方位外部寄存器(Device nGnRnE),速度会慢的多. 这种的每次访问都不会经过cache.
影 ← Linux时间子系统之(十三):Tick Device layer综述
有没有办法在申请高精度定时器时,将该定时器绑定到特定的CPU核上?
CXK ← Linux内核同步机制之(五):Read/Write spin lock
@crash:ldrex本身是一个原子读指令,如果在这个期间这块内存被修改了,那么,就算醒来以后执行的strex指令也是会失败,也会重新跳转到ldrex,这段代码利用了原子操作的机制来保证不会出错。
orangeboyye ← Linux内核同步机制之(八):mutex
@yanl1229:有6位可用,目前只用了3位。
mingtian ← Linux内核同步机制之(一):原子操作
@Liu:后面的原子操作并没有关闭中断,只是通过局部检视和全局检视两种实现了原子操作
yanl1229 ← Linux内核同步机制之(八):mutex
2. 由于task struct地址是L1_CACHE_BYTES对齐的,因此这个成员的有若干的LSB可以被用于标记状态(在ARM64平台上,L1_CACHE_BYTES是64字节,因此LSB 6-bit会用于保存mutex状态信息 这句话是不是描述错误了,我看4.19的内核是: static inline …
bsp ← Linux时间子系统之(十七):ARM generic timer驱动代码分析
@yui:linux作为虚拟机VM运行时,就要配置成virtual timer; EL2的hypervisor使用physical timer; 一般virtual_time = physical_timer - offset; offset(CNTVOFF寄存器)由hypervisor调整,比如VM_linux…
orangeboyye ← CFS调度器(6)-总结
原文:“如果以NICE值为20计算的话,只需要8年左右时间”,应该是-20,少写个负号
fanqirong660 ← ARM64的启动过程之(一):内核第一个脚印
@matchchen:跟回帖有同样的疑惑。 之前ARM32上,boot_jump_linux传的fdt_addr以及在uboot里解析fdt得到的ramdisk等信息,都填在bootm_headers_t结构体里传给kernel了。 但ARM64上,boot_jump_linux只传fdt_addr。那是不是只…
Ethan ← Linux设备模型(1)_基本概念
@wowo:这句话从我中学到现在还没改,建议把这些用的评论置顶,这样有疑惑的朋友能第一时间看到大佬们的讨论
eexplorer ← mellanox的网卡故障分析
crash> dma_pool ffff9d0fa45f4c00 -x struct dma_pool { ... pools = { next = 0xdead000000000100, prev = 0xdead000000000200 } } 从dma_pool.po…
zxl ← Linux内核中的GPIO系统之(3):pin controller driver代码分析
@zxl:大老们, 请帮助解惑以下。 谢谢
zxl ← Linux内核中的GPIO系统之(3):pin controller driver代码分析
serial@50000000 { …… pinctrl-names = "default"; pinctrl-0 = <0x2 0x3>; }; 该serial device只定义了一个state就是default,对应pinctrl-0属性定义。p…
donbear ← PELT算法浅析
我想我明白了. *_avg 就是在 [1024us, 1024us, ...] 这个时间序列的对应指标统计的加权平均. *_avf 的分母完全是由它的数学定义推导而来的,其原始定义其实就是一个 Exponential Moving Average,分母的推导可以看http://en.wikipedia.org/…
Toni ← Linux DMA Engine framework(3)_dma controller驱动
@秋暮离:同样的问题
dream ← 通过点亮LED的方法调试嵌入式代码
既然能控制 GPIO ,模拟 UART TX 不更爽? 波特率可以搞低一点,如 9600 一次痛苦百次爽,哈哈。
smallfish ← Linux内核同步机制之(二):Per-CPU变量
@linuxer:大佬,你说利用 globa count来统计各个cpu 本地的累加值,这个好理解,但是我的操作不是++或者--, 我要对这个count 赋值,比如说count=0, 那这个是不是还得进行同步。
江南王公子 ← 新技能get: 订阅Linux内核邮件列表
有个问题,why cannot send English content directly ?
江南王公子 ← 新技能get: 订阅Linux内核邮件列表
A级TBB
Redsky ← PELT算法浅析
@donbear:这个问题我是这么理解的,几何最大值,表征的是在衰减期间内,每一个us内se都处于running/runnable状态的sum,实际上也可以理解为某一时刻load在load sum计算中衰减到0的时间,也就是衰减周期的us数量。sum/time,计算出来的是avg。 如果理解错了,请博主指正。
王传琪 ← Linux内核中的GPIO系统之(3):pin controller driver代码分析
@王传琪:纠正上面评论,在注册pinctrl设备的时候 pinctrl_register 函数会调用 pinctrl_enable 里面的 pinctrl_claim_hogs 会设置引脚默认状态,这样看是会设置引脚默认状态的
dream ← spin_lock最简单用法。
我也是这么认为的:有静态变量就意味着函数不可重入,不可重入的函数,只要有可能出现并发调用,都应该加上锁进行保护。
dream ← Linux内核同步机制之(四):spin lock
linuxer: 看到这段话,有些不理解,还请解惑,非常感谢。 "A在进入临界区之前获取了spin lock,同样的,在A访问共享资源R的过程中发生了中断,中断唤醒了沉睡中的,优先级更高的B,B在访问临界区之前仍然会试图获取spin lock,这时候由于A进程持有spin lock而导致B进程进入了永久的s…
zach ← 浅谈Cache Memory
非常感谢能写出这么清晰的文章,就是有个疑问,按照文中的描述,cache根据自身的size划分为多个cache line,每个cache line中存储的一段主存中的数据,tag array是储存在什么地方的呢,按我的理解应该是存储在cache中的,如果是这样是否可以理解为cache的内容是由tag array和data…
王传琪 ← Linux内核中的GPIO系统之(3):pin controller driver代码分析
@王传琪:这几天加打印信息看了一下,找不到设备返回ENODEV,但pinctrl_bind_pins只有在出现EPROBE_DEFER和EINVAL才会返回错误,其他错误都被忽略了,直接返回0,然后继续进行really_probe剩下的流程,只不过不会设置pin而已。那这样pinctrl里面添加的默认设置看来是不会初始…
xyy ← 统一设备模型:kobj、kset分析
@伊斯科明:有通知和没通知的区别
wenxl ← CFS调度器(4)-PELT(per entity load tracking)
"一个entity对系统负载的贡献可以根据该实体处于runnable状态(正在CPU上运行或者等待cpu调度运行)的时间进行计算" ---------------------------------------------------------------------------------------------…
donbear ← PELT算法浅析
感谢分享,很精彩啊。 有一个疑问希望能得到博主的解答。 在通过 *sum 计算 *avg 的时候,为什么是除以几何级数的最大值? 按照linux中源码注释以及各处看到的公式,这里貌似除1024就可以了?:( static __always_inline void ___update_load_av…
王传琪 ← Linux内核中的GPIO系统之(3):pin controller driver代码分析
@王传琪:感觉前面描述的有点问题,改一下。 我在看pinctrl_register注册的时候有个疑问,就是pinctrl driver也是一个platform driver,走的标准的driver注册流程。会进入到really_probe这个函数,然后也会调用pinctrl_bind_pins,去绑定和设置…
王传琪 ← Linux内核中的GPIO系统之(3):pin controller driver代码分析
各位大佬好! 我在看pinctrl_register注册的时候有个疑问,就是pinctrl子系统也是一个platform driver,这样他也是走的标准的driver注册流程。会进入到really_probe这个函数,然后也会调用pinctrl_bind_pins,去绑定和设置默认io,但这个时候pin…
qp123 ← u-boot启动流程分析(2)_板级(board)部分
谢谢你这么无私的人
点灯大师 ← 关于蜗窝
怒赞
lamb ← Linux电源管理(15)_PM OPP Interface
@jackzhous:kernel待机、睡眠过程看这篇入门,系统睡眠的入口在这里 http://www.wowotech.net/pm_subsystem/autosleep.html
雁落 ← u-boot启动流程分析(1)_平台相关部分
那张uboot架构图是你自己理解画出来的吗,把我惊住了
ctwillson ← Linux cpuidle framework(4)_menu governor
一直没理解在抓到的 systrace 中有个 <idle>-0 (-----) [002] .n.1 39203.759393: cpu_idle: state=4294967295 cpu_id=2 这种 c-state 代表的是什么含义?
三变 ← 留言板
每次来都有新的收获,从uboot学到kernel wowo这都有我想要的 纯粹的技术原理
wate ← Linux kernel中断子系统之(五):驱动申请中断API
@albert:如果只从保持高优先级角度看的话,那只有让中断处理程序处于中断上下文时有最高优先级了,使用IRQF_NOTHREAD在request_thread_irq()注册时明确指定不线程化应该是可以满足高优先级的问题。否则,线程化之后会被内核高优先级线程欺负的。
DonGe ← Linux内核中的GPIO系统之(3):pin controller driver代码分析
Pinctrl子系统就给我看晕了
running ← 基于Hikey的"Boot from USB"调试
start.s应该不是运行在cortex M3上的,很多ROM code会运行在AArch32模式,比如高通等,hikey应该也是一样,AP上电工作在AArch32,通过warm reset执行BL2时,切换为AArch64.
focus ← 页面回收的基本概念
清晰。
solar ← Linux电源管理(11)_Runtime PM之功能描述
@海:您好,请问这个资料还在吗,百度盘的链接失效了
jarvis ← CFS调度器(2)-源码解析
@linuxer:我看wakeup task的代码,如果任务原先的cpu和当前选择的select cpu不同的话,会走到migrate_task_rq_fair,其会做se->vruntime -= min_vruntime,即会减去任务原先所在cpu的min_vruntime;这就相当于是在唤醒的时候减去min_vr…
cocoHero ← 蓝牙协议分析(5)_BLE广播通信相关的技术分析
请教一下大神, BLE广播的时候,有没有限制scaning的数目呢? 比如passive状态的scanning实体,是不是可以有无穷多个? 如果是需要有回复的scaning实体,应该是链接数目达到上限后,就不能再响应ADV_IND/CONNECT_REQ了吗?
haifan ← Linux serial framework(1)_概述
@wowo:还有芯片设计时成本允许的情况下加大rx fifo, 还有就是使用4线串口,使用硬件流控的方式。
Liu ← Linux内核同步机制之(一):原子操作
这里有一个疑惑,如果关闭中断后由外部中断触发怎么办?是不是说如果系统要求很高的时候这种保证原子的方法不太实用呢
十岁卖切糕丶 ← Linux power supply class(1)_软件架构及API汇整
能基于kernel5.4以上的内核,用gki的方式写个添加节点的文章吗
irreallich ← Linux DMA Engine framework(2)_功能介绍及解接口分析
@benjoying:其实对于目前的很多开发者来说,反倒是直接折腾硬件更加简便 做控制器开发很多资深工程师大多经历过单片机,rots,到linux的过程,对linux的dmaengine系统并不熟, 但是因为以前的经验, 对dma控制器的逻辑很熟, 直接从芯片手册操作寄存器的来实现dma功能的速度更快
观察者 ← 蓝牙协议分析(1)_基本概念
2014-5-23 发的博客,到现在2022-6-2,依旧对学习ble的新手来说具有很大的学习价值,感谢蜗蜗!
ctwillson ← PELT算法浅析
之后有没有分享嵌入式设备的调度,比如 EAS WALT...
曾尚文 ← 支持与合作
好好学习,天天向上
摩斯电码 ← CFS调度器(1)-基本原理
SCHED_IDLE属于fair_sched_class,而不是idle_sched_class
linuxer ← Dynamic DMA mapping Guide
@gavin:因为HIGHMEM memory没有进行线性映射,所以没有虚拟地址呀。
gavin ← Dynamic DMA mapping Guide
请问这个地方说:。dma_map_single函数在进行DMA mapping的时候使用的是CPU指针(虚拟地址),这样就导致该函数有一个弊端:不能使用HIGHMEM memory进行mapping。 这个为啥不能呢?谢谢
hw07 ← DRAM 原理 2 :DRAM Memory Organization
第一张图是不是画错了?下面的BITLINE 应该改/BITLINE, output 也应该为/output
hw07 ← DRAM 原理 1 :DRAM Storage Cell
output 和/output 那个是输出?
明天 ← Linux kernel的中断子系统之(六):ARM中断处理过程
有两种情况会恢复:1退出中断的时候,因为会恢复cpsr寄存器;2、软中断soft_irq中会打开中断
caid2012 ← Linux电源管理(9)_wakelocks
@wowo:第一、二部分似乎描述Android搞了两个wakelocks,一个销声匿迹,一个基于kernel的wakeup events框架;且新的wakelocks是kernel/power/wakelock.c 第三节又描述了kernel的wakelocks机制;并且与Android的wakelocks机制作…
bsp ← Linux DMA Engine framework(1)_概述
@江南书生:内存之上还有cache,cache还有L1/L2/L3。很多时候cpu会从DDR 一次性load一个cacheline的内存(或数据或指令),然后CPU基于cache工作即可,此时就不需要DDR;
y ← 关于numa loadbance的死锁分析
精彩的分析,希望有更多用例分享。
ora ← CMA模块学习笔记
@victor:有同样的困惑,通过/proc/pagetypeinfo来看,CMA类型最大的order也是10(4M),怎么做的更大连续内存的分配?
eshin ← 蓝牙协议分析(6)_BLE地址类型
@David:您提问题的时间是2018年,这时候发布的规格书是4.2.这里只讨论device支持privacy mode的情况,应该是这样: 1. initiator address只能是RPA(resolvable private address)地址.具体可见蓝牙核心协议core4.2及以上 [Vol 6, Pa…
orangeboyye ← Linux内核同步机制之(七):RCU基础
@linuxer:非常感谢,之前加过你的微信,微信聊。
明天 ← Linux kernel的中断子系统之(六):ARM中断处理过程
@太空的树懒:讲的很清楚了 (4)很多异常处理的代码返回的时候都是使用了stack相关的操作,这里没有。“movs pc, lr ”指令除了字面上意思(把lr的值付给pc),还有一个隐含的操作(movs中‘s’的含义):把SPSR copy到CPSR,从而实现了模式的切换。 模式的切换是靠修改cpsr寄存器实现…
linuxer ← Linux内核同步机制之(七):RCU基础
@orangeboyye:这位同学,有没有兴趣来OPPO搞内核优化,O(∩_∩)O 要不要加个微信详聊一下,哈哈。
orangeboyye ← Linux内核同步机制之(七):RCU基础
@luke:两个写者不能同时执行,因为一个写者要基于另一个写者的结果去操作才行,否则就会丢失一个写者的操作。 假设RCU保护的是int * p = &i,i=1,两个写者的操作都是要i++,按照你的逻辑操作,最后i==2,和预期的i==3不符,丢失了一个写者的操作。
raceant ← Atomic operation in aarch64
@wahaha02:hwspinlock 是怎样实现的呢?
Gonglja ← Device Tree(一):背景介绍
@wolf2blood:uboot中 添加对扁平化设备树的支持,CONFIG_OF_LIBFDT,然后机器码传递0xffffffff即可。
orangeboyye ← Concurrency Managed Workqueue之(二):CMWQ概述
@sgy1993:死锁的意思是A等B,同时B也在等A,等的不一定是锁啊,只要是在等待就行。main先调用func1,再调用func2,func2就是在等func1执行完才能执行啊,这个在逻辑上也是等啊,因为如果func1一直卡在那执行不完,func2就不可能执行。
orangeboyye ← Concurrency Managed Workqueue之(二):CMWQ概述
@sgy1993:文中的意思是说在work A中要等待work B的执行结果,但是不碰巧,work A 和B被放到了同一个CPU上,而且A在前,那么A就会阻塞等待B,可是B要等A执行完之后才能执行,因此产生了A等B,B等A,相互等待,就是死锁啊。
orangeboyye ← Concurrency Managed Workqueue之(一):workqueue的基本概念
@张飞:没有说反,你仔细看代码,这三个条件不是or的关系,是and的关系,第一个成立了才会去看第二个,第二个成立了才会去看第三个,第一个条件是没有在冻结,如果不成立就是在冻结,整个表达式为false,后面的就不看了,if子语句不执行,下面的语句是try_to_freeze,正好执行冻结啊。第二代条件同理。当三个条件都成…
orangeboyye ← Concurrency Managed Workqueue之(一):workqueue的基本概念
@小学生:如果你这样写代码就会导致少一个work处理,所以不能这么写代码,你应该每次都创建一个新的work来执行,不要复用work。当然我遇到过复用work的,它的逻辑是这么写的,把要处理的事情放到另一个list上,work遍历那个list处理事情,scheddule_work在这里是的作用就是如果work没在运行就唤…
orangeboyye ← 中断唤醒系统流程
@wangyunqian:你那个不是suspend to ram吧,suspend to disk才会从bootrom开始执行,相当于是关机重启了,重启时会加载disk上存的东西,恢复现场。
abcdefg1324 ← PELT算法浅析
赞!实际移植才能理解深刻,这种尝试也挺有意义
jackzhous ← Linux电源管理(15)_PM OPP Interface
时间有点久,不知道博主还能不能回复我;初学者,有个疑问,按照大学学单片机时候的理解,电源管理这些待机、睡眠最终在硬件上的体现是往硬件提供的寄存器写值,或者往芯片某个引脚拉高、拉低电平,从而硬件就变为待机、睡眠等状态,是这样理解吗?如果是在kernel代码里面哪里有代码可以体现呢?
orangeboyye ← Debian8 内核升级实验
用发行版的config有个问题,就是发行版为了在各种机器上运行配置了大量的ko,导致编译时间会非常长。其实内核已经给我们提供了一个方法 make localmodconfig,会根据系统现在的状态只配置目前加载的ko,这样编译时间就会非常快,在我的电脑上virtualbox虚拟机里4核编译不到30分钟就编译好了。
orangeboyye ← Linux时间子系统之(十四):tick broadcast framework
@哈默:这个系列的文章逻辑还是非常清晰的,只不过不适合新人,要有很深厚的内核基础才行,对内核只有一般性了解的来说读起来都非常吃力,有很多概念都没有解释都是直接假设你已经懂了的,比如调度、PM相关的知识。
evilpan ← schedutil governor情景分析
赞,期待后续
linuxer ← Linux时间子系统之(四):timekeeping
@orangeboyye:应该是,但时间过于久远了,现在都忘记要写什么了。
orangeboyye ← Linux时间子系统之(四):timekeeping
七 2 (4)最后一句:如果delta_delta大于2秒,突然结束了,是不是少写了半句话?
linuxer ← PELT算法浅析
@zzz:的确如你所言,理论需要结合实际。不过,我目前的工作就是做内核优化的,所以不缺实践,哈哈^_^ 有兴趣来做内核优化实践的话可以联系我,微信是Linuxer-at-wowo
zzz ← PELT算法浅析
文章写的很赞!想问下作者调度和负载均衡这块代码是如何学进去的,因为调度并不像实际一个设备驱动或者其他模块代码那么容易上手和实践,这里如何和实践相结合呢。
jimi ← 支持者列表
@wowo:子里行间都能感觉到wowo的真诚,对自己、对别人、对技术都是这样,敬佩!
llp ← ARM64的启动过程之(四):打开MMU
@daiyinger:请问你这个物理地址在mmu enable 之后,是如何映射的
bsp ← Linux内核同步机制之(六):Seqlock
@呜啦啦:是的,我也觉得seqlock不适合保护指针。
shu ← Linux设备模型(3)_Uevent
@慢慢想:上述耗时的问题确定了吗?
Franky_Pan ← 支持与合作
感谢感谢。学习了~