Trabai
(Chamadas de sistema e kernel, Criação de um device drive)
Alunos: Gustavo Adolpho Ferraz de Oliveira Filho
Jeferson Brunetta
TAREFA 1 (gerenciamento de processos): criando uma chamada de sistemas
Para adição de uma system call personalizada no minix seguimos dois passos principais:
- Escrever um system call handler.
- Escrever uma user lib
O handler é a função que é chamada em resposta a uma requisição a uma chamada de sistema, ele pode ser definido como um manipulador de chamadas de sistema, cada system call tem exatamente um handler referenciado.
A lib empacota os parâmetros que a system call precisa e chama o handler no servidor apropriado, o usuário sempre invoca a system call pela lib, seguindo a sequência de invocação: User -> Lib -> Handler.
Como o Minix é baseado em servidores é importante salientar que o handler deve ser associado ao seu servidor correto, por exemplo, se a system call altera algum arquivo, ela deve estar no servidor FS (File System), ou no nosso caso, no servidor PM (Process Manager)
Criaremos uma system call muito simples que apenas imprime uma mensagem, "Eu sou uma chamada de sistema", não necessitado de nenhum tipo de parâmetro de entrada eu retorno especifico.
Para tanto executaremos as seguintes etapas:
(a) Como criaremos um novo processo, iremos modificar os arquivos table.c e proto.h presentes no servidor PM (Process Manager) do diretório "/usr/src/servers/pm"
O arquivo table.c contem os índices das system calls organizadas em um array, nossa chamada será a de número 70, que atualmente encontra-se como um espaço não utilizado (no_sys), sendo substituído conforme pode-se observar a figura 1.1
Figura 1.1 do_mycall listado na tabela table.c
No arquivo proto.h adicionaremos o protótipo(escopo) de nossa chamada, que será implementada em misc.c
Figura 1.2 Escopo das chamadas.
(b) A chamada pode ser implementada em algum arquivo ".c", porem, para nosso trabalho