Re: copyin()/copyout() constraints ?

看板FB_current作者時間12年前 (2013/06/15 06:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串6/10 (看更多)
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-unsubscribe@freebsd.org"
文章代碼(AID): #1HkvAUV5 (FB_current)
討論串 (同標題文章)
文章代碼(AID): #1HkvAUV5 (FB_current)