![Resultado do kernel retornado para qual processo?](https://rvso.com/image/52097/Resultado%20do%20kernel%20retornado%20para%20qual%20processo%3F.png)
Quando um processo requer ações que exigem modo kernel, ele usa uma chamada de sistema. Então, como os resultados são devolvidos ao processo?
Responder1
OBSERVAÇÃO:TODAS AS INFORMAÇÕES ABAIXO SÃO DO SITE REFERENCIADO
Deesselink, encontrei as informações abaixo.
Achamada de sistemaé uma interface entre um aplicativo de espaço do usuário e um serviço fornecido pelo kernel. Como o serviço é fornecido no kernel, uma chamada direta não pode ser executada; em vez disso, você deve usar um processo para cruzar o limite do espaço do usuário/kernel.
Usando a chamada do sistema
Vejamos o que é necessário para usá-los em um aplicativo de espaço do usuário. Existem duas maneiras de usar novas chamadas de sistema do kernel. O primeiro é um método conveniente (não algo que você provavelmente gostaria de 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 identificadas por seu índice por meio da função syscall. Com a função syscall, você pode chamar uma chamada de sistema especificando seu índice de chamada e um conjunto de argumentos. Por exemplo, o pequeno aplicativo mostrado abaixo chama você 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 chamadas do sistema a ser usada. Se houvesse algum argumento a ser passado, ele seria fornecido após o índice de chamada. A maioria das chamadas de sistema inclui uma constante simbólica SYS_ para especificar seu mapeamento para _NRíndices. 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 de _Índices NR para SYSsímbolos fornecidos por /usr/include/bits/syscall.h
(definidos quando a libc é construída). Nunca faça referência direta a esse arquivo; em vez disso, use /usr/include/sys/syscall.h
.