История изменений
Исправление SZT, (текущая версия) :
По поводу функции mmap_create_stack есть еще два три важных замечания:
uint32_t mmap_create_stack(struct emmap *mmap) {
size_t size = 4096; // а почему тут, почему нет какого-нибудь дефайна STACK_SIZE чтоб была конфигурируемость ?
uintptr_t base = mmap_alloc(mmap, size);
mmap_place(task_self_resource_mmap(), base, size, 0);
vmem_map_region(mmap->ctx, base, base, size,
PROT_WRITE | PROT_READ | PROT_EXEC | VMEM_PAGE_USERMODE); // правильно ли назначать PROT_EXEC для стека? Это чтоб трамполины из GCC работали?
return base + size; // А разве стек всегда снизу вверх растет?
}
Исходная версия SZT, :
По поводу функции mmap_create_stack есть еще два важных замечания:
uint32_t mmap_create_stack(struct emmap *mmap) {
size_t size = 4096; // а почему тут, почему нет какого-нибудь дефайна STACK_SIZE чтоб была конфигурируемость ?
uintptr_t base = mmap_alloc(mmap, size);
mmap_place(task_self_resource_mmap(), base, size, 0);
vmem_map_region(mmap->ctx, base, base, size,
PROT_WRITE | PROT_READ | PROT_EXEC | VMEM_PAGE_USERMODE);
return base + size; // А разве стек всегда снизу вверх растет?
}