A menos que você esteja executando um kernel pré-2.6, você não estará usando o método int x80
para invocar a maioria das chamadas do sistema. Eles foram substituídos em favor do método systenter/sysexit
desde o kernel 2.6 (iniciado na série 2.5) para as coisas que importam.
Note que se você tiver binários antigos que foram construídos em kernels mais antigos, eles ainda podem estar usando o método int x80
- a única coisa que você pode fazer é reconstruí-los (ou obter binários atualizados).
Execute ldd your_exe
no programa que você está preocupado. Se ele listar linux-gate.so.1
ou linux-vdso.so.1
, ele está usando o novo syscalls. Se não, é (muito provavelmente) usando o método antigo.
Para binários estáticos, é mais difícil dizer. Uma maneira seria objdump your_exe | less
e procurar invólucros de chamadas do sistema ( __gettimeofday
é um bom candidato). Você verá a partir da desmontagem se estiver usando uma interrupção ou não.
Um bom resumo de como as antigas chamadas do INT 80 funcionaram e como a nova interface syscall veio a ser e é a configuração pode ser encontrada aqui: System calls (de Andries Brouwer).
Outra boa leitura: O que é linux-gate.so.1? .
Ambos os artigos estão vinculados a este outro: Mecanismo de Chamada do Sistema Baseado em Sysenter no Linux 2.6 , e aponta para o Noções básicas sobre o kernel do Linux livro de Daniel P. Bovet, Marco Cesati, que é bom para informações mais gerais.
Então, em suma: não se preocupe com isso. Se você tem um sistema recente o suficiente (CPU, kernel e distribuição), você está usando as chamadas de sistema "rápidas".