Ядро OS X блокирует виртуальное адресное пространство в физической памяти - PullRequest
1 голос
/ 14 марта 2020

Чтобы выделить память, я делаю так:

uint64_t _addr = 0x00;

kern_return_t err = mach_vm_allocate(mach_task_self(), &_addr, size, VM_FLAGS_ANYWHERE);
    if (err != KERN_SUCCESS) {
        printf("failed to allocate %s\n", mach_error_string(err));

    }

Но может кто-нибудь показать, как предотвратить перенос этой памяти в область подкачки? В Windows есть VirtualLock.

1 Ответ

1 голос
/ 14 марта 2020

Это должно работать, чтобы использовать mach_vm_wire() для этого. Не ясно, спрашивали ли вы об этом из кода ядра (например, kext) или из пользовательского кода. Если из пространства пользователя вам могут потребоваться права доступа root.

...