精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

Linux內核pr_xx()函數封裝

麥辣雞腿堡 ? 來源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-09-27 15:58 ? 次閱讀

pr_xx( )封裝

在使用printk的時候需要手動添加輸出等級KERN_INFO、KERN_WARNING等,這樣還是有些麻煩。因此,Linux內核也對printk進行了進一步的封裝。

Linux內核將每一個輸出等級封裝為pr_xx()函數,例如,輸出等級KERN_INFO封裝為pr_info(),輸出等級KERN_WARNING封裝為pr_warn()。具體如下:

#define pr_emerg(fmt, ...) 
 printk(KERN_EMERG pr_fmt(fmt), ##__VA_ARGS__)

#define pr_alert(fmt, ...) 
 printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__)

#define pr_crit(fmt, ...) 
 printk(KERN_CRIT pr_fmt(fmt), ##__VA_ARGS__)

#define pr_err(fmt, ...) 
 printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)

#define pr_warn(fmt, ...) 
 printk(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)

#define pr_notice(fmt, ...) 
 printk(KERN_NOTICE pr_fmt(fmt), ##__VA_ARGS__)

#define pr_info(fmt, ...) 
 printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)

#define pr_err(fmt, ...) 
 printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)

這里對輸出等級為KERN_DEBUG的封裝是比較特殊的,因為debug等級比較常用,內核對pr_debug()分為了三種情況:

如果設置了 CONFIG_DYNAMIC_DEBUG,則此pr_debug()擴展為 dynamic_pr_debug(),主要用于 動態輸出 。否則,如果定義了 DEBUG宏,則它等同于具有 KERN_DEBUG 日志級別的 printk。 如果未定義 DEBUG,則它什么都不做

pr_debug()的定義如下:

/* If you are writing a driver, please use dev_dbg instead */
#if defined(CONFIG_DYNAMIC_DEBUG) || 
 (defined(CONFIG_DYNAMIC_DEBUG_CORE) && defined(DYNAMIC_DEBUG_MODULE))
#include < linux/dynamic_debug.h >

/**
 * pr_debug - Print a debug-level message conditionally
 * @fmt: format string
 * @...: arguments for the format string
 *
 * This macro expands to dynamic_pr_debug() if CONFIG_DYNAMIC_DEBUG is
 * set. Otherwise, if DEBUG is defined, it's equivalent to a printk with
 * KERN_DEBUG loglevel. If DEBUG is not defined it does nothing.
 *
 * It uses pr_fmt() to generate the format string (dynamic_pr_debug() uses
 * pr_fmt() internally).
 */
#define pr_debug(fmt, ...)   
 dynamic_pr_debug(fmt, ##__VA_ARGS__)
#elif defined(DEBUG)
#define pr_debug(fmt, ...) 
 printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
#else
#define pr_debug(fmt, ...) 
 no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
#endif
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內核
    +關注

    關注

    3

    文章

    1363

    瀏覽量

    40228
  • Linux
    +關注

    關注

    87

    文章

    11230

    瀏覽量

    208934
  • 函數
    +關注

    關注

    3

    文章

    4307

    瀏覽量

    62433
收藏 人收藏

    評論

    相關推薦

    Linux內核中斷設計與實現

    裸機編程中使用中斷比較麻煩,需要配置寄存器、使能IRQ等等。而在Linux驅動編程中,內核提供了完善的終端框架,只需要申請中斷,然后注冊中斷處理函數即可,使用非常方便。
    發表于 07-29 08:57 ?774次閱讀

    Linux內核學習筆記:printk調試

    很多內核開發者喜歡的調試工具是printk,在Linux內核中,使用printk()函數來打印信息,它與C庫的printf()函數類似。
    發表于 06-01 15:14 ?1103次閱讀

    Linux內核教程

    本章學習目標掌握LINUX內核版本的含義理解并掌握進程的概念掌握管道的概念及實現了解內核的數據結構了解LINUX內核的算法掌握
    發表于 04-10 16:59 ?0次下載

    Linux內核源代碼

    Linux內核源代碼本章講述在L i n u x內核源碼中,應該從何處開始查找特定的內核函數。本書并不要求讀者具有C語言編程能力,也不要求讀
    發表于 02-09 15:24 ?36次下載

    linux內核kernel-api

    linux內核kernel-api,不知道從哪兒找的了,但是你如果想要做內核編程,這是一部api函數詳盡的工具書!!!五星推薦
    發表于 10-30 17:16 ?19次下載

    基于Android的Linux內核的電源管理

    Early Suspend和Late Resume是Android在標準Linux的基礎上增加的一項特性。當用戶空間的向內核請求進入suspend時,這時候會先進入early suspend狀態,驅動程序可以注冊early suspend的回調
    發表于 04-24 13:47 ?1063次閱讀
    基于Android的<b class='flag-5'>Linux</b><b class='flag-5'>內核</b>的電源管理

    linux內核是什么_linux內核學習路線

    Linux內核是一個操作系統(OS)內核,本質上定義為類Unix。它用于不同的操作系統,主要是以不同的Linux發行版的形式。Linux
    發表于 09-16 15:49 ?2615次閱讀

    linux內核參數設置_linux內核的功能有哪些

    本文主要闡述了linux內核參數設置及linux內核的功能。
    發表于 09-17 14:40 ?1363次閱讀
    <b class='flag-5'>linux</b><b class='flag-5'>內核</b>參數設置_<b class='flag-5'>linux</b><b class='flag-5'>內核</b>的功能有哪些

    快速理解什么是Linux內核以及Linux內核的內容

    01 前言 本文主要講解什么是Linux內核,以及通過多張圖片展示Linux內核的作用與功能,以便于讀者能快速理解什么是Linux
    的頭像 發表于 10-21 12:02 ?4259次閱讀
    快速理解什么是<b class='flag-5'>Linux</b><b class='flag-5'>內核</b>以及<b class='flag-5'>Linux</b><b class='flag-5'>內核</b>的內容

    Linux內核GPIO操作函數的詳解分析

    本文檔的主要內容詳細介紹的是Linux內核GPIO操作函數的詳解分析免費下載。
    發表于 01-22 16:58 ?28次下載

    Linux內核熱補丁安全隱患的探索

    Linux 內核熱補丁可以修復正在運行的 linux 內核,是一種維持線上穩定性不可缺少的措施,現在比較常見的比如 kpatch 和 livepatch。
    的頭像 發表于 10-11 11:54 ?1712次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b>熱補丁安全隱患的探索

    linux內核中do_initcalls函數的執行邏輯分析

    linux內核啟動過程中,會向終端打印出很多的日志信息,從這些信息中可以得到許多內核的行為。
    的頭像 發表于 01-13 09:20 ?1142次閱讀

    Linux內核模塊參數傳遞與sysfs文件系統

    Linux應用開發中,為使應用程序更加靈活地執行用戶的預期功能,我們有時候會通過命令行傳遞一些參數到main函數中,使得代碼邏輯可以依據參數執行不同的任務。同樣,Linux內核也提供了
    發表于 06-07 16:23 ?2082次閱讀

    萬千設備,linux內核如何知道?

    linux內核設備的注冊由device_register()函數完成,這個函數linux設備驅動模型的核心
    的頭像 發表于 07-12 08:52 ?805次閱讀
    萬千設備,<b class='flag-5'>linux</b><b class='flag-5'>內核</b>如何知道?

    Linux內核如何使用結構體和函數指針?

    我將結合具體的Linux內核驅動框架代碼來展示Linux內核如何使用結構體和函數指針。
    的頭像 發表于 09-06 14:17 ?995次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b>如何使用結構體和<b class='flag-5'>函數</b>指針?