Операции с областями 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) при создании нового отображения.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Работа с областями памяти
Работа с областями памяти Ядру часто необходимо определять, соответствует ли та или иная область памяти в адресном пространстве процесса заданному критерию, например, существует ли заданный адрес в области памяти. Эти операции являются основой работы функции mmap(),
16.1. Операции tty
16.1. Операции tty Устройства tty предоставляют огромное количество опций обработки данных; они относятся к наиболее сложным устройствам ядра. Настраивать можно опции обработки входных и выходных данных, а также потока данных. Также можно контролировать ограниченное
Код операции MI
Код операции MI В таблице 4.14 показано назначение битов кода операции MI. Бит 3 задает вычислительный или невычислительный формат команды. Во втором случае функция, которая должна быть выполнена, закодирована в битах 5-15 кода операции. Функция, выполняемая вычислительной
Операции
Операции Операция представляет собой любой шаг или функцию, чье мысленное или физическое выполнение имеет поставленную цель. Операции включают в себя всю работу руководителей и технического персонала по выполнению задач проекта и
Работа с областями окон
Работа с областями окон Когда вы разделяете окно с помощью команды Окно=Разделить, верхняя и нижняя часть окна являются отдельными областями. Окно Word содержит как минимум одну область, но может содержать и больше областей. В областях Word также отображает и такие сведения,
Операции += и -=
Операции += и -= Если вы изучаете C#, уже имея опыт использования C++, то можете обратить внимание на отсутствие возможности перегрузки операторных сокращений, включающих операцию присваивания (+=, -= и т.д.). Не волнуйтесь, в C# операторные сокращения с присваиванием
V. Операции над указателями
V. Операции над указателями & Операция получения адреса: выдаст адрес переменной, имя которой стоит за обозначением операции: &nurse является адресом переменной nurse * Косвенная адресация: выдает значение, записанное по адресу, на который ссылается указатель: nurse = 22;ptr =
VII. Дополнительные операции
VII. Дополнительные операции sizeof Выдает размер (в байтах) операнда, стоящего справа. Операндом может быть обозначение типа, заключенное в скобки, как, например, в sizeof(float), либо имя конкретной переменной или определенного массива и т. д., как, например, в sizeof foo. (type) Операция
Операции
Операции В языке Си предусматриваются поразрядные логические операции и операции сдвига. Далее мы будем записывать значения в двоичном коде, чтобы вы могли видеть, как выполняются операции. В реальных программах используются целые переменные или константы, записанные в
Операции
Операции Теперь рассмотрим, что можно и нельзя делать с величинами типа enum. Вы можете присвоить константу типа enum переменной того же типа enum feline pet;pet = tiger;Нельзя использовать другие операции присваивания: pet += cat; /* недопустимо */Можно провести сравнение с целью выявления
5. Производные операции
5. Производные операции Итак, мы рассмотрели различные варианты операций соединения, а именно операции внутреннего соединения, левого, правого и полного внешнего соединения, которые являются производными восьми исходных операций реляционной алгебры: унарных операций
Операции
Операции Операции в языке Си имеют либо один операнд (унарные операции), либо два операнда (бинарные операции), либо три (тернарная операция). Операция присваивания может быть как унарной, так и бинарной (см. раздел 4.4).Существенным свойством любой операции является ее
4.3. Операции сравнения и логические операции
4.3. Операции сравнения и логические операции Символ операции Значение Использование ! Логическое НЕ !expr меньше exprexpr = Меньше либо равно expr=expr больше exprexpr = больше либо равно expr=expr == равно expr==expr != не равно expr!=expr логическое
Операции is и as
Операции is и as Операция is предназначена для проверки того, имеет ли классовая переменная указанный динамический тип. Операция as позволяет безопасно преобразовать переменную одного классового типа к другому классовому типу (в отличие от явного приведения классового