Pull to refresh

Comments 5

Не знаю, правильно ли делать именно так, но у меня включение-выключение защиты страницы делается примерно вот таким костылем:

static void mem_setrw(void **table) {
    unsigned int l;
    pte_t *pte;
    pte = lookup_address((long unsigned int), &l);
    pte->pte |= _PAGE_RW;
}



table — это адрес памяти, в котором нужно что-то сделать.
Извиняюсь, не проснувшись криво скопировал

Код
static void mem_setrw(void **table) {
    unsigned int l;
    pte_t *pte;
    pte = lookup_address((long unsigned int)table, &l);
    pte->pte |= _PAGE_RW;
}

static void mem_setro(void **table) {
    unsigned int l;
    pte_t *pte;
    pte = lookup_address((long unsigned int)table, &l);
    pte->pte &= ~_PAGE_RW;
}


Стоп, или речь идет о работе из пространства пользователя? А то я тут кидаюсь кусками модуля ядра…
Вряд ли из пространства пользователя можно просто так взять и поменять права доступа на страницу. Думаю, это всё же из ядра — берётся уже отображённая страница и ей устанавливается флаг на чтение-запись.
Да, для x86 такой способ также допустим. Спасибо за полезный комментарий.
Sign up to leave a comment.

Articles