Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 Jan 2001 09:49:26 -0800 (PST)
From:      Matt Dillon <dillon@earth.backplane.com>
To:        Mark Murray <mark@grondar.za>
Cc:        John Baldwin <jhb@FreeBSD.ORG>, jake@FreeBSD.ORG, cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG
Subject:   Re: Atomic ops (Was Re: cvs commit: src/sys/i386/include atomic. 
Message-ID:  <200101161749.f0GHnQD14640@earth.backplane.com>
References:  <XFMail.010116002609.jhb@FreeBSD.org>  <200101160844.f0G8iFI31923@gratis.grondar.za>

next in thread | previous in thread | raw e-mail | index | archive | help
:...
:> you had a circular buffer, and you used one atomic operation to increment the
:> index, that would be better.  The tophalf would just have to always use atomic
:> ops when acessing the index as well.
:
:OK! That's what I was thinking of, but I'd have to do a (non barrier)
:test-and-set operation in the harvester _and_ the top half (I think).
:
:This is going to be a nasty problem, as the harvesting action requires a
:little bit of work, and there is a lot of potential for multiple
:harvesters to stomp all over each other.
:
:M
:-- 
:Mark Murray

    A bottom half / top half circular FIFO does not need to use atomic ops
    at all.  The writer simply manipulates the WIndex and the reader
    simply manipulates the RIndex.  If you have multiple readers or 
    multiple writers, then you have a locking issue, but if you don't there
    are no issues.

    On a non-intel box that does not guarentee write ordering, you would
    need a memory barrier function prior to updating the WIndex to
    ensure that the FIFO data is in place as of the time the reader tests
    its RIndex against the WIndex.

						-Matt



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200101161749.f0GHnQD14640>