OSDev http://osdev.su/ |
|
Номер прерывания PCI на IO/APIC http://osdev.su/viewtopic.php?f=7&t=800 |
Страница 2 из 2 |
Автор: | Nable [ 04 окт 2013, 00:42 ] |
Заголовок сообщения: | Re: Номер прерывания PCI на IO/APIC |
> Зато во всех компьютерах есть объекты LNKA...LNKH Ну далеко не во всех, пожалуй. Пинов 4, а вот линков может быть много. Впрочем, об этом я уже выше говорил. А вот обходиться без ACPICA - решение сомнительное (впрочем, как и почти весь osdev), ибо полноценную реализацию поддержки ACPI (в т.ч. максимально маскирующуюся под винду, ибо производители железа нередко ведут себя нехорошо) сделать очень и очень непросто (и довольно скучное это занятие, имхо). |
Автор: | Himik [ 04 окт 2013, 11:58 ] |
Заголовок сообщения: | Re: Номер прерывания PCI на IO/APIC |
Я не совсем отказался от ACPICA, просто сразу его внедрить трудно. На это нужно много времени, и много понимания что к чему. |
Автор: | Nable [ 02 ноя 2013, 23:24 ] |
Заголовок сообщения: | Re: Номер прерывания PCI на IO/APIC |
Чуть не забыл запостить обещанное. Конечно, видел пример получше, но тут тоже есть интересное: Код: [ 0.181106] ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled. [ 0.181555] ACPI: PCI Interrupt Link [LNK2] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled. [ 0.182005] ACPI: PCI Interrupt Link [LNK3] (IRQs 3 4 *5 7 9 10 11 12 14 15) [ 0.182387] ACPI: PCI Interrupt Link [LNK4] (IRQs 3 4 5 7 9 10 11 *12 14 15) [ 0.182765] ACPI: PCI Interrupt Link [LNK5] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled. [ 0.183212] ACPI: PCI Interrupt Link [LUBA] (IRQs 3 4 5 7 9 10 11 *12 14 15) [ 0.183598] ACPI: PCI Interrupt Link [LUBB] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled. [ 0.184046] ACPI: PCI Interrupt Link [LMAC] (IRQs 3 4 5 7 9 10 *11 12 14 15) [ 0.184427] ACPI: PCI Interrupt Link [LACI] (IRQs *3 4 5 7 9 10 11 12 14 15) [ 0.184809] ACPI: PCI Interrupt Link [LMCI] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled. [ 0.185259] ACPI: PCI Interrupt Link [LSMB] (IRQs 3 4 *5 7 9 10 11 12 14 15) [ 0.185643] ACPI: PCI Interrupt Link [LUB2] (IRQs 3 4 5 7 9 *10 11 12 14 15) [ 0.186021] ACPI: PCI Interrupt Link [LIDE] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled. [ 0.186476] ACPI: PCI Interrupt Link [LSID] (IRQs 3 4 5 7 9 *10 11 12 14 15) [ 0.186868] ACPI: PCI Interrupt Link [LFID] (IRQs 3 4 5 7 9 10 *11 12 14 15) [ 0.187894] ACPI: PCI Interrupt Link [LPCA] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled. [ 0.188392] ACPI: PCI Interrupt Link [APC1] (IRQs 16) *0, disabled. [ 0.188672] ACPI: PCI Interrupt Link [APC2] (IRQs 17) *0, disabled. [ 0.188951] ACPI: PCI Interrupt Link [APC3] (IRQs 18) *0 [ 0.189209] ACPI: PCI Interrupt Link [APC4] (IRQs 19) *0 [ 0.189407] ACPI: PCI Interrupt Link [APC5] (IRQs *16), disabled. [ 0.189685] ACPI: PCI Interrupt Link [APCF] (IRQs 20 21 22 23) *0 [ 0.190047] ACPI: PCI Interrupt Link [APCG] (IRQs 20 21 22 23) *0, disabled. [ 0.190407] ACPI: PCI Interrupt Link [APCH] (IRQs 20 21 22 23) *0 [ 0.190746] ACPI: PCI Interrupt Link [APCJ] (IRQs 20 21 22 23) *0 [ 0.191086] ACPI: PCI Interrupt Link [APCK] (IRQs 20 21 22 23) *0, disabled. [ 0.191448] ACPI: PCI Interrupt Link [APCS] (IRQs 20 21 22 23) *0 [ 0.191790] ACPI: PCI Interrupt Link [APCL] (IRQs 20 21 22 23) *0 [ 0.192131] ACPI: PCI Interrupt Link [APCZ] (IRQs 20 21 22 23) *0, disabled. [ 0.192501] ACPI: PCI Interrupt Link [APSI] (IRQs 20 21 22 23) *0 [ 0.192850] ACPI: PCI Interrupt Link [APSJ] (IRQs 20 21 22 23) *0 [ 0.193198] ACPI: PCI Interrupt Link [APCP] (IRQs 20 21 22 23) *0, disabled. Однако, всё равно видим irq sharing между встроенной сетевухой и одним из встроенных же USB: Код: # cat /proc/interrupts
CPU0 0: 26 IO-APIC-edge timer 1: 2 IO-APIC-edge i8042 4: 11 IO-APIC-edge serial 7: 2 IO-APIC-edge parport0 9: 0 IO-APIC-fasteoi acpi 12: 1 IO-APIC-edge 14: 2976 IO-APIC-edge pata_amd 15: 721 IO-APIC-edge pata_amd 18: 2043 IO-APIC-fasteoi eth1 19: 239 IO-APIC-fasteoi sata_sil24 20: 336 IO-APIC-fasteoi sata_nv 21: 312 IO-APIC-fasteoi sata_nv 22: 0 IO-APIC-fasteoi ehci_hcd:usb1 23: 0 IO-APIC-fasteoi ohci_hcd:usb2, eth0 NMI: 0 Non-maskable interrupts LOC: 12412 Local timer interrupts SPU: 0 Spurious interrupts PMI: 0 Performance monitoring interrupts IWI: 0 IRQ work interrupts RTR: 0 APIC ICR read retries THR: 0 Threshold APIC interrupts MCE: 0 Machine check exceptions MCP: 2 Machine check polls ERR: 1 MIS: 0 |
Автор: | Himik [ 15 ноя 2013, 12:36 ] |
Заголовок сообщения: | Re: Номер прерывания PCI на IO/APIC |
В пакете ACPICA есть интересная утилита acpiexec, с помощью которой можно выполнять вызовы функций. После запуска утилиты появляется консоль ввода команд с клавиатуры, там можно ввести команду help. Основные команды execute и debug. Исходный код утилиты можно попробовать подключить к своему проекту, либо вызывать её как модуль, но тогда обмен параметрами текстовый. В параметр к acpiexec нужно передавать имя файла dsdt.dat, этот файл нужно создать с помощью утилиты acpidump -b В общем поэкспериментировав с вызовом функции \_SB_.PCI0._PRT понял, что она как раз и возвращает содержимое таблицы "APIC". В разных компьютерах эта таблица хранится под разными именами, поэтому лучше читать её через функцию _PRT, как и написано в первой статье. По-умолчанию возвращается таблица "PIC", поэтому в начале требуется вызвать процедуру _PIC с параметром 1. |
Автор: | Himik [ 22 ноя 2013, 23:47 ] |
Заголовок сообщения: | Re: Номер прерывания PCI на IO/APIC |
Вопрос по адресному пространству в Linux. Я хочу загрузить модуль разделяемой библиотеки в память (пользовательского уровня) так, чтобы он был виден по одинаковому адресу из любой задачи. Как это делается? |
Автор: | Nable [ 23 ноя 2013, 00:49 ] |
Заголовок сообщения: | Re: Номер прерывания PCI на IO/APIC |
Плохо, очень плохо - вендопуть какой-то. Собсно, "по одинаковому адресу" - речь про виртуальный адрес? А зачем, если все от этого уходят в пользу PIC (позиционно-независимого кода)? Ибо ведь всегда можно нарваться на то что в какой-то задаче пересекающаяся с целевой область будет занята чем-то другим. А так - есть вызов mmap, почитай про его первый аргумент (ну и флаг MAP_FIXED понадобится). |
Автор: | Himik [ 23 ноя 2013, 01:59 ] |
Заголовок сообщения: | Re: Номер прерывания PCI на IO/APIC |
Я компилирую модуль в PIC, и хотел чтобы при загрузке (или после загрузки) сделать его общедоступной библиотекой. Загружается он системным линковщиком, автоматически. Только потом сам модуль при инициализации может задействовать mmap, чтобы что-то ещё отобразить. Да в общем-то это действительно не обязательно, просто интересна сама возможность. Посмотрю доку на mmap ещё, может там есть наводка. |
Страница 2 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |