1
我想在內聯程序中調用系統調用(prctl)並檢索系統調用的結果。但我無法讓它工作。內聯彙編程序用於調用系統調用並檢索其結果
這是我使用的代碼:
int install_filter(void)
{
long int res =-1;
void *prg_ptr = NULL;
struct sock_filter filter[] = {
BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_TRAP),
/* If a trap is not generate, the application is killed */
BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_KILL),
};
struct sock_fprog prog = {
.len = (unsigned short)(sizeof(filter)/sizeof(filter[0])),
.filter = filter,
};
prg_ptr = &prog;
no_permis();
__asm__ (
"mov %1, %%rdx\n"
"mov $0x2, %%rsi \n"
"mov $0x16, %%rdi \n"
"mov $0x9d, %%rax\n"
"syscall\n"
"mov %%rax, %0\n"
: "=r"(res)
: "r"(prg_ptr)
: "%rdx", "%rsi", "%rdi", "%rax"
);
if (res < 0){
perror("prctl");
exit(EXIT_FAILURE);
}
return 0;
}
過濾器應該是輸入(prg_ptr)的地址,我想保存的結果資源。
你能幫我嗎?