CNet C56K Data/Fax Modem
Подскажите, где можно взять драйвер для CNet C56K Data/Fax Modem?
Подскажите пожалуйста, правильно ли выделяется и освобождается память в модуле ядра с целью
последующеготображения через 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;
}
//--------------------------------------------------------------------Помогите плиз. У меня мама Intel815 c встроенной видеокартой. Пытаюсь поставить Radeon 9000 Pro, но безуспешно. После перерзагрузки Linux загружается в текстовом режиме, что пишет непонятно. В итоге загружается в текстовом режиме. Может как-то специально нужно настраивать XFree86Config? Есть у кого опыт, поделитесь. Спасибо...
Помогите с примером плиз!!! Как в исходник модуля на Си вставить ассемблерную инструкцию nop. В виндус это __asm nop. Спасибо
| ← предыдущие |