![]() |
|||||
|
00001 /* ///////////////////////////////////////////////////////////////////////// 00002 * File: asm/atomic.h 00003 * 00004 * Purpose: Declaration of Linux like atomic functions for the 00005 * Win32 platform. 00006 * 00007 * Created: 21st November 2003 00008 * Updated: 12th August 2010 00009 * 00010 * Home: http://synesis.com.au/software/ 00011 * 00012 * Copyright (c) 2003-2010, Matthew Wilson and Synesis Software 00013 * All rights reserved. 00014 * 00015 * Redistribution and use in source and binary forms, with or without 00016 * modification, are permitted provided that the following conditions are met: 00017 * 00018 * - Redistributions of source code must retain the above copyright notice, this 00019 * list of conditions and the following disclaimer. 00020 * - Redistributions in binary form must reproduce the above copyright notice, 00021 * this list of conditions and the following disclaimer in the documentation 00022 * and/or other materials provided with the distribution. 00023 * - Neither the names of Matthew Wilson and Synesis Software nor the names of 00024 * any contributors may be used to endorse or promote products derived from 00025 * this software without specific prior written permission. 00026 * 00027 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00028 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00029 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00030 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 00031 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 00032 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 00033 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00034 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00035 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00036 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00037 * POSSIBILITY OF SUCH DAMAGE. 00038 * 00039 * ////////////////////////////////////////////////////////////////////// */ 00040 00041 00042 #ifndef SYNSOFT_UNIXEM_INCL_SYS_H_ATOMIC 00043 #define SYNSOFT_UNIXEM_INCL_SYS_H_ATOMIC 00044 00045 #ifndef UNIXEM_DOCUMENTATION_SKIP_SECTION 00046 # define SYNSOFT_UNIXEM_VER_SYS_H_ATOMIC_MAJOR 3 00047 # define SYNSOFT_UNIXEM_VER_SYS_H_ATOMIC_MINOR 0 00048 # define SYNSOFT_UNIXEM_VER_SYS_H_ATOMIC_REVISION 1 00049 # define SYNSOFT_UNIXEM_VER_SYS_H_ATOMIC_EDIT 18 00050 #endif /* !UNIXEM_DOCUMENTATION_SKIP_SECTION */ 00051 00052 /* ///////////////////////////////////////////////////////////////////////// 00053 * Includes 00054 */ 00055 00056 #include <unixem/asm/atomic.h> 00057 00058 /* ////////////////////////////////////////////////////////////////////// */ 00059 00060 #ifndef _WIN32 00061 # error This file is only currently defined for compilation on Win32 systems 00062 #endif /* _WIN32 */ 00063 00064 /* ///////////////////////////////////////////////////////////////////////// 00065 * Typedefs 00066 */ 00067 00068 typedef unixem_atomic_t atomic_t; 00069 00070 /* ///////////////////////////////////////////////////////////////////////// 00071 * API functions 00072 */ 00073 00074 #ifdef __cplusplus 00075 extern "C" { 00076 #endif /* __cplusplus */ 00077 00078 #define ATOMIC_INIT(i) UNIXEM_ATOMIC_INIT(i) 00079 00080 #define atomic_set unixem_atomic_set 00081 #define atomic_write unixem_atomic_write 00082 #define atomic_read unixem_atomic_read 00083 #define atomic_add unixem_atomic_add 00084 #define atomic_sub unixem_atomic_sub 00085 #define atomic_inc unixem_atomic_inc 00086 #define atomic_dec unixem_atomic_dec 00087 00088 #define atomic_inc_and_test unixem_atomic_inc_and_test 00089 00090 #define atomic_dec_and_test unixem_atomic_dec_and_test 00091 00092 #define atomic_add_and_test unixem_atomic_add_and_test 00093 00094 #define atomic_sub_and_test unixem_atomic_sub_and_test 00095 00096 #ifdef __cplusplus 00097 } 00098 #endif /* __cplusplus */ 00099 00100 /* ////////////////////////////////////////////////////////////////////// */ 00101 00102 #endif /* SYNSOFT_UNIXEM_INCL_SYS_H_ATOMIC */ 00103 00104 /* ///////////////////////////// end of file //////////////////////////// */
|
UNIX Emulation for Win32 Libraries documentation © Synesis Software Pty Ltd, 2002-2010 |