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

1.673 Comentários

  1. free chip no deposit casino bonus united states, golden tiger casino uk and is
    casinos illegal in uk, or australian open gambling

    Also visit my web-site long shot craps bets (Eunice)

  2. free slots australia online, golden tiger grandwild casino bonus code 2021 – Andy – uk and poker stars uk offers, or united statesn free slots no download

  3. legit online casinos usa, state legalized gambling (Lida) ad canada
    and free spins bonus codes uk, or gambling united states statistics

  4. canadian original free slots, blackjack mulligan uk and best new uk bingo sites,
    or online diamondhead casino approved; Blake, with free signup
    bonus real money usa

  5. best online pokies united states casino, how many the top online pokies and casinos in australia
    and play yukon gold slot machine, or australian online hard rock casino collapse cause (Gwendolyn)
    no deposit signup bonus

  6. crazy_gmOt crazy_gmOt

    Sto giocando su queste piattaforme da inizio anno e diciamocelo la ruota mi ha portato piu risultati di quello che credevo. Non sono certo uno da puntate folli, di solito metto due o tre euro a spin e amen. Il lobby di Crazy Time e parecchio ricco: si parla di 2000 e passa macchinette contando Pragmatic Play, NetEnt e Play’n GO, quindi i soliti noti del calibro di Book of Dead e Gates of Olympus ci sono tutti.

    La parte live e gestita da Evolution e la qualita si nota. Croupier veri, con tavoli in italiano nelle ore di punta, e i game show sono proprio quelli dove butto quasi tutte le serate. Ogni tanto controllo le stats dei bonus prima di entrare, non che serva davvero, eh.

    L’offerta di benvenuto proposta da Crazy Time in questo periodo e del 100% fino a 300€ piu 100 giri gratis, spalmati su qualche giorno. Ti danno anche un piccolo no deposit dopo la verifica dei documenti. Il wagering sta a 35x, che non e regalato, meglio leggersi il regolamento: puoi trovare le condizioni complete su Crazy Time prima di metterci soldi.

    Per i soldi va abbastanza bene. Sono andato di Skrill e l’accredito arriva in 12-24 ore, con Mastercard serve un paio di giorni lavorativi. Prendono pure le crypto, che pero non ho testato. Si parte da 10 euro, l’iscrizione in tre minuti. La cosa che mi ha dato fastidio e stato il KYC: due giorni di attesa e un documento respinto per un motivo assurdo.

    La chat di assistenza di Crazy Time parla italiano e questo aiuta, pero di notte ci vuole pazienza. Da cellulare gira liscio dal browser, l’applicazione c’e per Android esiste ma e ancora acerba. Licenza Malta Gaming Authority, quindi non e concessione italiana, e va saputo prima. Io intanto vado avanti, senza troppe pretese.

Deixe um comentário

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