Article View: pl.comp.lang.asm
Article #178int 80h w modułach jądra 2.4
From: 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
Technical Details
Message-ID:
<e0ondi$iu6$1@atlantis.news.tpi.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail From: "Bogdan (bogdro)" <bogdan@bogdan.pl> Newsgroups: pl.comp.lang.asm Subject: int 80h w modułach jądra 2.4 Date: Sun, 02 Apr 2006 16:34:02 +0200 Organization: tp.internet - http://www.tpi.pl/ Lines: 51 Message-ID: <e0ondi$iu6$1@atlantis.news.tpi.pl> NNTP-Posting-Host: acsy205.neoplus.adsl.tpnet.pl Mime-Version: 1.0 X-Trace: atlantis.news.tpi.pl 1143988466 19398 83.11.52.205 (2 Apr 2006 14:34:26 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Sun, 2 Apr 2006 14:34:26 +0000 (UTC) User-Agent: Thunderbird 1.5 (X11/20051201) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit