Last updated 2 years, 8 months ago
Last updated 2 years, 8 months ago
官方网站 https://www.yu444.com
客服频道 @kefu
供求频道 @gongqiu
公群频道 @hwgq (汇旺公群首字母)
新群 @xinqun
核心大群 @daqun
记账机器人 @hwjz
公司介绍 @hwdbgs
担保流程 @dbliucheng
Last updated 1 month, 3 weeks ago
https://www.openwall.com/lists/musl/2024/11/21/6
~~往标准和兼容性的粪坑扔了个炮仗,准备听响~~
Erlang is optional?
刷 reddit 看到这个标题,我说我没关注 erlang 啊,怎么给我推这个?再一看 r/BlackMythWukong 干
Redirect: 此頻道不定期更新內容 Ziyao 的部落格 Ziyao 的 GitHub [email protected] Update sometimes Blog GitHub [email protected] Some contents are sent with English translation There is a pure version of this channel, with technical contents only. @ziyao233channel_tech…
- 父时钟有三种指定方法,需要三选一 - 全部用每个时钟全系统唯一的字符串名字来查找,似乎是废弃的做法 - 全部用 clk_hw 指针查找,这种方式仅适用于这些父时钟都是该模块的内部时钟的情况 - 如果父时钟有多重情况混合,就只能用 struct clk_parent_data 的数组进行查找了 - 这个结构体里可以指定 clk_hw 指针或者全局唯一名字,这种和上面提到的含义相同,后者仍然是 fallback 的方式 - fw_name 和 index:每个 clock-controller…
- 父时钟有三种指定方法,需要三选一
- 全部用每个时钟全系统唯一的字符串名字来查找,似乎是废弃的做法
- 全部用 clk_hw 指针查找,这种方式仅适用于这些父时钟都是该模块的内部时钟的情况
- 如果父时钟有多重情况混合,就只能用 struct clk_parent_data 的数组进行查找了
- 这个结构体里可以指定 clk_hw 指针或者全局唯一名字,这种和上面提到的含义相同,后者仍然是 fallback 的方式
- fw_name 和 index:每个 clock-controller 在 dt 里也是可以具有 clocks 属性的,这两种查找就基于这个属性完成,前者通过对应的 clock-names 索引目标 clock,后者则直接使用 clocks 属性的第 index 个 clock
- 调用 clk_register* 类函数注册时钟时,会调用到 __clk_register() 分配时钟对应的 struct clk,调用 clk_core_populate_parent_map() 初始化父时钟的数组,其中成员类型为 struct clk_parent_map,再调用 __clk_core_init() 初始化 common clock framework 内部所用的 struct clk_core
- __clk_core_init() 会
- 调用可选的 init 钩子
- 调用 __clk_init_parent 尝试查找父时钟,如果查找不到则将其作为 orphan 时钟加入一个 orphan 链表(没记错的话 debugfs 的 clk/clk_orphan_summary 绘有个列表)
- 获取时钟速率,或者用父时钟的速率
- 如果这个时钟是 CRITICAL 时钟,就地打开它(enable)
- 使用 clk_core_reparent_orphans_nolock() 来查找孤儿列表,如果谁的家长找到了就把它正确 reparent 过来并从孤儿列表移除
- 当一个时钟控制器注册完自己的所有时钟之后应该调用 of_clk_add_hw_provider() 来结束初始化过程
- 这里又会试着遍历一遍孤儿看看有没有能找到父母的,这合理吗?我猜可能是为了照顾 legacy 的 clock api
研究了一下 common clock framework 的 clock 注册方式,总结下来是
- 目前推荐的注册入口是 clk_hw_register() 系列
- hw 在这里就指一个 clock 硬件
- clock 被分为总体来说三种类型,mux,gate 和 change rate(下文称为 rate),分别有多个 parent 选一个,选择开关,改变孩子的速率三种能力,实际也有驱动在一个 clk_hw 把三种东西杂合起来
- 核心结构体是 struct clk_hw,这个东西会连接到 clock 对应的 struct clk_core(framework 内部使用),公开给外部 clock consumer 看的 struct clk 和描述 clock 实际数据的 struct clk_init_data
- clk_hw 里的 clk_init_data 在 clock 注册过后就会被清掉,这部分数据被认为是仅初始化时使用的
- struct clk_init_data 包括 clock 名字,clock 操作对应的回调函数,一个 flag 和这个 clock 的父母相关的数据
- clock hardware 可以实现的操作以及需要实现这些操作的 clock 类型,包括并不限于
- init: 进行注册时初始化的钩子
- prepare/unprepare: 进行特定初始化和 clean up 的回调,可睡眠
- enable/disable/is_enabled: 如其名,gate 类
- recalc_rate: 查询硬件以重新计算这个时钟的速率,rate 类
- determine_rate/round_rate: 给定一个目标频率,计算出最接近的硬件支持的频率,以及此时的父时钟频率,rate 类需实现其中一个
- set_rate: 实际设置时钟频率,rate 类
- set_parent/get_parent: 如其名,mux 类
- flag 包括
- CLK_IGNORE_UNUSED clock 不被使用时不自动关闭它
- CLK_CRITICAL 不能被关的 clock(你也不想你的 cpu 核没了吧)
- CLK_SET_RATE_GATE, CLK_SET_PARENT_GATE 使得一个 clock 被 prepare 后不能被重设速率/重设父时钟,用于初始化后不能无抖动地更改状态的硬件
- CLK_SET_RATE_PARENT 使得在需要设置频率的场合,请求传播到上一级时钟:比如要给一个 gate 调频就得这么干
rk 那边是把 gate mux 啥的串成一条链
然后我才突然理解了什么是 CLK_SET_RATE_PARENT
积极锻炼无法抵消久坐的不良后果 2024-11-06 02:01 by 机器岛 根据科罗拉多大学和加州河滨分校的一项新研究,成年人每周坐着的时间超过 60 个小时,这可能会增加他们患心脏病的风险,并加速其他衰老迹象的出现。这项研究对 1000 多名年龄在 28 至 49 岁的科罗拉多州居民进行了调查,其中包括 365 对双胞胎。这也是首次探讨久坐如何影响年轻人的胆固醇和体重指数(BMI)等健康指标。研究发现,即使达到了建议的最低体育锻炼标准,每天进行大约 20 分钟的适度运动,也不足以抵消大部分时间都…
2024-11-06 02:01 by 机器岛
根据科罗拉多大学和加州河滨分校的一项新研究,成年人每周坐着的时间超过 60 个小时,这可能会增加他们患心脏病的风险,并加速其他衰老迹象的出现。这项研究对 1000 多名年龄在 28 至 49 岁的科罗拉多州居民进行了调查,其中包括 365 对双胞胎。这也是首次探讨久坐如何影响年轻人的胆固醇和体重指数(BMI)等健康指标。研究发现,即使达到了建议的最低体育锻炼标准,每天进行大约 20 分钟的适度运动,也不足以抵消大部分时间都坐着的危害。研究人员分析了心脏和代谢衰老的两个关键指标:总胆固醇/高密度脂蛋白和体重指数(BMI)。研究发现,一个人坐得越久,看起来就越老。在长时间坐着的基础上增加一点适度的活动,几乎无法缓解这些影响。每天坐 8.5 小时且运动量低于当前建议值的年轻人可能会进入心血管疾病和代谢疾病的“中等至高风险”类别。
https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0308660
https://www.ebiotrade.com/newsf/2024-11/20241105074949732.htm
Don't doas after drink
Last updated 2 years, 8 months ago
Last updated 2 years, 8 months ago
官方网站 https://www.yu444.com
客服频道 @kefu
供求频道 @gongqiu
公群频道 @hwgq (汇旺公群首字母)
新群 @xinqun
核心大群 @daqun
记账机器人 @hwjz
公司介绍 @hwdbgs
担保流程 @dbliucheng
Last updated 1 month, 3 weeks ago