Speaking of wrapping the syscall and INTR_MSG_TRAP, I might need a little help — is there a proper way to tell GCC that my inline assembly needs a specific register as input _and_ clobbers it? In Rust, this would be, for instance,
asm!("whatever", inout("rdi") msg => _) but GCC doesn't like asm volatile ("whatever" : : "D"(msg) : "rdi"); and it's explicitly documented to not work. I guess I could try either void *clobber; asm volatile ("whatever" : "=D"(clobber) : "D"(msg)); // Never use clobber again or void *tmp = msg; asm volatile ("whatever" : "+D"(tmp)); // Never use tmp again but I'm wondering if there's a proper way to do this. Any tips? If not, any preference among the two above options? Sergey