Книга: Разработка ядра Linux
Операции с областями VMA
Операции с областями VMA
Поле vm_ops
структуры vm_area_struct
содержит указатель на таблицу операций, которые связаны с данной областью памяти и которые ядро может вызывать для манипуляций с областью VMA. Структура vm_area_struct
служит общим объектом для представления всех типов областей виртуальной памяти, а в таблице операций описаны конкретные методы, которые могут быть применены к каждому конкретному экземпляру объекта.
Таблица операций представлена с помощью структуры vm_operations_struct
, которая определена в файле <linux/mm.h>
следующим образом.
struct vm_operations_struct {
void (*open)(struct vm_area_struct*);
void (*close)(struct vm_area_struct*);
struct page* (*nopage)(struct vm_area_struct*, unsigned long, int);
int (*populate)(struct vm_area struct*, unsigned long,
unsigned long, pgprot_t, unsigned long, int);
};
Рассмотрим каждый метод в отдельности.
• void open(struct vm_area_struct *area);
Эта функция вызывается, когда соответствующая область памяти добавляется в адресное пространство.
• void close(struct vm_area_struct *area);
Эта функция вызывается, когда соответствующая область памяти удаляется из адресного пространства.
• struct page* nopage(struct vm_area_struct *area,
unsigned long address, int unused);
Эта функция вызывается обработчиком прерывания из-за отсутствия страницы (page fault), когда производится доступ к странице, которая отсутствует в физической памяти.
• int populate(struct vm_area_struct *area,
unsigned long address, unsigned long len, pgprot_t prot,
unsigned long pgoff, int nonblock);
Эта функция вызывается из системного вызова remap_pages()
для предварительного заполнения таблиц страниц области памяти (prefault) при создании нового отображения.
- Работа с областями памяти
- Что делать, если при установке принтера появляется сообщение Невозможно завершение операции. Подсистема печати недоступн...
- Операции с множествами узлов
- 4. Null-значения и логические операции
- 1. Операции объединения, пересечения, разности
- 2. Операции декартового произведения и естественного соединения
- 5. Производные операции
- 2. Унарные операции на языке структурированных запросов
- 3. Бинарные операции на языке структурированных запросов
- 5. Операции внутреннего соединения.
- ГЛАВА 5. СИСТЕМНЫЕ ОПЕРАЦИИ ДЛЯ РАБОТЫ С ФАЙЛОВОЙ СИСТЕМОЙ
- Мультипликативные операции