Skip site navigation (1)Skip section navigation (2)
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>