Re: [Mesa3d-dev] [PATCH] Gallium: Add Solaris atomic function definitions to u_atomic.h

2010-02-05 Thread Jose Fonseca
I think nested extern "C" is alright. The problem I hit was that the header 
provided some optional C++ interfaces, and the compiler barfed at having C++ 
inside extern "C" { .. }.

Jose


From: alan.coopersm...@sun.com [alan.coopersm...@sun.com]
Sent: Saturday, February 06, 2010 6:00
To: Jose Fonseca
Cc: mesa3d-dev@lists.sourceforge.net
Subject: Re: [Mesa3d-dev] [PATCH] Gallium: Add Solaris atomic   function    
definitions to u_atomic.h

Jose Fonseca wrote:
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +#include 
>
> It's probably fine for Solaris, but putting OS includes inside extern "C" 
> sometimes causes problems -- it does with certain MS headers.
>
> Other than that it looks fine.

Hmm, hadn't thought about it - do C++ compilers get upset if you have nested
extern "C" blocks?   The entire atomic.h header is already inside one so could
move out without issue:

http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/sys/atomic.h

--
-Alan Coopersmith-   alan.coopersm...@sun.com
 Sun Microsystems, Inc. - X Window System Engineering


--
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] [PATCH] Gallium: Add Solaris atomic function definitions to u_atomic.h

2010-02-05 Thread Alan Coopersmith
Jose Fonseca wrote:
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +#include 
> 
> It's probably fine for Solaris, but putting OS includes inside extern "C" 
> sometimes causes problems -- it does with certain MS headers.
> 
> Other than that it looks fine.

Hmm, hadn't thought about it - do C++ compilers get upset if you have nested
extern "C" blocks?   The entire atomic.h header is already inside one so could
move out without issue:

http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/sys/atomic.h

-- 
-Alan Coopersmith-   alan.coopersm...@sun.com
 Sun Microsystems, Inc. - X Window System Engineering


--
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] [PATCH] Gallium: Add Solaris atomic function definitions to u_atomic.h

2010-02-05 Thread Jose Fonseca


From: Alan Coopersmith [alan.coopersm...@sun.com]
Sent: Saturday, February 06, 2010 3:37
To: mesa3d-dev@lists.sourceforge.net
Cc: Alan Coopersmith
Subject: [Mesa3d-dev] [PATCH] Gallium: Add Solaris atomic function  
definitions to u_atomic.h

Signed-off-by: Alan Coopersmith 
---
 src/gallium/auxiliary/util/u_atomic.h |   36 -
 1 files changed, 35 insertions(+), 1 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_atomic.h 
b/src/gallium/auxiliary/util/u_atomic.h
index 540112f..e4750c0 100644
--- a/src/gallium/auxiliary/util/u_atomic.h
+++ b/src/gallium/auxiliary/util/u_atomic.h
@@ -20,7 +20,9 @@
  */
 #if (defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY) || \
  defined(PIPE_SUBSYSTEM_WINDOWS_MINIPORT))
-#define PIPE_ATOMIC_OS_UNLOCKED
+#define PIPE_ATOMIC_OS_UNLOCKED
+#elif defined(PIPE_OS_SOLARIS)
+#define PIPE_ATOMIC_OS_SOLARIS
 #elif defined(PIPE_CC_MSVC)
 #define PIPE_ATOMIC_MSVC_INTRINSIC
 #elif (defined(PIPE_CC_MSVC) && defined(PIPE_ARCH_X86))
@@ -260,6 +262,38 @@ p_atomic_cmpxchg(int32_t *v, int32_t old, int32_t _new)

 #endif

+#if defined(PIPE_ATOMIC_OS_SOLARIS)
+
+#define PIPE_ATOMIC "Solaris OS atomic functions"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include 

It's probably fine for Solaris, but putting OS includes inside extern "C" 
sometimes causes problems -- it does with certain MS headers.

Other than that it looks fine.

Jose



+
+#define p_atomic_set(_v, _i) (*(_v) = (_i))
+#define p_atomic_read(_v) (*(_v))
+
+static INLINE boolean
+p_atomic_dec_zero(int32_t *v)
+{
+   uint32_t n = atomic_dec_32_nv((uint32_t *) v);
+
+   return n != 0;
+}
+
+#define p_atomic_inc(_v) atomic_inc_32((uint32_t *) _v)
+#define p_atomic_dec(_v) atomic_dec_32((uint32_t *) _v)
+
+#define p_atomic_cmpxchg(_v, _old, _new) \
+   atomic_cas_32( (uint32_t *) _v, (uint32_t) _old, (uint32_t) _new)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif


 #ifndef PIPE_ATOMIC
--
1.5.6.5


--
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

--
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev