⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pci_powerpc.c

📁 原名叫avifile
💻 C
字号:
/*   This file is based on:   $XFree86: xc/programs/Xserver/hw/xfree86/etc/scanpci.c,v 3.34.2.17 1998/11/10 11:55:40 dawes Exp $   Modified for readability by Nick Kurshev*/static int pci_config_type( void ) { return 1; }#ifdef linux#include <fcntl.h>#include <sys/io.h>#include <linux/pci.h>#include "../../bswap.h"#endif#ifdef linuxstatic int pci_get_vendor(	  unsigned char bus,	  unsigned char dev,	  int func){    int retval;    char path[100];    int fd;    short vendor, device;    sprintf(path,"/proc/bus/pci/%02d/%02x.0", bus, dev);    fd = open(path,O_RDONLY|O_SYNC);    if (fd == -1) {	    retval=0xFFFF;    }    else if (pread(fd, &vendor, 2, PCI_VENDOR_ID) == 2 &&             pread(fd, &device, 2, PCI_DEVICE_ID) == 2) {	    vendor = bswap_16(vendor);	    device = bswap_16(device);	    retval = vendor + (device<<16); /*no worries about byte order, 	    				      all ppc are bigendian*/    } else {	    retval = 0xFFFF;    }       if (fd > 0) {	    close(fd);    }    return retval;}#elsestatic int pci_get_vendor(          unsigned char bus,          unsigned char dev,          int func){    int retval;    pciconfig_read(bus, dev<<3, PCI_ID_REG, 4, &retval);    return retval;}#endif#ifdef linuxstatic long pci_config_read_long(	  unsigned char bus,	  unsigned char dev,	  int func, 	  unsigned cmd){    long retval;    char path[100];    int fd;    sprintf(path,"/proc/bus/pci/%02d/%02x.0", bus, dev);    fd = open(path,O_RDONLY|O_SYNC);    if (fd == -1) {	    retval=0;    }    else if (pread(fd, &retval, 4, cmd) == 4) {	    retval = bswap_32(retval);    } else {	    retval = 0;    }       if (fd > 0) {	    close(fd);    }    return retval;}static long pci_config_read_word(	  unsigned char bus,	  unsigned char dev,	  int func, 	  unsigned cmd){    long retval;    char path[100];    int fd;    sprintf(path,"/proc/bus/pci/%02d/%02x.0", bus, dev);    fd = open(path,O_RDONLY|O_SYNC);    if (fd == -1) {	    retval=0;    }    else if (pread(fd, &retval, 2, cmd) == 2) {	    retval = bswap_16(retval);    } else {	    retval = 0;    }       if (fd > 0) {	    close(fd);    }    return retval;}static long pci_config_read_byte(	  unsigned char bus,	  unsigned char dev,	  int func, 	  unsigned cmd){    long retval;    char path[100];    int fd;    sprintf(path,"/proc/bus/pci/%02d/%02x.0", bus, dev);    fd = open(path,O_RDONLY|O_SYNC);    if (fd == -1) {	    retval=0;    }    else if (pread(fd, &retval, 1, cmd) != 1) {	    retval = 0;    }       if (fd > 0) {	    close(fd);    }    return retval;}static void pci_config_write_long(	  unsigned char bus,	  unsigned char dev,	  int func, 	  unsigned cmd,	  long val){    char path[100];    int fd;    val = bswap_32(val);    sprintf(path,"/proc/bus/pci/%02d/%02x.0", bus, dev);    fd = open(path,O_RDONLY|O_SYNC);    if (fd > 0) {	    pwrite(fd, &val, 4, cmd);	    close(fd);    }}static void pci_config_write_word(	  unsigned char bus,	  unsigned char dev,	  int func, 	  unsigned cmd,	  long val){    char path[100];    int fd;    val = bswap_16(val);    sprintf(path,"/proc/bus/pci/%02d/%02x.0", bus, dev);    fd = open(path,O_RDONLY|O_SYNC);    if (fd > 0) {	    pwrite(fd, &val, 2, cmd);	    close(fd);    }}static void pci_config_write_byte(	  unsigned char bus,	  unsigned char dev,	  int func, 	  unsigned cmd,	  long val){    char path[100];    int fd;    sprintf(path,"/proc/bus/pci/%02d/%02x.0", bus, dev);    fd = open(path,O_RDONLY|O_SYNC);    if (fd > 0) {	    pwrite(fd, &val, 1, cmd);	    close(fd);    }}#elsestatic long pci_config_read_long(          unsigned char bus,          unsigned char dev,          int func,           unsigned cmd){    long retval;    pciconfig_read(bus, dev<<3, cmd, 4, &retval);    return retval;}static long pci_config_read_word(          unsigned char bus,          unsigned char dev,          int func,           unsigned cmd){    long retval;    pciconfig_read(bus, dev<<3, cmd, 2, &retval);    return retval;}static long pci_config_read_byte(          unsigned char bus,          unsigned char dev,          int func,           unsigned cmd){    long retval;    pciconfig_read(bus, dev<<3, cmd, 1, &retval);    return retval;}static void pci_config_write_long(          unsigned char bus,          unsigned char dev,          int func,           unsigned cmd,	  long val){    long retval;    pciconfig_write(bus, dev<<3, cmd, 4, val);    return retval;}static void pci_config_write_word(          unsigned char bus,          unsigned char dev,          int func,           unsigned cmd,	  long val){    long retval;    pciconfig_write(bus, dev<<3, cmd, 2, val);    return retval;}static void pci_config_write_byte(          unsigned char bus,          unsigned char dev,          int func,           unsigned cmd,	  long val){    long retval;    pciconfig_write(bus, dev<<3, cmd, 1, val);    return retval;}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -