Context switching
Nickolas
nickolas at atlas.ua
Mon Apr 10 12:53:47 UTC 2006
Hello All!
I'm porting a CPI card driver from linux to FreeBSD.
Some initialization routines require much time (~1-2 seconds).
Initialization of hardware should be done during opening device
special file. So, I need to switch thread context.
I'm doing it in such way:
mi_switch(SW_VOL, choosethread());
Main trouble: system panic after program exit.
dmesg output:
--------------------------
Fatal trap 12: page fault while in user mode
fault virtual address = 0xbfbfe5bc
fault code = user write, protection violation
instruction pointer = 0x1f:0x8074604
stack pointer = 0x2f:0xbfbfe5c0
frame pointer = 0x2f:0xbfbfe5f8
code segment = base 0xc090f8c0, limit 0x0, type 0x13
= DPL 0, pres 1, def32 1, gran 1
processor eflags = interrupt enabled, resume, IOPL = 0
current process = 472 (bash)
trap number = 12
panic: page fault
--------------------------
Please, tell how correct context switching should be implemented?
OS version: FreeBSD 5.4
--
Best regards,
Nickolas mailto:nickolas at atlas.ua
More information about the freebsd-drivers
mailing list