亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? access.c

?? The PCI Utilities package contains a library for portable access to PCI bus configuration registers
?? C
字號:
/* *	The PCI Library -- User Access * *	Copyright (c) 1997--2003 Martin Mares <mj@ucw.cz> * *	Can be freely distributed and used under the terms of the GNU GPL. */#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#include <string.h>#include "internal.h"static struct pci_methods *pci_methods[PCI_ACCESS_MAX] = {  NULL,#ifdef PCI_HAVE_PM_LINUX_SYSFS  &pm_linux_sysfs,#else  NULL,#endif#ifdef PCI_HAVE_PM_LINUX_PROC  &pm_linux_proc,#else  NULL,#endif#ifdef PCI_HAVE_PM_INTEL_CONF  &pm_intel_conf1,  &pm_intel_conf2,#else  NULL,  NULL,#endif#ifdef PCI_HAVE_PM_FBSD_DEVICE  &pm_fbsd_device,#else  NULL,#endif#ifdef PCI_HAVE_PM_AIX_DEVICE  &pm_aix_device,#else  NULL,#endif#ifdef PCI_HAVE_PM_NBSD_LIBPCI  &pm_nbsd_libpci,#else  NULL,#endif#ifdef PCI_HAVE_PM_OBSD_DEVICE  &pm_obsd_device,#else  NULL,#endif#ifdef PCI_HAVE_PM_DUMP  &pm_dump,#else  NULL,#endif};struct pci_access *pci_alloc(void){  struct pci_access *a = malloc(sizeof(struct pci_access));  int i;  memset(a, 0, sizeof(*a));  pci_set_name_list_path(a, PCI_PATH_IDS_DIR "/" PCI_IDS, 0);  for(i=0; i<PCI_ACCESS_MAX; i++)    if (pci_methods[i] && pci_methods[i]->config)      pci_methods[i]->config(a);  return a;}void *pci_malloc(struct pci_access *a, int size){  void *x = malloc(size);  if (!x)    a->error("Out of memory (allocation of %d bytes failed)", size);  return x;}voidpci_mfree(void *x){  if (x)    free(x);}static voidpci_generic_error(char *msg, ...){  va_list args;  va_start(args, msg);  fputs("pcilib: ", stderr);  vfprintf(stderr, msg, args);  fputc('\n', stderr);  exit(1);}static voidpci_generic_warn(char *msg, ...){  va_list args;  va_start(args, msg);  fputs("pcilib: ", stderr);  vfprintf(stderr, msg, args);  fputc('\n', stderr);}static voidpci_generic_debug(char *msg, ...){  va_list args;  va_start(args, msg);  vfprintf(stdout, msg, args);  va_end(args);}static voidpci_null_debug(char *msg UNUSED, ...){}voidpci_init(struct pci_access *a){  if (!a->error)    a->error = pci_generic_error;  if (!a->warning)    a->warning = pci_generic_warn;  if (!a->debug)    a->debug = pci_generic_debug;  if (!a->debugging)    a->debug = pci_null_debug;  if (a->method)    {      if (a->method >= PCI_ACCESS_MAX || !pci_methods[a->method])	a->error("This access method is not supported.");      a->methods = pci_methods[a->method];    }  else    {      unsigned int i;      for(i=0; i<PCI_ACCESS_MAX; i++)	if (pci_methods[i])	  {	    a->debug("Trying method %d...", i);	    if (pci_methods[i]->detect(a))	      {		a->debug("...OK\n");		a->methods = pci_methods[i];		a->method = i;		break;	      }	    a->debug("...No.\n");	  }      if (!a->methods)	a->error("Cannot find any working access method.");    }  a->debug("Decided to use %s\n", a->methods->name);  a->methods->init(a);}voidpci_cleanup(struct pci_access *a){  struct pci_dev *d, *e;  for(d=a->devices; d; d=e)    {      e = d->next;      pci_free_dev(d);    }  if (a->methods)    a->methods->cleanup(a);  pci_free_name_list(a);  pci_set_name_list_path(a, NULL, 0);  pci_mfree(a);}voidpci_scan_bus(struct pci_access *a){  a->methods->scan(a);}struct pci_dev *pci_alloc_dev(struct pci_access *a){  struct pci_dev *d = pci_malloc(a, sizeof(struct pci_dev));  memset(d, 0, sizeof(*d));  d->access = a;  d->methods = a->methods;  d->hdrtype = -1;  if (d->methods->init_dev)    d->methods->init_dev(d);  return d;}intpci_link_dev(struct pci_access *a, struct pci_dev *d){  d->next = a->devices;  a->devices = d;  return 1;}struct pci_dev *pci_get_dev(struct pci_access *a, int domain, int bus, int dev, int func){  struct pci_dev *d = pci_alloc_dev(a);  d->domain = domain;  d->bus = bus;  d->dev = dev;  d->func = func;  return d;}void pci_free_dev(struct pci_dev *d){  if (d->methods->cleanup_dev)    d->methods->cleanup_dev(d);  pci_mfree(d);}static inline voidpci_read_data(struct pci_dev *d, void *buf, int pos, int len){  if (pos & (len-1))    d->access->error("Unaligned read: pos=%02x, len=%d", pos, len);  if (pos + len <= d->cache_len)    memcpy(buf, d->cache + pos, len);  else if (!d->methods->read(d, pos, buf, len))    memset(buf, 0xff, len);}bytepci_read_byte(struct pci_dev *d, int pos){  byte buf;  pci_read_data(d, &buf, pos, 1);  return buf;}wordpci_read_word(struct pci_dev *d, int pos){  word buf;  pci_read_data(d, &buf, pos, 2);  return le16_to_cpu(buf);}u32pci_read_long(struct pci_dev *d, int pos){  u32 buf;  pci_read_data(d, &buf, pos, 4);  return le32_to_cpu(buf);}intpci_read_block(struct pci_dev *d, int pos, byte *buf, int len){  return d->methods->read(d, pos, buf, len);}static inline intpci_write_data(struct pci_dev *d, void *buf, int pos, int len){  if (pos & (len-1))    d->access->error("Unaligned write: pos=%02x,len=%d", pos, len);  if (pos + len <= d->cache_len)    memcpy(d->cache + pos, buf, len);  return d->methods->write(d, pos, buf, len);}intpci_write_byte(struct pci_dev *d, int pos, byte data){  return pci_write_data(d, &data, pos, 1);}intpci_write_word(struct pci_dev *d, int pos, word data){  word buf = cpu_to_le16(data);  return pci_write_data(d, &buf, pos, 2);}intpci_write_long(struct pci_dev *d, int pos, u32 data){  u32 buf = cpu_to_le32(data);  return pci_write_data(d, &buf, pos, 4);}intpci_write_block(struct pci_dev *d, int pos, byte *buf, int len){  if (pos < d->cache_len)    {      int l = (pos + len >= d->cache_len) ? (d->cache_len - pos) : len;      memcpy(d->cache + pos, buf, l);    }  return d->methods->write(d, pos, buf, len);}intpci_fill_info(struct pci_dev *d, int flags){  if (flags & PCI_FILL_RESCAN)    {      flags &= ~PCI_FILL_RESCAN;      d->known_fields = 0;    }  if (flags & ~d->known_fields)    d->known_fields |= d->methods->fill_info(d, flags & ~d->known_fields);  return d->known_fields;}voidpci_setup_cache(struct pci_dev *d, byte *cache, int len){  d->cache = cache;  d->cache_len = len;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费毛片app| eeuss影院一区二区三区 | 亚洲无线码一区二区三区| 久久久久免费观看| 26uuu精品一区二区在线观看| 欧美成人bangbros| 久久久久久久久久美女| 国产午夜精品在线观看| 国产精品视频一二三| 国产精品国产三级国产a| 国产精品剧情在线亚洲| 亚洲综合免费观看高清完整版在线| 亚洲欧美视频在线观看| 亚洲国产美女搞黄色| 奇米精品一区二区三区在线观看 | 久久久91精品国产一区二区精品 | 久久国产剧场电影| 国产一区二区三区免费| 国产精品99久久久久| 99久久777色| 欧美久久久久久久久久| 精品国产乱码久久久久久夜甘婷婷| 精品国产三级a在线观看| 国产欧美中文在线| 一区二区久久久久久| 国产不卡视频在线观看| 91在线无精精品入口| 欧美日韩国产区一| 久久亚洲精华国产精华液| 中文字幕日韩精品一区| 午夜精品福利一区二区蜜股av| 免费人成黄页网站在线一区二区| 国产精品影音先锋| 色8久久精品久久久久久蜜| 91精品麻豆日日躁夜夜躁| 国产欧美精品一区aⅴ影院| 一区二区三区在线免费视频| 日韩av网站在线观看| av亚洲精华国产精华精华| 欧美人与禽zozo性伦| 国产精品美女久久久久久久网站| 天天综合色天天综合色h| 成人av网站大全| 91精品国产综合久久蜜臀| 最新国产精品久久精品| 久久99精品久久久久久久久久久久 | 91麻豆精品国产91久久久久久久久 | 91在线观看下载| 日韩视频在线永久播放| 亚洲欧美日韩国产中文在线| 激情丁香综合五月| 欧美日韩不卡一区二区| 亚洲三级在线免费观看| 国产成都精品91一区二区三| 日韩三区在线观看| 三级在线观看一区二区| 91福利精品视频| 国产精品入口麻豆九色| 国产麻豆精品在线观看| 精品国产凹凸成av人导航| 性欧美疯狂xxxxbbbb| 在线亚洲一区观看| 国产精品第13页| 成人av网站在线观看| 欧美国产精品一区二区| 黑人巨大精品欧美一区| 日韩女优av电影| 精品一二三四区| 欧美成人精精品一区二区频| 久久电影网站中文字幕| 日韩三级在线免费观看| 美女诱惑一区二区| 日韩欧美一二三四区| 狠狠色综合日日| 国产亚洲欧美一区在线观看| 国产精品一区久久久久| 国产午夜精品久久久久久久| 国产麻豆精品视频| 国产亚洲一本大道中文在线| 高清成人免费视频| 中文字幕亚洲欧美在线不卡| a级精品国产片在线观看| 亚洲欧美日韩在线播放| 色94色欧美sute亚洲线路一久| 国产精品18久久久久久久久| 欧美精品一区男女天堂| 韩日av一区二区| 国产精品沙发午睡系列990531| eeuss国产一区二区三区| 亚洲欧美日韩人成在线播放| 在线视频一区二区三区| 亚洲福中文字幕伊人影院| 欧美美女网站色| 久久国产麻豆精品| 国产精品久久久久精k8 | 日韩不卡一二三区| 精品久久久久久久一区二区蜜臀| 国内欧美视频一区二区| 中文字幕va一区二区三区| 色婷婷av久久久久久久| 免费不卡在线观看| 国产日韩精品一区二区三区在线| 91亚洲精品久久久蜜桃网站| 日韩av不卡在线观看| 国产日韩在线不卡| 欧美色图在线观看| 理论电影国产精品| 国产精品久久久久久久久图文区| 欧美午夜精品理论片a级按摩| 韩国三级中文字幕hd久久精品| 亚洲欧洲99久久| 欧美日韩国产在线观看| 国产精品一级在线| 亚洲成人av一区| 国产欧美va欧美不卡在线| 在线观看国产精品网站| 国产麻豆精品视频| 亚洲不卡av一区二区三区| 日本中文字幕一区二区视频 | 99精品久久99久久久久| 日韩国产高清在线| 国产精品你懂的在线欣赏| 欧美人妖巨大在线| 91在线观看地址| 久久99国产精品麻豆| 伊人色综合久久天天人手人婷| 久久你懂得1024| 91精品欧美福利在线观看| 91网站黄www| 丰满少妇在线播放bd日韩电影| 日本不卡视频在线| 亚洲一区二区视频| 国产欧美视频一区二区| 欧美r级在线观看| 欧美精品一卡两卡| 91极品视觉盛宴| 成人激情免费网站| 国产乱码精品一区二区三区av | 99精品视频一区| 国产精品一品二品| 精品一区二区三区视频| 亚洲国产精品欧美一二99| 一区二区视频在线| 亚洲欧美一区二区久久| 中文一区一区三区高中清不卡| 久久久综合精品| 26uuu亚洲综合色欧美| 日韩欧美专区在线| 日韩一二三四区| 日韩欧美精品在线| 精品日韩成人av| 精品久久久久久综合日本欧美| 欧美一级专区免费大片| 在线观看91精品国产麻豆| 欧美妇女性影城| 欧美日韩国产精品成人| 欧美日韩国产一二三| 欧美一区二区视频网站| 精品久久久久久最新网址| 日韩美女视频在线| 国产亚洲一二三区| 国产精品久久久久aaaa樱花 | 亚洲天堂中文字幕| 椎名由奈av一区二区三区| 国产精品热久久久久夜色精品三区| 欧美国产日韩a欧美在线观看| 中文字幕佐山爱一区二区免费| 亚洲卡通欧美制服中文| 午夜av一区二区| 免费视频一区二区| 粉嫩一区二区三区在线看| 成人a免费在线看| 在线免费不卡电影| 日韩一级片在线观看| 欧美精彩视频一区二区三区| 亚洲精品视频在线观看网站| 午夜视频在线观看一区二区 | 视频一区在线视频| 国产最新精品精品你懂的| 99这里只有精品| 欧美三级视频在线播放| 欧美精品一区二区在线观看| 中文字幕日韩精品一区| 日韩国产精品大片| 成人网男人的天堂| 在线播放视频一区| 国产喷白浆一区二区三区| 亚洲成在线观看| 国产99久久久国产精品免费看| 91一区二区在线观看| 日韩免费一区二区| 亚洲美女少妇撒尿| 蜜乳av一区二区| 色综合天天视频在线观看 | 国产欧美一区二区精品性| 亚洲自拍偷拍麻豆| 成人在线视频一区| 日韩欧美国产一区二区三区| 亚洲女子a中天字幕| 国产精品一区免费视频|