Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Apr 2006 15:45:42 +0300
From:      Nickolas <nickolas@atlas.ua>
To:        freebsd-drivers@freebsd.org
Subject:   Context switching
Message-ID:  <637898557.20060410154542@atlas.ua>

next in thread | raw e-mail | index | archive | help
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@atlas.ua






Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?637898557.20060410154542>