Digamos que eu alterne do modo de usuário para o modo de sistema executando ecall
, o que desabilita interrupções ao definir SIE
bit sstatus
como 0
.
O que acontecerá com uma interrupção que ocorre enquanto as interrupções estão desabilitadas?
Digamos que eu alterne do modo de usuário para o modo de sistema executando ecall
, o que desabilita interrupções ao definir SIE
bit sstatus
como 0
.
O que acontecerá com uma interrupção que ocorre enquanto as interrupções estão desabilitadas?
Quero redefinir os operadores new e delete para usar um alocador personalizado em um projeto C++ com múltiplas unidades de tradução. Aqui estão as redefinições escritas no arquivo memops.hpp:
#pragma once
#include "../lib/mem.h"
void* operator new(size_t size) {
return __mem_alloc(size);
}
void operator delete(void *ptr) {
__mem_free(ptr);
}
void* operator new[](size_t size) {
return __mem_alloc(size);
}
void operator delete[](void *ptr) {
__mem_free(ptr);
}
Minha pergunta é: onde incluir este arquivo de cabeçalho? Faz alguma diferença? A definição alternativa é aplicada em todos os lugares do projeto?
Encontrei este artigo https://www.ibm.com/docs/en/i/7.4?topic=heap-overloading-new-delete-operator , mas o último parágrafo me confunde.