Add more missing function attributes to the TWI peripheral driver.
[pub/USBasp.git] / LUFA / Common / Attributes.h
index 8c40069..d6722a2 100644 (file)
 */
 
 /** \file
- *  \brief GCC special function/variable attribute macros.
+ *  \brief Special function/variable attribute macros.
  *
- *  \copydetails Group_GCCAttributes
+ *  \copydetails Group_FuncVarAttributes
  *
  *  \note Do not include this file directly, rather include the Common.h header file instead to gain this file's
  *        functionality.
  */
 
 /** \ingroup Group_Common
- *  \defgroup Group_GCCAttributes Function/Variable Attributes
- *  \brief GCC special function/variable attribute macros.
+ *  \defgroup Group_FuncVarAttributes Function/Variable Attributes
+ *  \brief Special function/variable attribute macros.
  *
- *  This module contains macros for applying GCC specific attributes to functions and variables to control various
- *  optimiser and code generation features of the compiler. Attributes may be placed in the function prototype
+ *  This module contains macros for applying specific attributes to functions and variables to control various
+ *  optimizer and code generation features of the compiler. Attributes may be placed in the function prototype
  *  or variable declaration in any order, and multiple attributes can be specified for a single item via a space
  *  separated list.
  *
                                 */
                                #define ATTR_NAKED                  __attribute__ ((naked))
 
-                               /** Prevents the compiler from considering a specified function for inlining. When applied, the given
-                                *  function will not be inlined under any circumstances.
+                               /** Prevents the compiler from considering a specified function for in-lining. When applied, the given
+                                *  function will not be in-lined under any circumstances.
                                 */
                                #define ATTR_NO_INLINE              __attribute__ ((noinline))
 
                                /** Forces the compiler to inline the specified function. When applied, the given function will be
-                                *  inlined under all circumstances.
+                                *  in-lined under all circumstances.
                                 */
                                #define ATTR_ALWAYS_INLINE          __attribute__ ((always_inline))
 
                         *  \param[in] Func  Name of the function which the given function name should alias.
                         */
                        #define ATTR_ALIAS(Func)               __attribute__ ((alias( #Func )))
+                       
+                       /** Marks a variable or struct element for packing into the smallest space available, omitting any
+                        *  alignment bytes usually added between fields to optimize field accesses.
+                        */
+                       #define ATTR_PACKED                     __attribute__ ((packed))
+
+                       /** Indicates the minimum alignment in bytes for a variable or struct element.
+                        * 
+                        *  \param[in] Bytes  Minimum number of bytes the item should be aligned to.
+                        */
+                       #define ATTR_ALIGNED(Bytes)            __attribute__ ((aligned(Bytes)))
 #endif
 
 /** @} */