Распечатка 10.3 Реализация mmap в uClinux |
Предыдущая Содержание Следующая |
Распечатка 10.3
do_mmap_pgoff() {
… …
if (file) { error = file->f_op->mmap(file, &vma); if (!error) return vma.vm_start; … }
…
tblock = (struct mm_tblock_struct *) kmalloc(sizeof(struct mm_tblock_struct),GFP_KERNEL); … … tblock->rblock = (struct mm_rblock_struct *) kmalloc(sizeof(struct mm_rblock_struct), GFP_KERNEL);
… … result = kmalloc(len, GFP_KERNEL); … …
/* Подсчёт ссылок */ tblock->rblock->refcount = 1; tblock->rblock->kblock = result; tblock->rblock->size = len; … … /* Подключаем блок к списку блоков структуры задачи */ tblock->next = current->mm->context.tblock.next; current->mm->context.tblock.next = tblock; current->mm->total_vm += len >> PAGE_SHIFT;
return (unsigned long)result; } |
Предыдущая Содержание Следующая |