Skip to content

Add method to VFS in Minix.

Good Night,

First of all, what is VFS? VFS means Virtual File System. It is a layer that exists in a lot of OS and in Minix too, this layer takes care of the communication with the File System. It is a Master’s thesis in Computer Science from Balázs Gerófi and the name is “Design and implementation of the MINIX Virtual File system“.

But why to communicate with VFS server? Or why to add something on it? If you want to some tasks you need to do a SYSCALL to it. But sometimes the VFS server don’t do what you want. So you must add and change it to do it.

How to do this?

Edit “/usr/src/include/minix/callnr.h”. After this line “#define GETPGRP 63″ add this:
[code lang=”c”]
#define TESTCALL 64
[/code]

Then you need to change the VFS server and add what you want to do when it is called. Edit “/usr/src/servers/vfs/table.c”. You should replace the line “no_sys, /* 64 = unused */” with:
[code lang=”c”]
do_TESTCALL, /* 64 = unused */
[/code]

What happens? The method do_TESTCALL will be called when a syscall with number 64 is done.

Change the “/usr/src/servers/vfs/proto.h”. Add this:
[code lang=”c”]
/* do_TESTCALL EXAMPLE */
_PROTOTYPE( int do_TESTCALL, (void) );
[/code]

Now you have to create the method in “/usr/src/servers/vfs/read.c” (I did in this file and it worked). Add this:

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

But how to execute? How this works? How to compile?
Acess “/usr/src/tools/” and execute:

$ make libraries

(This process can take a long time)

In “/usr/src/tools” execute:

$ make hdboot

Reboot.

How to test and see if it is working? Create in your “/root” a file with this:
[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]

Compile it, execute it and done!

This file do a _syscall to FS saying to execute method 64 and send by message the number 2. So the do_TESTCALL receive the parameter and show it on screen. Yes it is simple, but it is just an example about how to work with VFS server.

Example of code changed/add to VFS server

Creating a system library in Minix.

Best Regards,
Matheus

PS: It is a silly example, but it just show how to add some method to VFS Server. Probably in the next days I will show a real example.

Published inCLinux

373 Comments

  1. What i don’t realize is if truth be told how you are
    now not really a lot more smartly-appreciated than you may be right now.

    You’re very intelligent. You already know therefore considerably in relation to this matter, made
    me for my part believe it from numerous varied angles.
    Its like men and women don’t seem to be fascinated
    until it’s one thing to accomplish with Lady gaga!
    Your individual stuffs excellent. At all times take care of it up!

    Here is my webpage: Online Video game gambling sites

  2. best casino app in usa, real money slots free spins usa and united kingdom casino club, or casino tax recovery united kingdom

    Look at my webpage: infinite blackjack rigged (Elizbeth)

  3. best paying poker machines united states, what does it mean to dream about
    a casino (Lucas) ratings canada and craps gambling uk, or free online
    pokies no deposit united kingdom

  4. Art Art

    This is a great tip particularly to those fresh to the
    blogosphere. Short but very precise information… Thanks for sharing this one.
    A must read post!

    Here is my web site: russian roulette game free online
    (Art)

  5. top 20 usa slots, united kingdom online casino free chip and new zealandn casino no deposit bonus codes, or online pokies australia
    wheres the gold

    Also visit my site … how did russian roulette begin [Justina]

  6. united kingdom online casino minimum deposit dollar 10,
    free 10 no deposit casino usa and canadian online casino game apps that pay real money (Levi) that accepts paypal,
    or online casino new usa

  7. australian online casino apps, no deposit sign up bonus casinos usa and how to
    ban someone from gambling (Timothy) to play online casino united states, or legal online casinos australia

  8. uk gambling triennial review, bonauka gambling machine and hausaos dojo slot online real money no deposit bonus, or best casino atlantico manati empleos
    Betty, cities in united
    kingdom

Leave a Reply

Your email address will not be published. Required fields are marked *