Date: Mon, 31 Oct 2005 15:47:05 -0500 From: John Baldwin <jhb@freebsd.org> To: freebsd-current@freebsd.org Cc: freebsd <freebsd-net@freebsd.org>, Vaibhave Agarwal <vaibhave@cs.utah.edu>, Robert Watson <rwatson@freebsd.org>, current@freebsd.org Subject: Re: How to call a function in the kernel from Local APIC timer handler Message-ID: <200510311547.07571.jhb@freebsd.org> In-Reply-To: <Pine.LNX.4.61.0510281621120.19263@trust.cs.utah.edu> References: <20051027233636.GA39380@dmw.hopto.org> <20051028105057.J20147@fledge.watson.org> <Pine.LNX.4.61.0510281621120.19263@trust.cs.utah.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 28 October 2005 07:39 pm, Vaibhave Agarwal wrote: > Hi, I need some help with the new local APIC functionality added in > FreeBSD 6.0 and above. > > All the code which I am writing is in FreeBSD kernel. > > I was using LAPIC one shot timer for scheduling some events in the kernel. > The problem is that I cannot call the function in my code, directly from > the APIC timer handler, because all the interrupts are disabled in the > APIC timer handler ( function is lapic_handle_timer() ), and my function > uses a sleep mutex to protect the kernel code I have written. > Therefore, I schedule a software interrupt thread, which calls my function > later in time. > Is there a way, I can call my function instantly from the > lapic_handle_timer, bcoz using the software interrupt thread, decreases > the accuracy of the scheduler i am using. You can use spin mutexes rather than sleep mutexes in the lapic_handle_timer() context. If you need msleep/wakeup() functionality you can provide that using the sleepq(9) interface directly. -- John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200510311547.07571.jhb>