Date: Tue, 09 Dec 2008 12:44:29 -0800 From: Marcel Moolenaar <xcllnt@mac.com> To: Scott Long <scottl@samsco.org> Cc: freebsd-current@freebsd.org, Mike Tancsa <mike@sentex.net> Subject: Re: uart vs sio differences ? Message-ID: <30BECC4D-DD91-4C13-8F0B-5A2AE59DFC5D@mac.com> In-Reply-To: <493ED621.5010006@samsco.org> References: <200812081621.mB8GLMxB041498@lava.sentex.ca> <ED8BC24F-EAC3-4266-AF54-4C6262DDC156@mac.com> <200812081906.mB8J6oha042222@lava.sentex.ca> <CF6E0ACA-CCFA-4A35-A88F-C95484309A78@mac.com> <200812082049.mB8KnHSN042710@lava.sentex.ca> <84A7F176-5A74-48AC-859A-C0D4C7CBCB48@mac.com> <7.1.0.9.0.20081208173515.13f62e88@sentex.net> <200812091457.mB9EvLSD047534@lava.sentex.ca> <493EA759.4000504@samsco.org> <0E8F5AD4-A139-413E-A760-A1BEDDF44BAA@mac.com> <493ED621.5010006@samsco.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Dec 9, 2008, at 12:33 PM, Scott Long wrote: > > Yup, my mistake. However, I think that the semaphore spinwait in > uart_sched_softih() is the source of the problems here. It's not a semaphore spinwait. It's just an atomic operation: 1. read old, 2. calculate new from old, 3. atomic_cmpset(old, new) 4. goto 1 if 3 fails. The loop iterates only if ttypend got changed between 1 and 3. There's no spinwaiting and no semaphore-like behaviour. FYI, -- Marcel Moolenaar xcllnt@mac.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?30BECC4D-DD91-4C13-8F0B-5A2AE59DFC5D>