Thread View: pl.comp.lang.asm
1 messages
1 total messages
Started by Bogdan (bogdro)
Sun, 02 Apr 2006 14:34
int 80h w modułach jądra 2.4
Author: Bogdan (bogdro)
Date: Sun, 02 Apr 2006 14:34
Date: Sun, 02 Apr 2006 14:34
51 lines
2578 bytes
2578 bytes
Witam.
Zabrałem się właśnie za zabawę z modułami jądra Linuksa. Na pierwszy
ogień poszło jądro 2.4, bo łatwe :). Poza tym, że NASMowe moduły nie
chcą się ładować, mam gorszy problem. Mianowicie, chcę w czasie
ładowania modułu wywołać sys_mknod do utworzenia urządzenia znakowego:
S_IFCHR = 20000o
sys_mknod = 14
makedev24 [major], 0
mov eax, sys_mknod
mov ebx, sciezka
mov ecx, S_IFCHR or 666o
int 80h
[major] zawiera numer główny urządzenia (przydzielony przez
register_chrdev), numer poboczny biorę 0. Makro makedev działa tak:
macro makedev24 maj, min
{
xor esi, esi
mov edx, maj
shl edx, 8
or edx, min
}
Rzecz w tym, że kod ten w osobnym normalnym programie, uruchamianym
jako root, działa. Urządzenie się tworzy (tylko prawa ma 644, ale to
pewnie kwestia umask) i ma podane przeze mnie numer główny i poboczny.
Natomiast w module mknod() ciągle zwraca -14 (EFAULT, zły adres). Zmienna
sciezka db "/dev/test00", 0
jest w sekcji zapisywalnych danych, przenoszenie do sekcji kodu nie
pomaga.
Cały kod to żadna tajemnica (oba w składni FASM):
Moduł: http://rudy.mif.pg.gda.pl/~bogdro/modul_dev_fasm.asm
Tester (działa): http://rudy.mif.pg.gda.pl/~bogdro/test_mknod24.asm
Jeśli to skończę, to wyląduje w moim kursie, bo po to (i dla siebie)
to robię. Tylko właśnie ten "drobiazg" mi nie działa. Spotkał się ktoś
z czymś takim?
--
Pozdrawiam, Bogdan (Linux i FreeDOS)
Kurs assemblera x86 (DOS i Linuks): http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm: pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
Prawdziwy, bezpieczny komunikator: www.JabberPL.org
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads