Операции с областями 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) при создании нового отображения.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Операции

Из книги Модель зрелости процессов разработки программного обеспечения автора Паулк Марк

Операции Операция представляет собой любой шаг или функцию, чье мысленное или физическое выполнение имеет поставленную цель. Операции включают в себя всю работу руководителей и технического персонала по выполнению задач проекта и


5. Производные операции

Из книги Базы данных: конспект лекций автора Автор неизвестен

5. Производные операции Итак, мы рассмотрели различные варианты операций соединения, а именно операции внутреннего соединения, левого, правого и полного внешнего соединения, которые являются производными восьми исходных операций реляционной алгебры: унарных операций


Операции += и -=

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Операции += и -= Если вы изучаете C#, уже имея опыт использования C++, то можете обратить внимание на отсутствие возможности перегрузки операторных сокращений, включающих операцию присваивания (+=, -= и т.д.). Не волнуйтесь, в C# операторные сокращения с присваиванием


Код операции MI

Из книги Основы AS/400 автора Солтис Фрэнк

Код операции MI В таблице 4.14 показано назначение битов кода операции MI. Бит 3 задает вычислительный или невычислительный формат команды. Во втором случае функция, которая должна быть выполнена, закодирована в битах 5-15 кода операции. Функция, выполняемая вычислительной


16.1. Операции tty

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

16.1. Операции tty Устройства tty предоставляют огромное количество опций обработки данных; они относятся к наиболее сложным устройствам ядра. Настраивать можно опции обработки входных и выходных данных, а также потока данных. Также можно контролировать ограниченное


Работа с областями окон

Из книги VBA для чайников автора Каммингс Стив

Работа с областями окон Когда вы разделяете окно с помощью команды Окно=Разделить, верхняя и нижняя часть окна являются отдельными областями. Окно Word содержит как минимум одну область, но может содержать и больше областей. В областях Word также отображает и такие сведения,


Операции

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.


Операции

Из книги Язык Си - руководство для начинающих автора Прата Стивен

Операции Операции в языке Си имеют либо один операнд (унарные операции), либо два операнда (бинарные операции), либо три (тернарная операция). Операция присваивания может быть как унарной, так и бинарной (см. раздел 4.4).Существенным свойством любой операции является ее


V. Операции над указателями

Из книги Разработка ядра Linux автора Лав Роберт

V. Операции над указателями & Операция получения адреса: выдаст адрес переменной, имя которой стоит за обозначением операции: &nurse является адресом переменной nurse * Косвенная адресация: выдает значение, записанное по адресу, на который ссылается указатель: nurse = 22;ptr =


VII. Дополнительные операции

Из книги Описание языка PascalABC.NET автора Коллектив РуБоард

VII. Дополнительные операции sizeof Выдает размер (в байтах) операнда, стоящего справа. Операндом может быть обозначение типа, заключенное в скобки, как, например, в sizeof(float), либо имя конкретной переменной или определенного массива и т. д., как, например, в sizeof foo. (type) Операция


Операции

Из книги автора

Операции В языке Си предусматриваются поразрядные логические операции и операции сдвига. Далее мы будем записывать значения в двоичном коде, чтобы вы могли видеть, как выполняются операции. В реальных программах используются целые переменные или константы, записанные в


Операции

Из книги автора

Операции Теперь рассмотрим, что можно и нельзя делать с величинами типа enum. Вы можете присвоить константу типа enum переменной того же типа enum feline pet;pet = tiger;Нельзя использовать другие операции присваивания: pet += cat; /* недопустимо */Можно провести сравнение с целью выявления


4.3. Операции сравнения и логические операции

Из книги автора

4.3. Операции сравнения и логические операции Символ операции Значение Использование ! Логическое НЕ !expr меньше exprexpr = Меньше либо равно expr=expr больше exprexpr = больше либо равно expr=expr == равно expr==expr != не равно expr!=expr логическое


Работа с областями памяти

Из книги автора

Работа с областями памяти Ядру часто необходимо определять, соответствует ли та или иная область памяти в адресном пространстве процесса заданному критерию, например, существует ли заданный адрес в области памяти. Эти операции являются основой работы функции mmap(),


Операции is и as

Из книги автора

Операции is и as Операция is предназначена для проверки того, имеет ли классовая переменная указанный динамический тип. Операция as позволяет безопасно преобразовать переменную одного классового типа к другому классовому типу (в отличие от явного приведения классового