Linux 구동 개발 잡기 (0x 02) - Pcidev 구조 체
7101 단어 Linux 드라이버
struct pci_dev {
/* bus_list: pci_dev ,
PCI 。 PCI ,
PCI , PCI pci_bus devices t*/
struct list_head bus_list;
/* bus: PCI PCI pci_bus 。 , ,bus
(primary bus), PCI */
struct pci_bus *bus;
/* subordinate: PCI 。 ,
PCI , NULL*/
struct pci_bus *subordinate;
/* sysdata: */
void *sysdata;
/* procent: PCI /proc */
struct proc_dir_entry *procent;
/* devfn: PCI , PCI (0-255)。 bit[7:3] (
0-31),bit[2:0] ( 0-7)。 */
unsigned int devfn;
/* vendor: 16 , PCI ID*/
unsigned short vendor;
/*device: 16 , PCI ID */
unsigned short device;
/* subsystem_vendor: 16 , PCI ID*/
unsigned short subsystem_vendor;
/* subsystem_device: 16 , PCI ID。*/
unsigned short subsystem_device;
/* class:32 , PCI , ,bit[7:0] ,bit[15:8]
,bit [23:16] ,bit[31:24] 。 ,class 3 PCI
*/
unsigned int class;
/* hdr_type:8 , PCI 。 ,bit[7]=1 ,
bit[7]=0 。Bit[6:0] PCI , 00h
PCI , 01h PCI-to-PCI , 02h CardBus
*/
u8 hdr_type;
/* rom_base_reg:8 , PCI ROM PCI 。
ROM PCI , type 0 ,ROM
30h, PCI-to-PCI type 1 ,ROM
38h*/
u8 rom_base_reg;
/* driver: PCI pci_driver 。 pci
pci_driver 。*/
struct pci_driver *driver;
/*dma_mask: DMA , , 0xffffffff。 dma_addr_t
include/asm/types.h , x86 ,dma_addr_t u32 */
u64 dma_mask;
/* */
pci_power_t current_state;
/* */
struct device dev;
/* irq: PCI IRQ , 0-15 */
unsigned int irq;
/* , :I/O 、 ROM 。*/
struct resource resource[DEVICE_COUNT_RESOURCE];
/* */
int cfg_size;
/* PCI */
unsigned int transparent:1;
/* */
unsigned int multifunction:1;
/* */
unsigned int is_busmaster:1;
/* msi*/
unsigned int no_msi:1;
/* */
unsigned int block_ucfg_access:1;
/* */
u32 saved_config_space[16];
/* sysfs ROM */
struct bin_attribute *rom_attr;
/* rom */
int rom_attr_enabled;
/* sysfs */
struct bin_attribute *res_attr[DEVICE_COUNT_RESOURCE];
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
핸드 핸드 리 눅 스 구동 7 - 커 널 상호 배척 자물쇠신 호 량 은 병렬 처리 환경 에서 여러 개의 프로세서 가 특정한 공공 자원 에 접근 하 는 것 을 보호 하 는 메커니즘 으로 mutex 는 상호 배척 작업 에 사용 된다.신 호 량 의 count 를 1, down ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.