Ir ao conteúdo

Adicionando método ao servidor VFS no Minix

Boa Noite,

Primeiramente, o que é VFS? VFS é Virtual File System. É uma camada que existe em muitos sistemas operacionais e também no Minix, que cuida da parte comunicação com o File System. O mesmo foi desenvolvido pelo Balázs Gerófi como tese de Mestrado na universidade de Amsterdam com nome de “Design and implementation of the MINIX Virtual File system“.

Mas por que se comunicar com o servidor VFS? Por que adicionar algo nele? Bom, se você está trabalhando em baixo nível e quer por exemplo acessar diretamente os INODES por algum motivo, você deve inicialmente se comunicar com o servidor VFS. Para realizar a comunicação é simples, mas vamos supor que você queira um método especifico que o mesmo não possue, então você deve cria-lo.

Como fazer isso?

Inicialmente você deve editar o “/usr/src/include/minix/callnr.h”. Adicione logo abaixo a linha “#define GETPGRP 63″ o seguinte:
[code lang=”c”]
#define TESTCALL 64
[/code]

Em seguida você deve modificar o servidor VFS e adicionar o que você quer que faça quando a mesma for chamada. Edite inicialmente o “/usr/src/servers/vfs/table.c”. Você deve pegar a linha que possui no_sys, /* 64 = unused */
E alterar para:
[code lang=”c”]
do_TESTCALL, /* 64 = unused */
[/code]

Este será o método chamado quando a syscall de número 64 for executada.

Após isso você deve alterar o “/usr/src/servers/vfs/proto.h” que é onde estão definidos os métodos. Adicione o seguinte:
[code lang=”c”]
/* do_TESTCALL EXAMPLE */
_PROTOTYPE( int do_TESTCALL, (void) );
[/code]

Então você deve criar o método propriamente dito dentro do “/usr/src/servers/vfs/read.c” (ao menos eu fiz nesse arquivo). Adicione o seguinte código:

[code lang=”c”]
/*===========================================================================*
*Trabalho: do_ver_contig *
*===========================================================================*/
PUBLIC int do_TESTCALL() {
message m;
printf(“Número recebido %d”, m_in.fd);
}
[/code]

Mas como executar? E ver isso tudo funcionando? Como compilar?
Inicialmente acesse “/usr/src/tools/” e execute:

$ make libraries

(Este pode ser um processo demorado)

Continue em “/usr/src/tools” e execute:

$ make hdboot

Reinicie.

Como testar e ver se está funcionando? Crie um arquivo no seu “/root” com o seguinte conteúdo:
[code lang=”c”]
#include
#include
#include #include

int main(int argc, char *argv[]) {
int fd = 2;
message m;
m.m1_i1 = fd;
printf(“Number: %d”, fd);
_syscall(FS, 64, &m);
}
[/code]

O que isso é pra fazer? Fazer uma syscall no método 64, passar por mensagem o número 2, então o do_TESTCALL recebe o parametro e imprime o mesmo. Bem inutil, mas isto é pra demonstrar como criar métodos dentro do servidor VFS.

Exemplo dos códigos adicionados no servidor VFS

Criando uma biblioteca do sistema no Minix.

Atenciosamente,
Matheus

PS: É um exemplo bobo, mas é para demonstrar como adicionar métodos ao servidor VFS. Provavelmente nos próximos dias publicarei um exemplo, mais real.

Publicado emCLinux

954 Comentários

  1. I know this is not exactly on topic, but i have a blog using the blogengine platform as well and i’m having issues with my comments displaying. is there a setting i am forgetting? maybe you could help me out? thank you.

  2. Na 888starz siedze juz z pare miesiecy i tak sobie pomyslalem, ze rzuce tu pare slow. Szczerze mowiac — zapisalem sie glownie dla bonusu i nie zaluje. U nas w Polsce nie ma zbyt wielu porzadnych miejscowek, wiec cos takiego od razu testuje na spokojnie.

    Przede wszystkim krece sloty i wybor jest ogromny. Jest chyba z trzy tys. automatow, poczawszy od Pragmatic Play po NetEnt, Play’n GO oraz Yggdrasil. Sztampowe Sweet Bonanza i Book of Dead sa na wyciagniecie reki, ale prawde mowiac zwykle wracam do paru swoich tytulow. Ladowanie nie tnie na mobilce.

    Dla tych co lubia prawdziwego krupiera — obsluguje to Evolution, z prawdziwymi krupierami, a jeszcze te cale teleturnieje w stylu Crazy Time. Zjada czas niesamowicie. Wplaty i wyplaty — wrzucalem przez BLIK-a i crypto, da sie tez Mastercard. Pierwszy cashout dostalem po jakichs kilka godzin, Skrillem sa najszybsze. Jesli komus zalezy na swieze oferty u 888starz aviator zanim sie zapiszesz, bo sie zmieniaja.

    Powitalny prezentuje sie przyzwoicie — jest spory procent od wplaty i do tego jakies 150 zakrecen. Wager wynosi x40, i to szczerze w normie, choc jak zawsze trzeba przeczytac warunki. Minimalny depozyt to grosze, zapis trwala jakies dwie minuty. Apka mobilna istnieje bez wiekszych zgrzytow, instalka poza sklepem ze strony.

    Zeby nie bylo za rozowo — czat potrafi kaze czekac, szczegolnie w nocy. Sprawdzanie dokumentow tez mnie wkurzyla, ale widocznie z powodu licencji inaczej sie nie da. Ogolnie — 888starz mi pasuje, opinie na forach sa rozne, dlatego wyrob sobie wlasne, zanim wrzucisz kase.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *