Mercurial > sdl-ios-xcode
diff include/SDL_atomic.h @ 3407:d3baf5ac4e37
Partial fix for bug #859
Header file update from Ken for improved doxygen output
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 19 Oct 2009 13:31:58 +0000 |
parents | 72b542f34739 |
children | f7b03b6838cb |
line wrap: on
line diff
--- a/include/SDL_atomic.h Sun Oct 18 23:21:15 2009 +0000 +++ b/include/SDL_atomic.h Mon Oct 19 13:31:58 2009 +0000 @@ -23,9 +23,19 @@ */ /** - * \file SDL_atomic.h - * - * Atomic operations. + * \file SDL_atomic.h + * + * Atomic operations. + * + * These operations may, or may not, actually be implemented using + * processor specific atomic operations. When possible they are + * implemented as true processor specific atomic operations. When that + * is not possible the are implemented using locks that *do* use the + * available atomic operations. + * + * At the very minimum spin locks must be implemented. Without spin + * locks it is not possible (AFAICT) to emulate the rest of the atomic + * operations. */ #ifndef _SDL_atomic_h_ @@ -43,176 +53,139 @@ /* *INDENT-ON* */ #endif -/** - * These operations may, or may not, actually be implemented using - * processor specific atomic operations. When possible they are - * implemented as true processor specific atomic operations. When that - * is not possible the are implemented using locks that *do* use the - * available atomic operations. - * - * At the very minimum spin locks must be implemented. Without spin - * locks it is not possible (AFAICT) to emulate the rest of the atomic - * operations. - */ - /* Function prototypes */ /** - * SDL AtomicLock. - * - * The spin lock functions and type are required and can not be - * emulated because they are used in the emulation code. + * \name SDL AtomicLock + * + * The spin lock functions and type are required and can not be + * emulated because they are used in the emulation code. */ +/*@{*/ typedef volatile Uint32 SDL_SpinLock; /** - * \fn void SDL_AtomicLock(SDL_SpinLock *lock); - * - * \brief Lock a spin lock by setting it to a none zero value. - * - * \param lock points to the lock. - * + * \brief Lock a spin lock by setting it to a none zero value. + * + * \param lock Points to the lock. */ extern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock); /** - * \fn void SDL_AtomicUnlock(SDL_SpinLock *lock); + * \brief Unlock a spin lock by setting it to 0. Always returns immediately * - * \brief Unlock a spin lock by setting it to 0. Always returns immediately - * - * \param lock points to the lock. - * + * \param lock Points to the lock. */ extern DECLSPEC void SDLCALL SDL_AtomicUnlock(SDL_SpinLock *lock); -/* 32 bit atomic operations */ +/*@}*//*SDL AtomicLock*/ /** - * \fn SDL_bool SDL_AtomicTestThenSet32(volatile Uint32 * ptr); - * - * \brief Check to see if *ptr == 0 and set it to 1. - * - * \return SDL_True if the value pointed to by ptr was zero and - * SDL_False if it was not zero - * - * \param ptr points to the value to be tested and set. - * + * \name 32 bit atomic operations + */ +/*@{*/ + +/** + * \brief Check to see if \c *ptr == 0 and set it to 1. + * + * \return SDL_True if the value pointed to by \c ptr was zero and + * SDL_False if it was not zero + * + * \param ptr Points to the value to be tested and set. */ extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTestThenSet32(volatile Uint32 * ptr); /** - * \fn void SDL_AtomicClear32(volatile Uint32 * ptr); - * - * \brief set the value pointed to by ptr to be zero. - * - * \param ptr address of the value to be set to zero - * + * \brief Set the value pointed to by \c ptr to be zero. + * + * \param ptr Address of the value to be set to zero */ extern DECLSPEC void SDLCALL SDL_AtomicClear32(volatile Uint32 * ptr); /** - * \fn Uint32 SDL_AtomicFetchThenIncrement32(volatile Uint32 * ptr); - * - * \brief fetch the current value of *ptr and then increment that - * value in place. - * - * \return the value before it was incremented. - * - * \param ptr address of the value to fetch and increment - * + * \brief Fetch the current value of \c *ptr and then increment that + * value in place. + * + * \return The value before it was incremented. + * + * \param ptr Address of the value to fetch and increment */ extern DECLSPEC Uint32 SDLCALL SDL_AtomicFetchThenIncrement32(volatile Uint32 * ptr); /** - * \fn Uint32 SDL_AtomicFetchThenDecrement32(volatile Uint32 * ptr); - * - * \brief fetch *ptr and then decrement the value in place. - * - * \return the value before it was decremented. - * - * \param ptr address of the value to fetch and drement - * + * \brief Fetch \c *ptr and then decrement the value in place. + * + * \return The value before it was decremented. + * + * \param ptr Address of the value to fetch and drement */ extern DECLSPEC Uint32 SDLCALL SDL_AtomicFetchThenDecrement32(volatile Uint32 * ptr); /** - * \fn Uint32 SDL_AtomicFetchThenAdd32(volatile Uint32 * ptr, Uint32 value); - * - * \brief fetch the current value at ptr and then add value to *ptr. - * - * \return *ptr before the addition took place. - * - * \param ptr the address of data we are changing. - * \param value the value to add to *ptr. - * + * \brief Fetch the current value at \c ptr and then add \c value to \c *ptr. + * + * \return \c *ptr before the addition took place. + * + * \param ptr The address of data we are changing. + * \param value The value to add to \c *ptr. */ extern DECLSPEC Uint32 SDLCALL SDL_AtomicFetchThenAdd32(volatile Uint32 * ptr, Uint32 value); /** - * \fn Uint32 SDL_AtomicFetchThenSubtract32(volatile Uint32 * ptr, Uint32 value); - * - * \brief Fetch *ptr and then subtract value from it. - * - * \return *ptr before the subtraction took place. - * - * \param ptr the address of the data being changed. - * \param value the value to subtract from *ptr. - * + * \brief Fetch \c *ptr and then subtract \c value from it. + * + * \return \c *ptr before the subtraction took place. + * + * \param ptr The address of the data being changed. + * \param value The value to subtract from \c *ptr. */ extern DECLSPEC Uint32 SDLCALL SDL_AtomicFetchThenSubtract32(volatile Uint32 * ptr, Uint32 value); /** - * \fn Uint32 SDL_AtomicIncrementThenFetch32(volatile Uint32 * ptr); - * - * \brief Add one to the data pointed to by ptr and return that value. - * - * \return the incremented value. - * - * \param ptr address of the data to increment. - * + * \brief Add one to the data pointed to by \c ptr and return that value. + * + * \return The incremented value. + * + * \param ptr The address of the data to increment. */ extern DECLSPEC Uint32 SDLCALL SDL_AtomicIncrementThenFetch32(volatile Uint32 * ptr); /** - * \fn Uint32 SDL_AtomicDecrementThenFetch32(volatile Uint32 * ptr); - * - * \brief Subtract one from data pointed to by ptr and return the new value. - * - * \return The decremented value. - * - * \param ptr The address of the data to decrement. - * + * \brief Subtract one from data pointed to by \c ptr and return the new value. + * + * \return The decremented value. + * + * \param ptr The address of the data to decrement. */ extern DECLSPEC Uint32 SDLCALL SDL_AtomicDecrementThenFetch32(volatile Uint32 * ptr); /** - * \fn Uint32 SDL_AtomicAddThenFetch32(volatile Uint32 * ptr, Uint32 value); - * - * \brief Add value to the data pointed to by ptr and return result. - * - * \return The sum of *ptr and value. - * - * \param ptr The address of the data to be modified. - * \param value The value to be added. - * + * \brief Add \c value to the data pointed to by \c ptr and return result. + * + * \return The sum of \c *ptr and \c value. + * + * \param ptr The address of the data to be modified. + * \param value The value to be added. */ extern DECLSPEC Uint32 SDLCALL SDL_AtomicAddThenFetch32(volatile Uint32 * ptr, Uint32 value); /** - * \fn Uint32 SDL_AtomicSubtractThenFetch32(volatile Uint32 * ptr, Uint32 value); - * - * \brief Subtract value from the data pointed to by ptr and return the result. - * - * \return the difference between *ptr and value. - * - * \param ptr The address of the data to be modified. - * \param value The value to be subtracted. - * + * \brief Subtract \c value from the data pointed to by \c ptr and return the result. + * + * \return The difference between \c *ptr and \c value. + * + * \param ptr The address of the data to be modified. + * \param value The value to be subtracted. */ extern DECLSPEC Uint32 SDLCALL SDL_AtomicSubtractThenFetch32(volatile Uint32 * ptr, Uint32 value); -/* 64 bit atomic operations */ +/*@}*//*32 bit atomic operations*/ + +/** + * \name 64 bit atomic operations + */ +/*@{*/ #ifdef SDL_HAS_64BIT_TYPE extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTestThenSet64(volatile Uint64 * ptr); @@ -227,6 +200,8 @@ extern DECLSPEC Uint64 SDLCALL SDL_AtomicSubtractThenFetch64(volatile Uint64 * ptr, Uint64 value); #endif /* SDL_HAS_64BIT_TYPE */ +/*@}*//*64 bit atomic operations*/ + /* Ends C function definitions when using C++ */ #ifdef __cplusplus /* *INDENT-OFF* */