Witam. Na wstępie sorki jesli umieściłem temat w złym miejscu. Mam problem z napisaniem nowego wywołania systemowego w minixie. Otóż wszystko jest ok dopóki nie przesyłam żadnych argumentów ani nie zwracam wartości. np :

void do_printmes()
{
        printf("Hello!");
        return;
}

Wtedy też po skompilowaiu jądra na nowo i wywołaniu systemu :

 ...
message m ;
_syscall(MM, 32 , &m);

Wszystko jest ok - komunikat wyświetla się. Nie wiem jednak jak poradzić sobie z przekazaniem argumentu do funkcji jak również zwróceniem go. Tzn np chodzi mi o funkcji typu : int foo( int arg ). Czytałem, że do przekazania używa się pola m1_i1 struktury message jednak przy funkcji :

int do_foo(int arg)
{
        return arg ;
}

i jej wywołaniu poprzez :

 ...
message m ;
m.m1_i1 = 4;
_syscall(MM, 32 , &m);

zamiast 4 lub jakiejkolwiek innej liczby zawsze wypisywanie jest 0. Czy mógłby mi ktoś podpowiedź jak to ma wyglądać dokładnie ?