outb,inb等I Oport操作函式

2021-09-08 12:48:18 字數 1218 閱讀 2384

功能

如 i386 。在差別 i/o 空間和記憶體空間的程序的 i/o 空間寫入資料。

原型

引用

#include

voidoutb (unsigned

chardata

,unsigned

shortport);

voidoutw (unsigned

shortdata

,unsigned

shortport);

voidoutl (unsigned

longdata

,unsigned

shortport);

變數

在linux的驅動程式中,都會使用大量的outb、outw、inb、inw等等巨集來訪問硬體或暫存器。

這些巨集的定義都在對應處理器體系下的include/asm資料夾下的io.h中定義。追究下去。這些巨集終於就是乙個volatile變數的的賦值:

#define __arch_putb(v,a)      (*(volatile unsigned char *)(a) = (v))

#define __raw_writeb(v,a)     __arch_putb(v,a)

#define outb(v,p)                 __raw_writeb(v,__io(p))

在(*(volatile unsigned char *)(a) = (v))中,a是乙個實體地址(實位址,多數是特殊功能暫存器位址)。

(volatile unsigned char *)對a進行型別轉換,成為乙個指向該位址指標,最後*(volatile unsigned char *)(a)引用該指針對該位址賦值v。這樣就能夠達到訪問底層硬體的目的了。

當讀入資料時使用in(x),類似inb、inw、inl,引數與out(x)函式一致。

in、out都是對i/oport進行操作。ioreadb、iowriteb等是對i/o記憶體操作。

(詳見部落格

Python連線mysql資料庫等常用操作

一 安裝pymysql模組 pip3 install pymysql 注 如果報錯,執行python m pip install upgrade pip 更新下pip版本 二 連線mysql等常用操作 增 刪 改 查 import pymysql 建立鏈結 conn pymysql.connect ...

MySQL基礎一 MYSQL啟動和開啟等操作

終端下的命令 1.啟動mysql net start mysql 2.關閉mysql net stop mysql 3.清屏 cls4.檢視當前mysql版本 mysql v 需要先進入mysql的bin目錄下,才可以 5.進入mysql命令 mysql u使用者名稱 預設為root p密碼 如果是...

SVN2 鉤子(自動執行UPDATE更新等操作)

鉤子就是由版本庫的事件 提交,屬性修改等 觸發的程式 shell 指令碼等 每乙個 svn 倉庫下都有乙個目錄hooks,在這裡面放所有的鉤子程式。其中以.tmpl結尾的代表是模板,可以用來參考。ls hooks post commit tmpl pre revprop change tmpl po...