freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

20xxlinux申請端口-資料下載頁

2025-01-17 04:38本頁面
  

【正文】 盤使用0xf008 到0xf00f的子范圍。為了做到這點,設備驅動程序把兩個子范圍對應的孩子插入到從0xf000 到0xf00f的整個范圍對應的資源下。一般來說,樹中的每個節(jié)點肯定相當于父節(jié)點對應范圍的一個子范圍。I/O端口資源樹(ioport_resource)的根節(jié)點跨越了整個I/O地址空間(從端口0到65535)。
任何設備驅動程序都可以使用下面三個函數(shù),傳遞給它們的參數(shù)為資源樹的根節(jié)點和要插入的新資源數(shù)據(jù)結構的地址:
request_resource( ) //把一個給定范圍分配給一個I/O設備。
allocate_resource( ) //在資源樹中尋找一個給定大小和排列方式的可用范圍;若存在,將這個范圍分配給一個I/O設備(主要由PCI設備驅動程序使用,可以使用任意的端口號和主板上的內存地址對其進行配置)。
release_resource( )//釋放以前分配給I/O設備的給定范圍。
內核也為以上函數(shù)定義了一些應用于I/O端口的快捷函數(shù):request_region( )分配I/O端口的給定范圍,release_region( )釋放以前分配給I/O端口的范圍。當前分配給I/O設備的所有I/O地址的樹都可以從/proc/ioports文件中獲得。
內存映射方式
將IO端口映射為內存進行訪問,在設備打開或驅動模塊被加載時,申請IO端口區(qū)域并使用ioport_map()映射到內存,之后使用IO內存的函數(shù)進行端口訪問,最后,在設
備關閉或驅動模塊被卸載時釋放IO端口并釋放映射。
映射函數(shù)的原型為:
void *ioport_map(unsigned long port, unsigned int count)。
通過這個函數(shù),可以把port開始的count個連續(xù)的I/O端口重映射為一段“內存空間”。然后就可以在其返回的地址上像訪問I/O內存一樣訪問這些I/O端口。但請注意,在進行映射前,還必須通過request_region( )分配I/O端口。
當不再需要這種映射時,需要調用下面的函數(shù)來撤消:
void ioport_unmap(void *addr)。
在設備的物理地址被映射到虛擬地址之后,盡管可以直接通過指針訪問這些地址,但是宜使用Linux內核的如下一組函數(shù)來完成訪問I/O內存:讀I/O內存
unsigned int ioread8(void *addr)。
unsigned int ioread16(void *addr)。
unsigned int ioread32(void *addr)。
與上述函數(shù)對應的較早版本的函數(shù)為(這些函數(shù)在Linux ):
unsigned readb(address)。
unsigned readw(address)。
unsigned readl(address)。
寫I/O內存
void iowrite8(u8 value, void *addr)。
void iowrite16(u16 value, void *addr)。
void iowrite32(u32 value, void *addr)。
與上述函數(shù)對應的較早版本的函數(shù)為(這些函數(shù)在Linux ):
void writeb(unsigned value, address)。
void writew(unsigned value, address)。
void writel(unsigned value, address)。
流程如下:
六、Linux下訪問IO內存
IO內存的訪問方法是:首先調用request_mem_region()申請資源,接著將寄存器地址通過ioremap()映射到內核空間的虛擬地址,之后就可以Linux設備訪問編程接口訪問這些寄存器了,訪問完成后,使用ioremap()對申請的虛擬地址進行釋放,并釋放release_mem_region()申請的IO內存資源。
struct resource *requset_mem_region(unsigned long start, unsigned long len,char *name)。
這個函數(shù)從內核申請len個內存地址(在3G~4G之間的虛地址),而這里的start為I/O物理地址,name為設備的名稱。注意。如果分配成功,則返回非NULL,否則,返回NULL。 另外,可以通過/proc/iomem查看系統(tǒng)給各種設備的內存范圍。
17
點擊復制文檔內容
范文總結相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1