<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
              "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>Attributes of Types</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>                                    
        <refentrytitle>Attributes of Types</refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2010</year>
                <holder>The Khronos Group Inc. 
 Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.</holder>
            </copyright>
        </refmiscinfo>
        <manvolnum>3</manvolnum>
    </refmeta>

<!-- ================================ SYNOPSIS -->

    <refnamediv id="Attributes of Types">             
        <refname>Attributes of Types</refname>

        <refpurpose>
            Attributes of Types.
        </refpurpose>
    </refnamediv>

    <!-- ALTERNATIVE SYNTAX SYNOPSIS (NON-FUNCTION) -->
    <refsect2 id="synopsis">
        <title>
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
__attribute__ ((aligned))
__attribute__ ((aligned (<varname>n</varname>)))
__attribute__ ((packed))
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>


<!-- ================================ DESCRIPTION  -->

    <refsect1 id="description"><title>Description</title>
        <para>
The keyword <constant>__attribute__</constant> allows you
to specify special attributes of <code>enum</code>, <code>struct</code> and
<code>union</code> types when you define such types.
This keyword is followed by an attribute
specification inside double parentheses. Two attributes
are currently defined for types: aligned,
and packed.
        </para>

        <para>
You may specify type attributes in an <code>enum</code>,
<code>struct</code> or <code>union</code> type declaration or definition,
or for other types in a <code>typedef</code> declaration.
        </para>

        <para>
For an <code>enum</code>, <code>struct</code> or
<code>union</code> type, you may specify attributes
either between the <code>enum</code>,
<code>struct</code> or <code>union</code> tag
and the name of the type, or just past the closing curly brace of the
<emphasis>definition</emphasis>. The former syntax is preferred.
        </para>

    </refsect1> 
        
         
<refsect2 id="aligned"><title>aligned (<varname>alignment</varname>)</title> 
    <!-- Using refsect2 so we can have shaded backgrounds behind examples  -->
        <para>
The attribute <constant>aligned (<emphasis>alignment</emphasis>)</constant> specifies a minimum alignment (in bytes) for variables of the specified type. For example, the declarations:
        </para>
<para>
        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>    <code>struct S { short f[3]; } __attribute__ ((aligned (8)));
    typedef int more_aligned_int __attribute__ ((aligned (8)));</code></entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>        
</para>     
        <para>
force the compiler to ensure (as far as it can) that each variable whose type is
<code>struct S</code> or <code>more_aligned_int</code>
will be allocated and aligned <emphasis>at least</emphasis> on a
8-byte boundary.
        </para>

        <para>
Note that the alignment of any given <code>struct</code>
or <code>union</code> type is required by the ISO C
standard to be at least a perfect multiple of the lowest common multiple of the alignments
of all of the members of the <code>struct</code> or
<code>union</code> in question and must also be a power of
two. This means that you <emphasis>can</emphasis>
effectively adjust the alignment of a <code>struct</code> or <code>union</code>
type by attaching an aligned attribute to any one of the members of such a type, but the
notation illustrated in the example above is a more obvious, intuitive, and readable way to
request the compiler to adjust the alignment of an entire
<code>struct</code> or <code>union</code> type.
        </para>

        <para>
As in the preceding example, you can explicitly specify the alignment (in bytes) that you
wish the compiler to use for a given
<code>struct</code> or <code>union</code> type. Alternatively, you can
leave out the alignment factor and just ask the compiler to align a type to the maximum
useful alignment for the target machine you are compiling for. For example, you could
write:
        </para>
<para>
        
         <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>    <code>struct S { short f[3]; } __attribute__ ((aligned));</code></entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>    
</para>

        <para>
Whenever you leave out the alignment factor in an <code>aligned</code>
attribute specification, the
compiler automatically sets the alignment for the type to the largest alignment which is
ever used for any data type on the target machine you are compiling for. In the example
above, the size of each <code>short</code> is 2 bytes,
and therefore the size of the entire <code>struct S</code>
type is 6 bytes. The smallest power of two which is greater than or equal to that is 8, so
the compiler sets the alignment for the entire <code>struct S</code> type to 8 bytes.
        </para>

        <para>
Note that the effectiveness of aligned attributes may be limited by inherent limitations of
the OpenCL device and compiler. For some devices, the OpenCL compiler may only be
able to arrange for variables to be aligned up to a certain maximum alignment. If the
OpenCL compiler is only able to align variables up to a maximum of 8 byte alignment,
then specifying <code>aligned(16)</code> in an <code>__attribute__</code>
will still only provide you with
8 byte alignment. See your platform-specific documentation for further information.
        </para>

        <para>
The <code>aligned</code> attribute can only increase the alignment;
but you can decrease it by
specifying <code>packed</code> as well. See below.
        </para>
        </refsect2> 
<refsect2 id="packed"><title>packed</title> 
    <!-- Using refsect2 so we can have shaded backgrounds behind examples  -->

        <para>
The <constant>packed</constant> attribute, attached to the <code>struct</code> or <code>union</code>
type definition, specifies that each member of the structure or union is placed to minimize the memory required. When
attached to an <code>enum</code> definition, it indicates that the smallest integral type should be used.
        </para>

        <para>
Specifying this attribute for <code>struct</code> and
<code>union</code> types is equivalent to specifying
the <code>packed</code> attribute on each of the structure or union members.
        </para>

        <para>
In the following example <code>struct my_packed_struct</code>'s members are
packed closely together, but the internal
layout of its <code>s</code> member is not packed. To
do that, <code>struct my_unpacked_struct</code> would need to be packed, too.
        </para>
<para>      
         <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>    <code>struct my_unpacked_struct
    {
        char c;
        int i;
    };

    struct __attribute__ ((packed)) my_packed_struct
    {
        char c;
        int i;
        struct my_unpacked_struct s;
    };</code></entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>            
</para>     

        
        <para>
You may only specify this attribute on the definition of a
<code>enum</code>, <code>struct</code>, or
<code>union</code>, not on a <code>typedef</code>
which does not also define the enumerated type,
structure or union.
        </para>

    </refsect2>


<!-- ================================ EXAMPLE  -->
<!-- DO NOT DELETE IN CASE AN EXAMPLE IS ADDED IN THE FUTURE -->
<!--
    <refsect2 id="example1">
        <title>
            Example
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
                            Example goes here - it will be set in "code" type with white space preserved.
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>
-->


<!-- ================================ SPECIFICATION  -->
<!-- Set the "uri" attribute in the <olink /> element to the "named destination" for the PDF page
-->
    <refsect1 id="specification"><title>Specification</title>
        <para>
            <imageobject>
                <imagedata fileref="pdficon_small1.gif" format="gif" />
            </imageobject>
                                                 
            <olink uri="attributes-types">OpenCL Specification</olink>
        </para>
    </refsect1>


<!-- ================================ ALSO SEE  -->

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry href="attribute"><refentrytitle>__attribute__</refentrytitle></citerefentry>, 
            <citerefentry href="attributes-blocksAndControlFlow"><refentrytitle>Blocks and Control-Flow Statement Attributes Attributes</refentrytitle></citerefentry>,  
            <citerefentry href="attributes-variables"><refentrytitle>Variable Attributes</refentrytitle></citerefentry>
        </para>     
        
        
    </refsect1>



<!-- ============================== COPYRIGHT -->
<!-- Content included from copyright.inc.xsl -->

    <refsect3 id="Copyright"><title></title>
        <imageobject>
                <imagedata fileref="KhronosLogo.jpg" format="jpg" />
        </imageobject>
        <para />
    </refsect3>

</refentry>

