Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 May 2015 20:43:38 +0000 (UTC)
From:      "Pedro F. Giffuni" <pfg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r282988 - in head: include sys/sys
Message-ID:  <201505152043.t4FKhcMR072296@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201505152043.t4FKhcMR072296>