色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

用戶空間接口是什么

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

/sys/power/state

state 是 sysfs 中一個文件,為 Generic PM
的核心接口,在“kernel/power/main.c”中實現,用于將系統置于指定的 Power State。

讀取該文件,返回當前系統支持的 Power State,形式為字符串。在內核中,有兩種類型的 Power
State,一種是 Hibernate
相關的,名稱為“disk”,除“disk”之外,內核在"/kernel/power/suspend.c"中通過數組的形式定義了另外 3 個
state,如下:

const char *const pm_states[PM_SUSPEND_MAX] = {
    [PM_SUSPEND_FREEZE]     = "freeze",
    [PM_SUSPEND_STANDBY]    = "standby",
    [PM_SUSPEND_MEM]        = "mem",
};

這些 Power State 的解釋如下:

  1. freeze:不涉及具體的
    Hardware 或 Driver,只是凍結所有的進程,包括用戶空間進程及內核線程
  2. standby
  3. mem,即通常所講的 Sleep
    功能,STR,Suspend to RAM
  4. disk,即
    Hibernate 功能,STD,Suspend to Disk。

寫入特定的 Power State 字符串,將會把系統置為該模式。

/sys/power/wakeup_count

該接口只和 Sleep 功能有關,因此由“CONFIG_PM_SLEEP”宏定義控制。它的存在,是為了解決
Sleep 和 Wakeup 之間的同步問題。

系統睡眠后,可以通過保留的 Wakeup source 喚醒系統。而在 CPU 體系中,喚醒系統就是喚醒
CPU,而喚醒 CPU 的唯一途徑,就是 Wakeup source 產生中斷(內核稱作 Wakeup event)。而內核要保證在多種狀態下,Sleep/Wakeup
的行為都能正常,如下:

▆ 系統處于 sleep 狀態時,產生了 Wakeup event。此時應該直接喚醒系統。這沒有問題。

▆ 系統在進入 sleep 的過程中,產生了
Wakeup event。此時應該放棄進入 sleep。

這一點就不那么容易做到了。例如,當 Wakeup event
發生在“/sys/power/state”被寫之后、內核執行 freeze 操作之前。此時用戶空間程序依舊可以處理 Wakeup
event,或者只是部分處理。而內核卻以為該 Event 已經被處理,因此并不會放棄此次 sleep 動作。

這就會造成,Wakeup event 發生后,用戶空間程序已經后悔了,不想睡了,但最終還是睡下去了。直到下一個
Wakeup event 到來。

為了解決上面的問題,內核提供 wakeup_count 機制,配合“/sys/power/state”,以實現
Sleep 過程中的同步。該機制的操作行為如下:

▆ wakeup_count 是內核用來保存當前
wakeup event 發生的計數。

▆ 用戶空間程序在寫入
state 切換狀態之前,應先讀取 wakeup_count 并把獲得的 count 寫回給 wakeup_count。

▆ 內核會比對寫回的 count 和當前的 count 是否一致,如果不一致,說明在讀取/寫回操作之間,產生了新的的
wakeup event,內核就會返回錯誤。

▆ 用戶空間程序檢測到寫入錯誤之后,不能繼續后的動作,需要處理響應的 event 并伺機再次讀取/寫回
wakeup_count。

▆ 如果內核比對一致,會記錄 write wakeup_count 成功時的 event 快照,后面繼續
suspend 動作時,會檢查是否和快照相符,如果不符,會終止 suspend。

▆ 用戶空間程序檢測到寫入正確后,可以繼續對 state 的寫入,以便發起一次狀態切換。而此時是安全的。

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

    關注

    5085

    文章

    19138

    瀏覽量

    305682
  • 接口
    +關注

    關注

    33

    文章

    8612

    瀏覽量

    151292
  • Linux
    +關注

    關注

    87

    文章

    11312

    瀏覽量

    209696
收藏 人收藏

    評論

    相關推薦

    Linux用戶空間與內核空間的區別?

    為的分為兩個部分--用戶空間與內核空間。用戶空間地址分布從0到3GB(PAGE_OFFSET,在0x86中它等于0xC0000000),3G
    發表于 06-05 04:35

    什么是板間接口信號?

    什么是板間接口信號?什么是星-點接地?
    發表于 04-09 06:18

    USB接口怎么實現間接的數據讀寫?

    利用FTDI公司的FT232AM完成RS232和USB之間的接口轉換,然后再對USB接口實現間接的數據讀寫。
    發表于 04-26 06:41

    用戶空間與內核通信方式是什么

    用戶空間與內核通信方式有哪些?系統調用,提供特定的用戶空間與內核空間的信息傳遞。信號,內核空間
    發表于 12-20 08:06

    用戶空間如何訪問內核空間?

    訪問。嵌入式Linux:C開發“會看使用說明書”用戶空間不能隨便訪問內核空間3、用戶空間如何訪問內核空間
    發表于 12-27 06:15

    TD-SCDMA RTT的空間接口技術綜述

    TD-SCDMA RTT的空間接口技術綜述:
    發表于 05-21 13:22 ?20次下載
    TD-SCDMA RTT的<b class='flag-5'>空間接口</b>技術綜述

    空間數據插件技術研究

    利用數據庫技術來管理海量的空間數據,有兩種方法:一種是在數據庫和用戶應用系統間建立中間層,稱為空間數據引擎SDE,利用SDE作為中間接口使數據庫操作系統能存儲和管理空
    發表于 08-07 09:56 ?9次下載

    過程計算系統和技術過程之間接口的說明 GB12058-89

    過程計算系統和技術 過程之間接口的說明 GB12058-89 本標準是供所有從事過程接口設計、生產、銷售以及應用方面人員使用的規范。包含了這些接口規范所需要的
    發表于 04-30 11:56 ?11次下載

    用戶接口電路

    用戶接口電路是完成用戶交換機和模擬用戶中繼線之間接口功能的部件。
    發表于 05-27 09:43 ?37次下載

    模塊間接口設計不匹配問題

    模塊間接口設計不匹配引起的問題   如果沒有一個技術能力很強的集成者,往往在模塊間容易出現設計上的錯誤。這種情況是災難性的,雙方都是在
    發表于 11-21 14:01 ?726次閱讀

    用戶空間和內核空間通訊-Netlink 上

    Alan Cox在內核1.3版本的開發階段最先引入了Netlink,剛開始時Netlink是以字符驅動接口的方式提供內核與用戶空間的雙向數據通信;
    發表于 04-29 15:32 ?590次閱讀

    需要了解linux內核空間用戶空間的基本原理

    linux驅動程序一般工作在內核空間,但也可以工作在用戶空間。下面我們將詳細解析,什么是內核空間,什么是用戶
    發表于 05-06 16:13 ?738次閱讀

    Linux用戶空間與內核空間

    應用程序運行在用戶空間,而Linux 驅動屬于內核的一部分,因此驅動運行于內核空間。當我們在用戶空間想要實現對內核的操作,比如使用open
    發表于 05-20 10:58 ?1037次閱讀
    Linux<b class='flag-5'>用戶</b><b class='flag-5'>空間</b>與內核<b class='flag-5'>空間</b>

    什么是futex?Futex用戶和內核空間接口API是什么?

    編者按:對于Linux系統編程來說,競爭和同步是繞不開的話題。之前分享過Java的對象鎖,有讀者說自己不做Java不太能理解,這次分享Linux中很基礎的同步機制:futex,內容包括基本接口定義和對于優先級反轉的處理,希望對大家的技術成長有幫助。
    的頭像 發表于 05-20 16:56 ?4285次閱讀
    什么是futex?Futex<b class='flag-5'>用戶</b>和內核<b class='flag-5'>空間接口</b>API是什么?

    Suspend是什么意思 過程概述

    Suspend 功能 源碼目錄 1)PM Core /kernel/ power /main.c ---- 提供用戶空間接口(/ sys /power/ state) /kernel/ power
    的頭像 發表于 09-11 16:08 ?728次閱讀
    Suspend是什么意思 過程概述
    主站蜘蛛池模板: 女性BBWBBWBBWBBW| 国产午夜久久影院| 精品国产乱码久久久久乱码| 夜色福利院在线观看免费| 老师的蕾丝小内内湿透了| 精品国产乱码久久久久久夜深人妻 | 精品国产品国语在线不卡| 国产人妻人伦精品1国产| 动漫女主被扒开双腿羞辱| 亚洲高清在线mv| 轻点慢点1V2啊高H抽插| 花蝴蝶免费观看影视| 澳大利亚剧满足在线观看| aaaaaaa一级毛片| china野外18:19| 99视频在线国产| 99热国产这里只有精品6| 91桃色污无限免费看| 亚洲薄码区| 亚洲aaaa级特黄毛片| 秋霞成人午夜鲁丝一区二区三区| 美国色情三级欧美三级纸匠情挑| 理论片87福利理论电影| 免费三级网址| 久久精品观看影院2828| 国产剧情在线精品视频不卡| 国产精品无码麻豆放荡AV| 国产亚洲国际精品福利| 精品第一国产综合精品蜜芽| 精品国产国偷自产在线观看| 久久AV无码AV高潮AV不卡| 国产人妻人伦精品836700| 国产最新精品亚洲2021不卡| 久久超碰色中文字幕| 伦理片在线线手机版韩国免费6| 免费夜里18款禁用软粉色| 日本熟妇乱妇熟色A片蜜桃| 無码一区中文字幕少妇熟女H| 亚洲精品理论电影在线观看| 午夜电影三级还珠格格| 亚洲va在线va天堂XX xX|