> глянь в ldd 2м издании. > > пробежаться наверно стоит по vm_area_struct, например от > какого-то процесса ядра типа swapper-a. на счет проверки на > "доступность" - были функции, в ldd описаны в контектсе > выделения region-a. там перед выделением делалась проверка > на доступность участка памяти. где-то в 2-5 главе. точно > сказать немогу.
Нет, это совсем не то (если я правильно понял).
Предложенным способом можно проверить размещена ли страница с заданным вируальным адресом в физической памяти, или в вытолкнута в swap.
А мне нужо проверить может ли PCI Bus Master устройство обратиться к заданному адресу физической памяти. Несмотря на то, что разрядность адреса PCI32 и системной памяти может быть одинаковой, не все адреса доступны.
Это контролируеся мостом PCI<->CPU/RAM. И если "запустить" PCI bus-master transfer на недоступный адрес (не важно read или write), то можно вызвать зависание либо PCI-устройства, либо PCI-моста, а на некоторых чипсетах и системы в целом.
Linux/Kernel:
Нужно быстро проверить, доступен ли определенный участок виртуальной памяти ядра с PCI-шины. Например, исполнимый код ядра и static-переменные не доступны. Я так понимаю все своидтся к проверке на попадание в определенный диаппазон адресов, но вот в каких переменных ядра храняться границы этого диаппазона.
> Linux/Kernel: > Нужно быстро проверить, доступен ли определенный участок > виртуальной памяти ядра с PCI-шины. Например, исполнимый > код ядра и static-переменные не доступны. Я так понимаю все > своидтся к проверке на попадание в определенный диаппазон > адресов, но вот в каких переменных ядра храняться границы > этого диаппазона.
глянь в ldd 2м издании.
пробежаться наверно стоит по vm_area_struct, например от какого-то процесса ядра типа swapper-a. на счет проверки на "доступность" - были функции, в ldd описаны в контектсе выделения region-a. там перед выделением делалась проверка на доступность участка памяти. где-то в 2-5 главе. точно сказать немогу.
[Linux/Kernel] Подскажите19.08.03 19:54 Автор: leo <Леонид Юрьев> Статус: Elderman Отредактировано 19.08.03 19:55 Количество правок: 1
> глянь в ldd 2м издании. > > пробежаться наверно стоит по vm_area_struct, например от > какого-то процесса ядра типа swapper-a. на счет проверки на > "доступность" - были функции, в ldd описаны в контектсе > выделения region-a. там перед выделением делалась проверка > на доступность участка памяти. где-то в 2-5 главе. точно > сказать немогу.
Нет, это совсем не то (если я правильно понял).
Предложенным способом можно проверить размещена ли страница с заданным вируальным адресом в физической памяти, или в вытолкнута в swap.
А мне нужо проверить может ли PCI Bus Master устройство обратиться к заданному адресу физической памяти. Несмотря на то, что разрядность адреса PCI32 и системной памяти может быть одинаковой, не все адреса доступны.
Это контролируеся мостом PCI<->CPU/RAM. И если "запустить" PCI bus-master transfer на недоступный адрес (не важно read или write), то можно вызвать зависание либо PCI-устройства, либо PCI-моста, а на некоторых чипсетах и системы в целом.