svn commit: r282988 - in head: include sys/sys

Pedro F. Giffuni pfg at FreeBSD.org
Fri May 15 20:43:38 UTC 2015


Author: pfg
Date: Fri May 15 20:43:37 2015
New Revision: 282988
URL: https://svnweb.freebsd.org/changeset/base/282988

Log:
  Make use of GCC alloc_align attribute
  
  This lets the compiler know about the alignment of pointers returned
  by aligned_alloc(3), posix_memalign(3). and contigmalloc(9)
  
  Currently this is only supported in recent gcc but we are ready to
  use it if clang implements it.
  
  Relnotes:	yes

Modified:
  head/include/stdlib.h
  head/sys/sys/malloc.h

Modified: head/include/stdlib.h
==============================================================================
--- head/include/stdlib.h	Fri May 15 19:51:05 2015	(r282987)
+++ head/include/stdlib.h	Fri May 15 20:43:37 2015	(r282988)
@@ -156,7 +156,8 @@ _Noreturn void	 _Exit(int);
  * If we're in a mode greater than C99, expose C11 functions.
  */
 #if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L
-void *	aligned_alloc(size_t, size_t) __malloc_like __alloc_size(2);
+void *	aligned_alloc(size_t, size_t) __malloc_like __alloc_align(1)
+	    __alloc_size(2);
 int	at_quick_exit(void (*)(void));
 _Noreturn void
 	quick_exit(int);
@@ -171,7 +172,7 @@ char	*realpath(const char * __restrict, 
 int	 rand_r(unsigned *);			/* (TSF) */
 #endif
 #if __POSIX_VISIBLE >= 200112
-int	 posix_memalign(void **, size_t, size_t) __nonnull(1)
+int	 posix_memalign(void **, size_t, size_t) __nonnull(1) __alloc_align(2)
 	    __alloc_size(3);			/* (ADV) */
 int	 setenv(const char *, const char *, int);
 int	 unsetenv(const char *);

Modified: head/sys/sys/malloc.h
==============================================================================
--- head/sys/sys/malloc.h	Fri May 15 19:51:05 2015	(r282987)
+++ head/sys/sys/malloc.h	Fri May 15 20:43:37 2015	(r282988)
@@ -174,7 +174,7 @@ void	contigfree(void *addr, unsigned lon
 void	*contigmalloc(unsigned long size, struct malloc_type *type, int flags,
 	    vm_paddr_t low, vm_paddr_t high, unsigned long alignment,
 	    vm_paddr_t boundary) __malloc_like __result_use_check
-	    __alloc_size(1);
+	    __alloc_size(1) __alloc_align(6);
 void	free(void *addr, struct malloc_type *type);
 void	*malloc(unsigned long size, struct malloc_type *type, int flags)
 	    __malloc_like __result_use_check __alloc_size(1);


More information about the svn-src-head mailing list