NOTA: TODAS AS INFORMAÇÕES ABAIXO SÃO DO SITE REFERENCIADO
De este link , encontrei as informações abaixo.
Uma chamada do sistema é uma interface entre um aplicativo de espaço do usuário e um serviço que o kernel fornece. Como o serviço é fornecido no kernel, uma chamada direta não pode ser executada; em vez disso, você deve usar um processo de cruzar o limite do espaço do usuário / kernel.
Usando a chamada do sistema
Vamos ver o que é necessário para usá-los a partir de um aplicativo de espaço do usuário. Existem duas maneiras de usar novas chamadas do sistema kernel. O primeiro é um método de conveniência (não algo que você provavelmente desejaria fazer no código de produção), e o segundo é o método tradicional que requer um pouco mais de trabalho.
Com o primeiro método, você chama suas novas funções conforme identificadas pelo índice através da função syscall. Com a função syscall, você pode chamar uma chamada de sistema especificando seu índice de chamadas e um conjunto de argumentos. Por exemplo, o aplicativo curto mostrado abaixo chama seu sys_getjiffies
usando seu índice.
#include <linux/unistd.h>
#include <sys/syscall.h>
#define __NR_getjiffies 320
int main()
{
long jiffies;
jiffies = syscall( __NR_getjiffies );
printf( "Current jiffies is %lx\n", jiffies );
return 0;
}
Como você pode ver, a função syscall inclui como primeiro argumento o índice da tabela de chamada do sistema a ser usada. Se houvesse algum argumento para passar, isso seria fornecido após o índice de chamadas. A maioria das chamadas de sistema inclui uma constante simbólica SYS_ para especificar seu mapeamento para os índices _ NR . Por exemplo, você invoca o índice __NR_getpid com syscall como:
syscall( SYS_getpid )
A função syscall é específica da arquitetura, mas usa um mecanismo para transferir o controle para o kernel. O argumento é baseado em um mapeamento dos símbolos _ NR para SYS símbolos fornecidos por /usr/include/bits/syscall.h
(definido quando a libc é construída). Nunca faça referência a este arquivo diretamente; Em vez disso, use /usr/include/sys/syscall.h
.