On 6/14/13 9:38 AM, Luigi Rizzo wrote:
On Fri, Jun 14, 2013 at 12:07:29PM -0400, John Baldwin wrote:
On Wednesday, June 12, 2013 2:36:52 pm Alfred Perlstein wrote:
On 6/12/13 11:01 AM, Luigi Rizzo wrote:
hi,
is it possible to run copyin() or copyout() in one of these cases:
1. while holding a spinlock
2. while holding a regular mutex/lock
3. while holding a read lock (on an RWLOCK or RMLOCK)
4. while holding a write lock (on an RWLOCK or RMLOCK)
I suspect #1 is forbidden, but am a bit unclear for the
other cases.
No on all of the above unless the memory is wired.
ok i suppose i'll move to an sx lock, which i have been told
allows me to sleep ?
My use case is that while i run the copyin(), and possibly take a
page fault, nobody destroys the destination buffer. So i wanted
to hold a read lock (sx_slock() ?) in the thread doing the copy
(there may be several writers to different parts of the destination),
and a write lock (sx_xlock() ?) for the other thread which may
destroy the buffer.
We may be putting cart before horse, or horse into cart or something. :)
You may want to just wire the user buffer so it can't get ripped out
from under you.
See John's email which may be helpful to do that.
--
Alfred Perlstein
VP Software Engineering, iXsystems
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"