Linux錯誤碼介紹

        來源:嵌入式Linux充電站     時間:2023-06-27 16:29:11


        【資料圖】

        錯誤碼

        在處理一些程序出錯語句中,不管是用戶空間還是內核空間,通常都會返回一個錯誤碼。例如return -ERROR

        這些錯誤碼是Linux內核定義的,它幾乎包括了我們能想到的所有錯誤類型。

        錯誤碼的定義位于:include/uapi/asm-generic/error-base.hinclude/uapi/asm-generic/error.h兩個頭文件中。

        其中error-base.h定義了最常用的一些錯誤,其余的錯誤碼定義在error.h中。

        include/uapi/asm-generic/error-base.h

        include/uapi/asm-generic/error.h

        錯誤碼案例

        例如,返回一個IO錯誤,錯誤碼是EIO

        dev = init(&ptr);if(!dev)return  -EIO

        如果是對系統(tǒng)調用(readwriteioctlmmap等)的錯誤處理,由于系統(tǒng)調用會陷入內核,當內核空間出錯時, 錯誤碼會自動賦值給用戶空間的errno變量,用戶空間調用strerror(errno)可以將錯誤轉為可讀字符串。例如:

        #include < errno.h >/* 訪問errno全局變量 */#include < string.h >...if(write(fd,  buf,  1)< 0) {    printf("something gone wrong!  %s\\n",  strerror(errno));}...

        goto語句

        錯誤碼和goto語句也是經常一起出現(xiàn)的,當遇到錯誤時,除了返回錯誤碼,也 要把之前的所有初始化進行撤銷,此時應該用goto語句,這在驅動的入口函數(shù)中很常見。例如:

        ...ret = reset_control_deassert(phy- >reset);if (ret) goto err_reset;err_reset: clk_disable_unprepare(phy- >hsic_clk); return ret;...

        標簽:

        精彩放送
        亚洲深深色噜噜狠狠爱网站| 亚洲成av人片在www鸭子| 偷自拍亚洲视频在线观看| 亚洲永久在线观看| 亚洲人成片在线观看| 亚洲日韩中文字幕| 亚洲同性男gay网站在线观看| 亚洲综合在线成人一区| 中文字幕亚洲精品资源网| 18亚洲男同志videos网站| 亚洲色成人网一二三区| 国产成人精品亚洲2020| 亚洲日本国产综合高清| 中国亚洲呦女专区| 亚洲精品无码不卡在线播放| 久久久久亚洲精品无码网址色欲 | 亚洲av无码日韩av无码网站冲| 亚洲va中文字幕| 国产精品国产亚洲区艳妇糸列短篇 | 亚洲综合日韩久久成人AV| 在线播放亚洲第一字幕| 在线观看午夜亚洲一区| 亚洲AV无码精品无码麻豆| 久久狠狠高潮亚洲精品| 亚洲伊人色一综合网| 亚洲一区二区三区写真| 日韩成人精品日本亚洲| 亚洲中文字幕丝袜制服一区| 亚洲精品无码成人片久久| 亚洲av女电影网| 亚洲欧洲自拍拍偷午夜色| 波多野结衣亚洲一级| 精品亚洲国产成人av| 国产国拍亚洲精品福利 | 国产亚洲美女精品久久久久狼| 亚洲精品国产精品乱码视色| 久久99国产亚洲精品观看| 久久久久亚洲Av无码专| 亚洲91精品麻豆国产系列在线| 亚洲色成人WWW永久在线观看| 色窝窝亚洲AV网在线观看|