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.034 Comentários

  1. The app has a small size that does not take up much phone memory.

    After downloading the file, simply tap it and wait for the installation to complete automatically.

    The Android app offers a stable experience and an easy-to-use interface across devices.

    Getting the 888starz apk from a trusted source is preferable to keep the device safe.

    The 888starz app is also available for iPhone on iOS with the same ease of use.

    888starz apk 888starz apk

  2. Simply want to say your article is as amazing. The clarity in your post is just great and i can assume you’re an expert on this subject. Fine with your permission allow me to grab your feed to keep up to date with forthcoming post. Thanks a million and please keep up the gratifying work.

  3. Зависаю на 888starz месяца три, так что накидаю как оно по факту. Зашёл по совету знакомого, скептически был настроен, но остался. Создание аккаунта быстрая, без нервов — пару полей и всё, верификацию попросили только перед первым выводом. Минимальный деп смешной, начинал с сотки рублей, чтобы осмотреться.

    Насчёт слотов тут реально жирно — заявлено около 3000 тайтлов. Провайдеры все топовые: Pragmatic Play, NetEnt, Play’n GO, а также Yggdrasil и Betsoft. Залипаю на Gates of Olympus плюс Sweet Bonanza, под настроение заглядываю в Book of Dead. Что порадовало живой раздел от Evolution — реальные крупье, их game show весело, хотя честно это лотерея.

    Насчёт приветственного адекватно: накидывают до 100% на депозит вдобавок бесплатные вращения. Вейджер честно говоря х40, поэтому считайте заранее — я по первости не вкурил и подарок сгорел. Кстати нынешние акции удобнее посмотреть на starz 888 casino перед регой, там всё обновляют. Периодически бывает бонус за регистрацию, но не всегда.

    Вывод денег что решает, и тут порядок. Методов навалом: Visa, Mastercard, кошельки, плюс Bitcoin. Через биток падает минут за 10-15, на карту бывает до пары часов. Последний раз выводил — дошло без волокиты. Единственное что напрягает — под выходные тянут с проверкой, разово было.

    Мобилка отдельная тема: своё приложение, на айфон тоже есть нормально. Достать можно прямо с сайта, если лень качать тоже летает. Поддержка отвечает 24/7, на русском без ботов-тупиков. По документам легально по Curacao — не оффшор без бумаг. Короче меня устраивает, 888starz свою нишу занял, хотя звёзд с неба не хватает.

Deixe um comentário

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