綜合能力訓練:在樹莓派上動手寫一個小OS(4):實驗16-3:實現printk函式
本文節選自《實驗指導手冊》第二版第16.5章
實驗指導手冊是奔跑吧Linux核心入門篇第二版配套實驗書,pdf版本已經release,可以免費下載和自由列印!
下載方法:
登陸“奔跑吧linux社群”微信公眾號,輸入“奔跑吧2”獲取下載地址。
本文是《奔跑吧Linux核心 入門篇》第16章中的實驗16-3:實現printk列印函式。前面的實驗,我們直接使用串列埠函式來列印,非常不方便。我們在實現BenOS其他功能之前,還需要需要實現一個簡單好用的列印函式,這樣我們可以通過串列埠來列印需要的資料型別,方便我們後面的除錯工作。
1.實驗目的
瞭解printk()函式的實現。
2.實驗要求
我們在實驗16-1中實現了串列埠輸出,本實驗將實現printk()函式以格式化輸出。
3.實驗詳解
本實驗的主要目的是實現printk列印函式。
參考程式碼在lib/printk.c檔案裡,讀者可以自行實現。
Printk函式類似C語言的printf函式,需要實現如下方面的格式要求。
首先看一下,printf是在標頭檔案stdio.h中宣告的:
int printk(
const char *format, … );
第一個引數就是輸出格式,這是一個字串,裡面可以用%的形式表示一個佔位符,這個%處的內容會被後面的引數替換。
%佔位符的格式是這樣的 方括號裡的[]表示可選
%[flags][width][.prec][hlL]type
(1) 格式字元type
Printk函式應該支援如下這些格式字元。
格式字元 含義
-
i或者d 輸出有符號的十進位制整數
-
u 輸出無符號的十進位制整數
-
x/x 輸出十六進位制數
-
o 輸出八進位制數
-
p 輸出指標型別
-
c 輸出一個字元
-
s 輸出一個字串
(2) 控制符flags
控制符 含義
-
- 實現被顯示資料的左對齊
-
+ 顯示數字的正負號
-
# 當格式字元是 o、x、X 時,增加字首0x
-
0 使用零 填充欄位寬度
(3) 域寬width與精度prec
width指明瞭輸出的寬度,prec表示小數點位數。
另外,這裡的字元數width可以用*,表示用下一個引數作為寬度。
例如
printf(“%*d”,
6,
12)
是用6當做輸出寬度,相當於:
printf(“%
6d”,
12);
(4) 修飾型別
這裡表示修飾變數的型別。
修飾型別 含義
-
hh 單個位元組
-
h short
-
l long
-
ll long long
為了檢驗printk函式的列印效果,我們希望讀者能列印BenOS的映象檔案中各個段的起始地址、結束地址和大小等資訊。
另外,我們也可以做其他一些測試。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70005277/viewspace-2872526/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 綜合能力訓練:在樹莓派上動手寫一個小OS(6):實驗16-5:程式建立實驗樹莓派
- 綜合能力訓練:在樹莓派上動手寫一個小OS(2):實驗16-1:輸出welcome benos樹莓派
- 樹莓派上利用Tensorflow實現小車的自動駕駛樹莓派自動駕駛
- 在樹莓派上安裝 Ubuntu MATE樹莓派Ubuntu
- 在樹莓派上執行 DOS 系統樹莓派
- 樹莓派 - 實戰篇 [基於 websocket 實現手機遠端控制樹莓派小車]樹莓派Web
- 在樹莓派上搭建智慧家居閘道器樹莓派
- OpenYurt 入門 - 在樹莓派上玩轉 OpenYurt樹莓派
- 綜合實驗
- 實現call函式,手寫Function.prototype.call函式函式Function
- OSPF 綜合實驗
- OSPF綜合實驗
- BGP綜合實驗
- 關於在windows,ubuntu,樹莓派上安裝使用opencvWindowsUbuntu樹莓派OpenCV
- 樹莓派使用入門:在樹莓派上使用 Mathematica 進行高階數學運算樹莓派
- 在樹莓派上部署yolo模型推理並使用onnx加速樹莓派YOLO模型
- 綜合實訓週報八
- 物件導向綜合訓練物件
- 手寫一個bind函式(大概)函式
- Go 實現字串首字母大、小寫函式Go字串函式
- 動手實現一個localcache - 實現篇
- 使用 Ansible 在樹莓派上構建一個基於 Linux 的高效能運算系統樹莓派Linux
- 在樹莓派上安裝c++版本的opencv並執行樹莓派C++OpenCV
- 在樹莓派上開發SpringBoot 之使用VSCode遠端開發樹莓派Spring BootVSCode
- 在樹莓派上設定家庭網路的家長控制功能樹莓派
- [手寫系列] Spirit帶你實現防抖函式和節流函式函式
- 靜態路由綜合實驗路由
- 計算機網路實驗三 綜合性訓練(搭建中小企業園區網)計算機網路
- 如何自己動手實現一個圖片解答小助手
- 計算機實驗室之樹莓派計算機樹莓派
- 動手實現一個 LRU cache
- 面試題,實現一個求和函式面試題函式
- 一個 Pillow 實現的影像填充函式函式
- 一個 Pillow 實現的影象填充函式函式
- 小程式實現手寫簽名
- 綜合實驗,策略路由(BFD,NAT)路由
- 靜態路由及綜合實驗路由
- 計算機實驗室之樹莓派:課程 4 OK04計算機樹莓派