🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#178
Author: Bogdan (bogdro)
Date: Sun, 02 Apr 2006 14:34
51 lines
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