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

正文內容

linux下pci設備驅動程序開發(fā)(存儲版)

2025-09-03 09:47上一頁面

下一頁面
  

【正文】 */}/* 中斷處理模塊 */static void demo_interrupt(int irq, void *dev_id, struct pt_regs *regs){ /* ... */}/* 設備文件操作接口 */static struct file_operations demo_fops = { owner: THIS_MODULE, /* demo_fops所屬的設備模塊 */ read: demo_read, /* 讀設備操作*/ write: demo_write, /* 寫設備操作*/ ioctl: demo_ioctl, /* 控制設備操作*/ mmap: demo_mmap, /* 內存重映射操作*/ open: demo_open, /* 打開設備操作*/ release: demo_release /* 釋放設備操作*/ /* ... */}。構造出這樣一個框架之后,接下去的工作就是如何完成框架內的各個功能模塊了。demo_pci_driver)) { pci_unregister_driver(amp。 /* 設備DMA標識 */ if (pci_set_dma_mask(pci_dev, DEMO_DMA_MASK)) { return ENODEV。 cardnext = devs。demo_interrupt, SA_SHIRQ, card_names[pci_iddriver_data], card)) { /* 檢查讀寫模式 */ if(filef_mode amp。 return EBUSY。 /* 將讀取的數(shù)據(jù)傳輸?shù)接脩艨臻g */ return 0。 spin_lock(amp。 INT_MASK, cardiobase + GLOB_STA)。cardopen_sem)。本文介紹如何編譯Linux下的PCI驅動程序。 Tomshanley,DonAderson,PCI系統(tǒng)結構(第四版),北京:電子工業(yè)出版社,2000關于作者肖文鵬,北京理工大學計算機系的一名碩士研究生,主要從事操作系統(tǒng)和分布式計算環(huán)境的研究,喜愛Linux和Python。 毛德操,胡希明,Linux內核源代碼情景分析,杭州:浙江大學出版社,2001而Linux作為一種新的操作系統(tǒng),其發(fā)展前景是無法估量的,同時也為PCI總線與各種新型設備互連成為可能。cardopen_wait)。 return。 static void demo_interrupt(int irq, void *dev_id, struct pt_regs *regs){ struct demo_card *card = (struct demo_card *)dev_id。 /* ... */ } }}5. 數(shù)據(jù)讀寫和控制信息模塊PCI設備驅動程序可以通過demo_fops 結構中的函數(shù)demo_ioctl( ),向應用程序提供對硬件進行控制的接口。 O_NONBLOCK) { /* NONBLOCK模式,返回EBUSY */ up(amp。在申請控制權的時候,非阻塞方式遇忙返回,否則進程主動接受調度,進入睡眠狀態(tài),等待其它進程釋放對設備的控制權。 cardpci_id = pci_iddevice。 static int __init demo_probe(struct pci_dev *pci_dev, const struct pci_device_id *pci_id){ struct demo_card *card。 當Linux內核啟動并完成對所有PCI設備進行掃描、登錄和分配資源等初始化操作的同時,會建立起系統(tǒng)中所有PCI設備的拓撲結構,此后當PCI驅動程序需要對設備進行初始化時,一般都會調用如下的代碼: static int __init demo_init_module (void){ /* 檢查系統(tǒng)是否支持PCI總線 */ if (!pci_present()) return ENODEV。上面這段代碼給出了一個典型的PCI設備驅動程序的框架,是一種相對固定的模式。/* 對特定PCI設備進行描述的數(shù)據(jù)結構 */struct demo_card { unsigned int magic。 unsigned short regs。 unsigned int irq。 u8 hdr_type。 void *sysdata。 int (*resume) (struct pci_dev *dev)。 在PCI驅動程序中,下面幾個關鍵數(shù)據(jù)結構起著非常核心的作用: 在大部分驅動程序中,open( )通常需要完成下列工作: 1. 檢查設備相關錯誤,如設備尚未準備好等。當不需要該模塊時,可以使用rmmod命令進行卸載,此進內核會調用模塊中的函數(shù)cleanup_module( )。}。 int (*release) (struct inode *, struct file *)。 ssize_t (*read) (struct file *, char *, size_t, loff_t *)。塊設備主要是針對磁盤等慢速設備設計的,其目的是避免耗費過多的CPU時間來等待操作的完成。設備驅動程序向應用程序屏蔽了硬件在實現(xiàn)上的細節(jié),使得應用程序可以像操作普通文件一樣來操作外部設備。 圖2是一個典型的基于PCI總線的計算機系統(tǒng)邏輯示意圖,系統(tǒng)的各個部分通過PCI總線和PCIPCI橋連接在一起。同舊式的ISA總線不同,PCI將計算機系統(tǒng)中的總線子系統(tǒng)與存儲子系統(tǒng)完全地分開,CPU通過一塊稱為PCI橋(PCIBridge)的設備來完成同總線子系統(tǒng)的交互,如圖1所示。PCI是一種廣泛采用的總線標準,它提供了許多優(yōu)于其它總線標準(如EISA)的新特性,目前已經(jīng)成為計算機系統(tǒng)中應用最為廣泛,并且最為通用的總線標準。盡管目前PCI設備大多采用32位數(shù)據(jù)總線,但PCI規(guī)范中已經(jīng)給出了64位的擴展實現(xiàn),從而使PCI總線
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1