rx: Add atomic operations code
authorSimon Wilkinson <sxw@your-file-system.com>
Tue, 28 Sep 2010 22:37:54 +0000 (23:37 +0100)
committerJeffrey Altman <jaltman@openafs.org>
Thu, 30 Sep 2010 13:07:04 +0000 (06:07 -0700)
commit513d6a3e35f8c35178e0a22428d616751251b51e
tree561458152682f350467887ce8dd04c104464a80a
parente9fafac6cba6e024f08e8743d60b7853a2940ba2
rx: Add atomic operations code

Add support for an atomic type, and atomic operators for RX. This
builds on work which has already been done for Windows, where
InterlockedOperations are used for statistics gathering.

A new opaque type, rx_atomic_t is introduced so that normal arithmetic
operations will fail on atomic data.

An implementation using native atomic methods is provided for Darwin,
Solaris and Windows. A native kernel implementation is used for Linux.
Where OpenAFS is built with a sufficiently modern gcc, gcc's atomic
primitives will be used. Sadly, gcc's builtin operations are not
available for i386, they will only be used with builds the set
-march=i486 (or later).

Otherwise, we fall back to a single mutex which protects all atomic
operations.

Change-Id: I5f69677a80617e3936f82b177cd58250a6dbf31f
Reviewed-on: http://gerrit.openafs.org/2858
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
acinclude.m4
src/rx/rx.c
src/rx/rx_atomic.h [new file with mode: 0644]