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

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

?? generic.c

?? The PCI Utilities package contains a library for portable access to PCI bus configuration registers
?? C
字號:
/* *	The PCI Library -- Generic Direct Access Functions * *	Copyright (c) 1997--2000 Martin Mares <mj@ucw.cz> * *	Can be freely distributed and used under the terms of the GNU GPL. */#include <string.h>#include "internal.h"voidpci_generic_scan_bus(struct pci_access *a, byte *busmap, int bus){  int dev, multi, ht;  struct pci_dev *t;  a->debug("Scanning bus %02x for devices...\n", bus);  if (busmap[bus])    {      a->warning("Bus %02x seen twice (firmware bug). Ignored.", bus);      return;    }  busmap[bus] = 1;  t = pci_alloc_dev(a);  t->bus = bus;  for(dev=0; dev<32; dev++)    {      t->dev = dev;      multi = 0;      for(t->func=0; !t->func || multi && t->func<8; t->func++)	{	  u32 vd = pci_read_long(t, PCI_VENDOR_ID);	  struct pci_dev *d;	  if (!vd || vd == 0xffffffff)	    continue;	  ht = pci_read_byte(t, PCI_HEADER_TYPE);	  if (!t->func)	    multi = ht & 0x80;	  ht &= 0x7f;	  d = pci_alloc_dev(a);	  d->bus = t->bus;	  d->dev = t->dev;	  d->func = t->func;	  d->vendor_id = vd & 0xffff;	  d->device_id = vd >> 16U;	  d->known_fields = PCI_FILL_IDENT;	  d->hdrtype = ht;	  pci_link_dev(a, d);	  switch (ht)	    {	    case PCI_HEADER_TYPE_NORMAL:	      break;	    case PCI_HEADER_TYPE_BRIDGE:	    case PCI_HEADER_TYPE_CARDBUS:	      pci_generic_scan_bus(a, busmap, pci_read_byte(t, PCI_SECONDARY_BUS));	      break;	    default:	      a->debug("Device %04x:%02x:%02x.%d has unknown header type %02x.\n", d->domain, d->bus, d->dev, d->func, ht);	    }	}    }  pci_free_dev(t);}voidpci_generic_scan(struct pci_access *a){  byte busmap[256];  memset(busmap, 0, sizeof(busmap));  pci_generic_scan_bus(a, busmap, 0);}intpci_generic_fill_info(struct pci_dev *d, int flags){  struct pci_access *a = d->access;  if ((flags & (PCI_FILL_BASES | PCI_FILL_ROM_BASE)) && d->hdrtype < 0)    d->hdrtype = pci_read_byte(d, PCI_HEADER_TYPE) & 0x7f;  if (flags & PCI_FILL_IDENT)    {      d->vendor_id = pci_read_word(d, PCI_VENDOR_ID);      d->device_id = pci_read_word(d, PCI_DEVICE_ID);    }  if (flags & PCI_FILL_CLASS)      d->device_class = pci_read_word(d, PCI_CLASS_DEVICE);  if (flags & PCI_FILL_IRQ)    d->irq = pci_read_byte(d, PCI_INTERRUPT_LINE);  if (flags & PCI_FILL_BASES)    {      int cnt = 0, i;      memset(d->base_addr, 0, sizeof(d->base_addr));      switch (d->hdrtype)	{	case PCI_HEADER_TYPE_NORMAL:	  cnt = 6;	  break;	case PCI_HEADER_TYPE_BRIDGE:	  cnt = 2;	  break;	case PCI_HEADER_TYPE_CARDBUS:	  cnt = 1;	  break;	}      if (cnt)	{	  for(i=0; i<cnt; i++)	    {	      u32 x = pci_read_long(d, PCI_BASE_ADDRESS_0 + i*4);	      if (!x || x == (u32) ~0)		continue;	      if ((x & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO)		d->base_addr[i] = x;	      else		{		  if ((x & PCI_BASE_ADDRESS_MEM_TYPE_MASK) != PCI_BASE_ADDRESS_MEM_TYPE_64)		    d->base_addr[i] = x;		  else if (i >= cnt-1)		    a->warning("%04x:%02x:%02x.%d: Invalid 64-bit address seen for BAR %d.", d->domain, d->bus, d->dev, d->func, i);		  else		    {		      u32 y = pci_read_long(d, PCI_BASE_ADDRESS_0 + (++i)*4);#ifdef PCI_HAVE_64BIT_ADDRESS		      d->base_addr[i-1] = x | (((pciaddr_t) y) << 32);#else		      if (y)			a->warning("%04x:%02x:%02x.%d 64-bit device address ignored.", d->domain, d->bus, d->dev, d->func);		      else			d->base_addr[i-1] = x;#endif		    }		}	    }	}    }  if (flags & PCI_FILL_ROM_BASE)    {      int reg = 0;      d->rom_base_addr = 0;      switch (d->hdrtype)	{	case PCI_HEADER_TYPE_NORMAL:	  reg = PCI_ROM_ADDRESS;	  break;	case PCI_HEADER_TYPE_BRIDGE:	  reg = PCI_ROM_ADDRESS1;	  break;	}      if (reg)	{	  u32 u = pci_read_long(d, reg);	  if (u != 0xffffffff)	    d->rom_base_addr = u;	}    }  return flags & ~PCI_FILL_SIZES;}static intpci_generic_block_op(struct pci_dev *d, int pos, byte *buf, int len,		 int (*r)(struct pci_dev *d, int pos, byte *buf, int len)){  if ((pos & 1) && len >= 1)    {      if (!r(d, pos, buf, 1))	return 0;      pos++; buf++; len--;    }  if ((pos & 3) && len >= 2)    {      if (!r(d, pos, buf, 2))	return 0;      pos += 2; buf += 2; len -= 2;    }  while (len >= 4)    {      if (!r(d, pos, buf, 4))	return 0;      pos += 4; buf += 4; len -= 4;    }  if (len >= 2)    {      if (!r(d, pos, buf, 2))	return 0;      pos += 2; buf += 2; len -= 2;    }  if (len && !r(d, pos, buf, 1))    return 0;  return 1;}intpci_generic_block_read(struct pci_dev *d, int pos, byte *buf, int len){  return pci_generic_block_op(d, pos, buf, len, d->access->methods->read);}intpci_generic_block_write(struct pci_dev *d, int pos, byte *buf, int len){  return pci_generic_block_op(d, pos, buf, len, d->access->methods->write);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区在线观看免费| 亚洲国产精品99久久久久久久久| 99久久er热在这里只有精品15| 精品中文字幕一区二区小辣椒| 婷婷六月综合亚洲| 午夜国产精品一区| 日韩成人免费电影| 精品无人码麻豆乱码1区2区 | 不卡的电影网站| 成人一级片网址| 欧美在线观看你懂的| 欧美视频一区二| 欧美日韩国产高清一区二区| 7777精品伊人久久久大香线蕉的| 日韩欧美国产午夜精品| 久久久天堂av| 亚洲精品视频一区| 热久久免费视频| 国产一区不卡视频| 色综合久久久久综合体| 欧美日韩国产一级二级| 日韩欧美你懂的| 国产精品污污网站在线观看| 国产精品久久二区二区| 亚洲成av人片在线观看无码| 久久精品国产亚洲5555| 国产成人高清视频| 欧美日韩国产a| 久久综合色8888| 亚洲一区二区三区四区在线观看 | 国内外成人在线视频| 波多野结衣91| 91精品国产色综合久久ai换脸| 欧美精品一区二区三区在线播放| 国产精品久久久久久户外露出| 亚洲成人精品影院| 国产激情91久久精品导航| 在线视频一区二区免费| www国产精品av| 欧美日韩午夜在线视频| 国产v日产∨综合v精品视频| 色综合欧美在线| 欧美本精品男人aⅴ天堂| 亚洲欧美另类图片小说| 精品一区二区久久| 欧美专区亚洲专区| 中文字幕第一区二区| 男人的天堂亚洲一区| 色综合视频在线观看| 久久综合一区二区| 亚洲国产乱码最新视频 | 另类欧美日韩国产在线| 日本乱码高清不卡字幕| 国产无人区一区二区三区| 午夜精品久久久久久久 | 日韩电影在线一区二区| 91麻豆免费看片| 中文字幕+乱码+中文字幕一区| 奇米综合一区二区三区精品视频 | 日韩精品成人一区二区三区| 日韩精品一区二区三区四区视频| 久久蜜桃av一区精品变态类天堂 | 一区二区三区高清| www.亚洲人| 中文字幕免费不卡| 国产二区国产一区在线观看| 欧美xfplay| 免费精品视频最新在线| 在线综合视频播放| 午夜精品福利久久久| 欧美视频在线一区| 亚洲一区二区三区四区在线 | 亚洲综合小说图片| 91黄色免费看| 亚洲国产成人av网| 欧美日韩国产一级片| 天天操天天色综合| 欧美色区777第一页| 日韩精品视频网站| 日韩天堂在线观看| 国内精品写真在线观看| 亚洲精品一区二区三区蜜桃下载| 精品亚洲porn| 国产欧美精品日韩区二区麻豆天美| 国产一区二区三区在线观看精品 | 国产精品久久久久久久久搜平片| 国产成人av影院| 中文字幕乱码亚洲精品一区| 91在线云播放| 亚洲一区二区在线观看视频 | 丁香婷婷综合网| 亚洲欧洲日韩av| 欧美影视一区二区三区| 秋霞影院一区二区| 久久久另类综合| 91国产福利在线| 捆绑变态av一区二区三区| 久久蜜臀精品av| 在线中文字幕一区二区| 久久精品国产第一区二区三区| 久久久亚洲精品一区二区三区| 成人av网址在线| 日韩高清在线电影| 欧美国产日本韩| 这里只有精品免费| 国产精品1区2区| 亚洲小说欧美激情另类| 精品国产乱码久久久久久1区2区| a级高清视频欧美日韩| 亚洲国产精品久久人人爱| 日韩欧美在线网站| 色综合久久99| 久久电影国产免费久久电影 | 秋霞国产午夜精品免费视频| 国产亚洲一区二区三区在线观看| 91麻豆6部合集magnet| 日本不卡一区二区三区高清视频| 久久久久9999亚洲精品| 欧美精品自拍偷拍| 国产激情偷乱视频一区二区三区| 亚洲一区二区三区四区不卡| 国产欧美一区二区精品性| 欧美色爱综合网| 成人av在线资源网| 免费成人小视频| 亚洲天堂网中文字| 国产目拍亚洲精品99久久精品| 欧美丝袜丝交足nylons| 成人aaaa免费全部观看| 韩国三级电影一区二区| 亚洲成人一区二区| 亚洲精品你懂的| 久久精品视频一区二区| 日韩欧美一区二区不卡| 欧美日韩日日骚| 色婷婷久久久亚洲一区二区三区 | 欧美精品一二三四| 色综合久久88色综合天天6| 国产99久久久国产精品免费看| 日韩国产欧美三级| 亚洲成人av福利| 亚洲最大色网站| 亚洲永久精品大片| 亚洲欧美电影院| 亚洲视频一区在线观看| 国产精品毛片高清在线完整版| 精品国产一区二区三区四区四| 欧美一级电影网站| 日韩一区二区三区免费看| 欧美日韩国产小视频在线观看| 色噜噜狠狠色综合中国 | 视频一区中文字幕国产| 亚洲高清视频的网址| 亚洲成人激情自拍| 日本在线播放一区二区三区| 午夜精品久久久久久久99水蜜桃| 伊人一区二区三区| 一区二区三区高清| 亚洲成人免费看| 欧美aaa在线| 国产伦理精品不卡| 精品一区二区在线观看| 国产毛片精品视频| 成人av免费在线观看| 成人av电影在线| 欧美综合欧美视频| 欧美日韩一区二区三区在线看| 欧美人成免费网站| 精品国产电影一区二区| 国产三区在线成人av| 中文字幕在线一区二区三区| 亚洲精品视频在线观看网站| 亚洲成人免费电影| 久久99国产精品久久99果冻传媒| 国产乱国产乱300精品| 99久久99久久精品国产片果冻| 色先锋aa成人| 日韩一区二区麻豆国产| 久久久精品中文字幕麻豆发布| 自拍偷拍欧美精品| 石原莉奈一区二区三区在线观看| 美国av一区二区| 9l国产精品久久久久麻豆| 欧美巨大另类极品videosbest | 91在线无精精品入口| 欧美日韩亚洲不卡| 欧美激情资源网| 图片区日韩欧美亚洲| 国产米奇在线777精品观看| 欧美午夜不卡视频| 久久午夜羞羞影院免费观看| 亚洲综合久久久久| 国产精品一区二区在线观看不卡| 91久久精品一区二区三区| 日韩美女一区二区三区| 亚洲欧美偷拍另类a∨色屁股| 奇米影视一区二区三区小说| 成人黄动漫网站免费app| 91麻豆精品国产91久久久久久| 国产精品乱码一区二区三区软件|