在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

wakeup events framework三大功能介紹

麥辣雞腿堡 ? 來源:嵌入式Linux系統開發 ? 作者:蝸窩科技 ? 2023-09-11 16:21 ? 次閱讀

wakeup events framework 就包括 3 大功能:

1. 解決內核空間同步問題(framework 的核心功能)

2. 解決用戶空間同步問題的情景1(wakeup count 功能)

3. 解決用戶空間同步問題的情景2(wake lock 功能)

wakeup events framework architecture

wakeup count 的功能

wakeup count 的功能是 suspend 同步,實現思路是這樣的:

1)任何想發起電源狀態切換的實體(可以是用戶空間電源管理進程,也可以是內核線程,簡稱 C),在發起狀態切換前,讀取系統的 wakeup counts(該值記錄了當前的 wakeup event 總數),并將讀取的 counts 告知 wakeup events framework。

2)wakeup events framework 記錄該 counts 到一個全局變量中(saved_count)。

3)隨后 C 發起電源狀態切換(如 STR),執行 suspend 過程。

4)在 suspend 的過程中,wakeup events framework 照舊工作(直到系統中斷被關閉),上報 wakeup events,增加 wakeup events counts。

5)suspend 執行的一些時間點,會調用 wakeup events framework 提供的接口(pm_wakeup_pending),檢查是否有 wakeup 沒有處理。

6)檢查邏輯很簡單,就是比較當前的 wakeup counts 和 saved wakeup counts(C 發起電源狀態切換時的 counts),如果不同,就要終止 suspend 過程。

wakelocks

wakelocks 是一個有故事的功能。

wakelocks 最初出現在 Androidlinux kernel 打的一個補丁集上,該補丁集實現了一個名稱為“wakelocks”的系統調用,該系統調用允許調用者阻止系統進入低功耗模式(如 idle、suspend 等)。同時,該補丁集更改了 Linux kernel 原生的電源管理執行過程(/kernel/power/main.c 中的 state_show 和 state_store),轉而執行自定義的 state_show、state_store。

這種做法是相當不規范的,它是典型的只求實現功能,不擇手段。就像國內很多的 Linux 開發團隊,要實現某個功能,都不去弄清楚 kernel 現有的機制、框架,牛逼哄哄的猛干一番。最后功能是實現了,可都不知道重復造了多少輪子,浪費了多少資源。

kernel 的開發者是有原則的,不讓這種機制合并到 kernel 分支,直到 kernel 自身的 wakeup events framework 成熟后,這種僵局才被打破。因為 Android 開發者想到了一個壞點子:不讓合并就不讓合并唄,我用你的機制(wakeup source),再實現一個就是了。至此,全新的 wakelocks 出現了。

所以 wakelocks 有兩個,早期 Android 版本的 wakelocks 幾乎已經銷聲匿跡了。本文關注在新的 wakelocks 上(/kernel/power/wakelock.c)

Android wakelocks

但是,我們還是提一下 Android wakelocks 的功能,這樣才能知道 kernel wakelocks 要做什么。Android wakelocks 提供的功能包括:

1)一個 sysfs 文件:/sys/power/wake_lock,用戶程序向文件寫入一個字符串,即可創建一個 wakelock,該字符串就是 wakelock 的名字。該 wakelock 可以阻止系統進入低功耗模式。

2)一個 sysfs 文件:/sys/power/wake_unlock,用戶程序向文件寫入相同的字符串,即可注銷一個 wakelock。

3)當系統中所有的 wakelock 都注銷后,系統可以自動進入低功耗狀態。

4)向內核其它 driver 也提供了 wakelock 的創建和注銷接口,允許 driver 創建 wakelock 以阻止睡眠、注銷 wakelock 以允許睡眠。

Kernel wakelocks

1)允許 driver 創建 wakelock 以阻止睡眠、注銷 wakelock 以允許睡眠:已經由 wakeup source 取代。

2)當系統中所有的 wakelock 都注銷后,系統可以自動進入低功耗狀態:由 autosleep 實現。

3)wake_lock 和 wake_unlock 功能:就是將 wakeup source 開發到用戶空間訪問。

autosleep 的功能很直白,“系統沒有事情在做”的時候,就將系統切換到低功耗狀態。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5093

    文章

    19178

    瀏覽量

    307703
  • Android
    +關注

    關注

    12

    文章

    3945

    瀏覽量

    127944
  • 接口
    +關注

    關注

    33

    文章

    8694

    瀏覽量

    151925
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210403
收藏 人收藏

    評論

    相關推薦

    .Net Micro Framework 快速入門

    Framework研究—串口部署釋疑26、.Net Micro Framework研究—FAT文件系統實現探索 、系統移植1、【.Net Micro Framework Porti
    發表于 05-29 10:56

    sushu---Actor Framework基本介紹

    一練]Actor Framework框架(1125-1201)2016-02-28 20:15:20新寫的一篇帖子:sushu---Actor Framework一種使用方式主貼里面循序漸進的介紹了一些信息。現在
    發表于 01-03 20:05

    示波器的大功能是哪些? 它們是怎樣組合在一起的?

    示波器的大功能是哪些?示波器的大功能是怎樣組合在一起的?
    發表于 05-08 08:06

    stm32的引腳wakeup有什么作用

    stm32的引腳wakeup有什么作用?喚醒MCU,比如當MCU在低功耗狀態下或者休眠之類的狀態下,通過引腳的Wakeup功能可以將MCU喚醒,讓MCU進入正常的工作狀態。低功耗模式、休眠模式
    發表于 08-16 08:15

    .NET Micro Framework開發板介紹

    哪些領域可以采用.NET Micro Framework技術?NET Micro Framework與Window CE和Windows XP Embedded的區別在哪?
    發表于 10-11 08:31

    .NET Framework 高級編程

    .NET Framework 高級編程詳細講述了.NET Framework,是一本極具參考價值的.NET Framework編程大全。本書從.NET Framework最基本的概念到
    發表于 01-08 11:04 ?40次下載
    .NET <b class='flag-5'>Framework</b> 高級編程

    基于Microsoft .NET Framework的OPC

    介紹了OPC (OLE for Process Control) Data Access 規范基本內容Microsoft .NetFramework 特點。基于Microsoft .Net Framework 2.0 介紹了托管
    發表于 05-25 13:57 ?22次下載

    Meter Design for Power Failure Events

    and polyphase residential energy-metering SoCs that cope with sag and power-failure events. The sample code discussed in this application note was w
    發表于 02-06 10:42 ?23次下載

    Linux電源管理總體框架及實現原理

    suspend過程中,有可能會發生wakeup events,所以某些時間點,會調用接口(pm_wakeup_pending),檢查是否有wakeup需要處理
    發表于 09-14 17:00 ?4737次閱讀
    Linux電源管理總體框架及實現原理

    專題分綱目錄 Android Framework 電源子系統

    專題分綱目錄 均為索引,本綱為:Android Framework 電源子系統 系列文章目錄Android Framework 電源子系統(01)PowerManagerService啟動分析
    發表于 01-11 12:07 ?0次下載
    專題分綱目錄 Android <b class='flag-5'>Framework</b> 電源子系統

    Android Framework 電源子系統(06)電池管理

    系列文章解讀&說明:Android Framework 電源子系統 的分析主要分為以下部分:Android Framework 電源子系統(01)PowerManagerService啟動
    發表于 01-11 14:58 ?1次下載
    Android <b class='flag-5'>Framework</b> 電源子系統(06)電池管理

    Events(事件)概述、配置及使用方法

    在《RTA-OS系列介紹-Task》部分我們介紹了任務分為基礎任務與擴展任務,兩者的主要區別為,擴展任務多了waiting狀態,那Waiting狀態等待的是什么呢?其實就是我們今天要介紹
    的頭像 發表于 01-12 10:27 ?6159次閱讀

    SystemVerilog里的regions以及events的調度

    本文講一下SystemVerilog的time slot里的regions以及events的調度。SystemVerilog語言是根據離散事件執行模型定義的,由events驅動。
    的頭像 發表于 07-12 11:20 ?1705次閱讀
    SystemVerilog里的regions以及<b class='flag-5'>events</b>的調度

    Wakeup events framework同步問題

    Wakeup events framework 系統處于 suspend 狀態,可通過 wakeup events 喚醒。具體的
    的頭像 發表于 09-11 16:17 ?535次閱讀

    framework框架流程 模塊綁定

    framework框架負責固件的通用流程實現,包括系統初始化,module初始化,中斷服務提供,event服務提供等。這樣module就可以專注于自己功能和對外交互api的實現。SCP
    的頭像 發表于 11-02 17:24 ?765次閱讀
    <b class='flag-5'>framework</b>框架流程 模塊綁定
    主站蜘蛛池模板: 666夜色666夜色国产免费看 | 美女大黄三级视频在线观看 | 8050网午夜一级毛片免费不卡 | 亚洲卡5卡6卡7国色天香 | 久久精品国产清自在天天线 | 日一日操一操 | 日本成人a视频 | 国内精品久久久久久影院老狼 | 欧美.亚洲.日本一区二区三区 | 天天弄天天干 | 国产午夜精品理论片久久影视 | 久久e热| 国产亚洲美女 | 天天干天天做 | 国产日韩欧美综合色视频在线 | 2021国产精品成人免费视频 | 手机在线完整视频免费观看 | 色丁香久久 | 瑟瑟久久| 天天草夜夜 | 开心激情五月婷婷 | 欧美一区二区三区精品 | 国产成人免费无庶挡视频 | 日本.www| 久久国产中文字幕 | 456成人网| 日本www色视频成人免费网站 | 狠狠色丁香婷婷综合橹不卡 | 人人草人人插 | 婷婷爱五月| 91福利社在线观看 | 人人做人人爽人人爱秋霞影视 | 大喷水吹潮magnet | 尤物视频黄 | 欧美在线精品一区二区三区 | 国产婷婷色一区二区三区深爱网 | 夜夜爽天天狠狠九月婷婷 | 五月天婷婷在线播放 | 日韩毛片网| 免费观看在线aa | 精品看片 |