CNet C56K Data/Fax Modem
Подскажите, где можно взять драйвер для CNet C56K Data/Fax Modem?
Подскажите, где можно взять драйвер для CNet C56K Data/Fax Modem?
Подскажите плиз, как отключить загрузку стандартных модулей, которые не скомпилированы с ядром для PCI-устройства. Т. е. у меня есть железяка, я написал для нее свой модуль и хочу подгружать его через insmod. Но когда Linux загружается, то для этой железки он цепляет какой-то свой модуль. Контроллер PCI - PLX9030, а модуль в ядре snd_vx222. Спасибо
Подскажите плиз, как отключить загрузку стандартных модулей, которые не скомпилированы с ядром для PCI-устройства. Т. е. у меня есть железяка, я написал для нее свой модуль и хочу подгружать его через insmod. Но когда Linux загружается, то для этой железки он цепляет какой-то свой модуль. Контроллер PCI - PLX9030, а модуль в ядре snd_vx222.
Подскажите пожалуйста, правильно ли выделяется и освобождается память в модуле ядра с целью последующеготображения через mmap? После нескольких циклов выделения/освобождения свободная память в системе заканчивается и не выделяется необходимое количество блоков. Ядро 2.4.18. Спасибо. Привожу псевдокод выделения/освобождения памяти. //-------------------------------------------------------------------- //-------------------------------------------------------------------- //-------------------------------------------------------------------- //Allcoate m_blkNum blcok of memory m_blkSize for( ii=0; ii<m_blkNum; ii++ ) { m_arrBlock[ii].sysAdr = pci_alloc_consistent( m_pci, m_blkSize, &m_arrBlock[ii].phyAdr ); if( pcbuf->m_arrBlock[ii].sysAdr == NULL ) { printk("<0> Allocc(()) failed allocate memory for block=%d,\ ptr=0x%X\n", ii, (int)pBlk[ii] ); return -ENOMEM; } //try to lock all physical pages in the current block lock_pages( m_arrBlock[ii].sysAdr, m_blkSize ); } //free allocated memory blocks for( ii=0; ii<m_blkNum; ii++ ) { if(m_arrBlock[ii].sysAdr != NULL) { //unlock all physical pages in the current block unlock_pages( m_arrBlock[ii].sysAdr, m_blkSize ); pci_free_consistent( m_pci, m_blkSize, m_arrBlock[ii].sysAdr, virt_to_bus(m_arrBlock[ii].sysAdr)); } } //-------------------------------------------------------------------- //-------------------------------------------------------------------- //-------------------------------------------------------------------- static int lock_pages( void *va, u32 size ) { int j=0; struct page *start_page_addr = virt_to_page( va ); spin_lock(&init_mm.page_table_lock); for (j=0; j < (size >> PAGE_CACHE_SHIFT); j++) { SetPageReserved((start_page_addr+j)); //printk("<0> start_page_addr[%i] = 0x%X\n", j, (int)(start_page_addr+j) ); } spin_unlock(&init_mm.page_table_lock); //set lock status; return 0; } //-------------------------------------------------------------------- static int unlock_pages( void *va, u32 size ) { int j=0; struct page *start_page_addr = virt_to_page( va ); spin_lock(&init_mm.page_table_lock); for (j=0; j < (size >> PAGE_CACHE_SHIFT); j++) { ClearPageReserved((start_page_addr+j)); //printk("<0> start_page_addr[%i] = 0x%X\n", j, (int)(start_page_addr+j) ); } spin_unlock(&init_mm.page_table_lock); //clear lock status return 0; } //--------------------------------------------------------------------
Можно ли в user_space выделить блок памяти функцией malloc, а потом по user_space адресу этого блока в модуле ядра получить физический адрес user_space блока, сделать для него SetPageReserved, и после передать физический адрес блока для mmap? P. S. Неначем попробовать пока. Спасибо.
Помогите плиз. У меня мама Intel815 c встроенной видеокартой. Пытаюсь поставить Radeon 9000 Pro, но безуспешно. После перерзагрузки Linux загружается в текстовом режиме, что пишет непонятно. В итоге загружается в текстовом режиме. Может как-то специально нужно настраивать XFree86Config? Есть у кого опыт, поделитесь. Спасибо...
Железяка работает в режиме BUS Mastering на PCI шине под управлением драйвера. Данные передаются без ошибок. После этого выгружаю драйвер и загружаю вновь. Загрузка и захват ресурсов происходит без ошибок, но BUS Mastering не стартует. Настройка регистров контроллера PCI, и устройства одинакова в обоих случаях. Спин блокировки не используются. Память выделяется pci_alloc_consistent(), освобождается pci_free_consistent(). Пользовательское приложение делает mmap() для этой памяти. В качестве контроллера PCI используется PLX9656. Почему так происходит не могу понять. Если кто сталкивался с подобным плиз помогите советом...
Помогите с примером плиз!!! Как в исходник модуля на Си вставить ассемблерную инструкцию nop. В виндус это __asm nop. Спасибо
Помогите плиз! Выделяю блок памяти в драйвере PCI устройства с помощью функций kmalloc() или pci_alloc_consistent(), далее проходит цикл DMA. Внутри ядра по адресам, возвращенным этими функциями данные читаю нормально. Далее не удаляя блок из памяти делаю mmap для него, с пометкой блока RESERVED и вызываю remap_page_range(), ошибок не происходит, но читаю из приложения одни нули... Помогите понять в чем проблема... karakozov@inbox.ru Спасибо.
← предыдущие |