X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fgallium%2Fauxiliary%2Futil%2Fu_pointer.h;h=4f7a27ca61d650d54bf9c9b70aa4af6c022bd3b0;hb=35fab1ba3395604f748cd13ba82991372ca0cae7;hp=e1af9f11cb9ced91f091bc104ed75e9aa27aedc5;hpb=2e28c1fda24988241ef7abb91b7d896e38f5df26;p=mesa.git diff --git a/src/gallium/auxiliary/util/u_pointer.h b/src/gallium/auxiliary/util/u_pointer.h index e1af9f11cb9..4f7a27ca61d 100644 --- a/src/gallium/auxiliary/util/u_pointer.h +++ b/src/gallium/auxiliary/util/u_pointer.h @@ -1,6 +1,6 @@ /************************************************************************** * - * Copyright 2007-2008 Tungsten Graphics, Inc., Cedar Park, Texas. + * Copyright 2007-2008 VMware, Inc. * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -18,7 +18,7 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR + * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -34,7 +34,7 @@ extern "C" { #endif -static INLINE intptr_t +static inline intptr_t pointer_to_intptr( const void *p ) { union { @@ -45,7 +45,7 @@ pointer_to_intptr( const void *p ) return pi.i; } -static INLINE void * +static inline void * intptr_to_pointer( intptr_t i ) { union { @@ -56,7 +56,7 @@ intptr_to_pointer( intptr_t i ) return pi.p; } -static INLINE uintptr_t +static inline uintptr_t pointer_to_uintptr( const void *ptr ) { union { @@ -67,7 +67,7 @@ pointer_to_uintptr( const void *ptr ) return pu.u; } -static INLINE void * +static inline void * uintptr_to_pointer( uintptr_t u ) { union { @@ -81,7 +81,7 @@ uintptr_to_pointer( uintptr_t u ) /** * Return a pointer aligned to next multiple of N bytes. */ -static INLINE void * +static inline void * align_pointer( const void *unaligned, uintptr_t alignment ) { uintptr_t aligned = (pointer_to_uintptr( unaligned ) + alignment - 1) & ~(alignment - 1); @@ -92,12 +92,35 @@ align_pointer( const void *unaligned, uintptr_t alignment ) /** * Return a pointer aligned to next multiple of 16 bytes. */ -static INLINE void * +static inline void * align16( void *unaligned ) { return align_pointer( unaligned, 16 ); } +typedef void (*func_pointer)(void); + +static inline func_pointer +pointer_to_func( void *p ) +{ + union { + void *p; + func_pointer f; + } pf; + pf.p = p; + return pf.f; +} + +static inline void * +func_to_pointer( func_pointer f ) +{ + union { + void *p; + func_pointer f; + } pf; + pf.f = f; + return pf.p; +} #ifdef __cplusplus