Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

                   "=b" (ebx), // в BH - номер версии интерфейса PCI, BL - подномер версии интерфейса

                   "=c" (ecx) // ECX - номер последней шины PCI в системе

                 : "1" (PCIBIOS_PCI_BIOS_PRESENT), // 0xB101 - функция проверки присутствия PCI BIOS в системе

                   "D" (&pci_indirect) // точка входа в сервис BIOS32

                 : "memory");

           __restore_flags(flags);

и обрабатываем полученные результаты:

           status = (eax >> 8) & 0xff; // признак присутствия сервиса с системе

           hw_mech = eax & 0xff; // поддерживаемый аппаратный механизм

           major_ver = (ebx >> 8) & 0xff; // номер версии

           minor_ver = ebx & 0xff; // номер подверсии

Если сервис присутствует, переменная status будет равна 0. Проверяем это, а заодно и полученную сигнатуру:

           if (status || signature != PCI_SIGNATURE) {

                 printk (KERN_ERR "PCI: BIOS BUG #%x[%08x] found ",

                        status, signature);

                 return 0;

           }

           printk(KERN_INFO "PCI: PCI BIOS revision %x.%02x entry at 0x%08x ",

                 major_ver, minor_ver, pcibios_entry);

 

           return 1;

    }

    return 0;

}

Функция pci_bios_find_device() выполняет поиск устройства заданного типа при помощи PCI BIOS и возвращает его координаты – номер шины, к которой подключено устройство, номер устройства на шине и номер функции устройства:

static int pci_bios_find_device(u16 vendor, u16 device_id, u16 index, u8 *bus, u8 *dev, u8 *fn)

{

    u16 bx;

    u16 ret;

 

Функция принимает следующие параметры:

n  vendor – код фирмы-изготовителя устройства PCI;

n  device_id – код типа устройства;

n  index – порядковый номер устройства заданного типа. Если устройство одно, то его порядковый номер равен 0.

Параметры bus, dev и fn, соответствующие координатам устройства PCI (номер шины, номер устройства на шине и номер функции), передаются по ссылке и будут изменены на реальные значения.

Для поиска устройства выполняем дальний вызов через точку входа в сервис BIOS32, задав в регистрах процессора соответствующие параметры:

n  EAX – запрашиваемая функция сервиса, в данном случае 0xB102.


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100