From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [MULTIBOOT2 DOC PATCH 08/10] multiboot2: Add C structure alignment and padding consideration section Date: Thu, 9 Jun 2016 22:30:42 +0200 Message-ID: <1465504244-17175-9-git-send-email-daniel.kiper@oracle.com> References: <1465504244-17175-1-git-send-email-daniel.kiper@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bB6cm-0004UC-7o for xen-devel@lists.xenproject.org; Thu, 09 Jun 2016 20:32:20 +0000 In-Reply-To: <1465504244-17175-1-git-send-email-daniel.kiper@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: grub-devel@gnu.org, xen-devel@lists.xenproject.org Cc: jgross@suse.com, eric.snowberg@oracle.com, arvidjaar@gmail.com, andrew.cooper3@citrix.com, seth.goldberg@oracle.com, phcoder@gmail.com List-Id: xen-devel@lists.xenproject.org U2lnbmVkLW9mZi1ieTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJAb3JhY2xlLmNvbT4KLS0t CiBkb2MvbXVsdGlib290LnRleGkgfCAgIDE3ICsrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hh bmdlZCwgMTcgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RvYy9tdWx0aWJvb3QudGV4aSBi L2RvYy9tdWx0aWJvb3QudGV4aQppbmRleCBjODFiMmVhLi5iZjAyYTFiIDEwMDY0NAotLS0gYS9k b2MvbXVsdGlib290LnRleGkKKysrIGIvZG9jL211bHRpYm9vdC50ZXhpCkBAIC0xMzg0LDYgKzEz ODQsNyBAQCBkb2N1bWVudCwgYnV0IGFyZSBpbmNsdWRlZCBmb3IgcHJvc3BlY3RpdmUgb3BlcmF0 aW5nIHN5c3RlbSBhbmQgYm9vdAogbG9hZGVyIHdyaXRlcnMuCiAKIEBtZW51CisqIEMgc3RydWN0 dXJlIGFsaWdubWVudCBhbmQgcGFkZGluZyBjb25zaWRlcmF0aW9uOjoKICogTm90ZXMgb24gUEM6 OiAgICAgICAgICAgICAgICAgCiAqIEJJT1MgZGV2aWNlIG1hcHBpbmcgdGVjaG5pcXVlczo6ICAK ICogRXhhbXBsZSBPUyBjb2RlOjogICAgICAgICAgICAgCkBAIC0xMzkxLDYgKzEzOTIsMjIgQEAg bG9hZGVyIHdyaXRlcnMuCiBAZW5kIG1lbnUKIAogCitAbm9kZSBDIHN0cnVjdHVyZSBhbGlnbm1l bnQgYW5kIHBhZGRpbmcgY29uc2lkZXJhdGlvbgorQHNlY3Rpb24gQyBzdHJ1Y3R1cmUgYWxpZ25t ZW50IGFuZCBwYWRkaW5nIGNvbnNpZGVyYXRpb24KKworTWFueSBDIGNvbXBpbGVycyB0cnkgdG8g b3B0aW1pemUgbWVtb3J5IGFjY2Vzc2VzIGFsaWduaW5nIHN0cnVjdHVyZQorbWVtYmVycyBwcm9w ZXJseS4gVXN1YWxseSB0aGV5IHJlYWNoIHRoZSBnb2FsIGJ5IGFkZGluZyBzb21lIHBhZGRpbmcu CitUaGlzIGlzIHZlcnkgdXNlZnVsIHRoaW5nIGluIGdlbmVyYWwuIEhvd2V2ZXIsIGlmIHlvdSB0 cnkgdG8gbWl4IGFzc2VtYmxlcgord2l0aCBDIG9yIHVzZSBDIHRvIGltcGxlbWVudCBzdHJ1Y3R1 cmUgbG93IGxldmVsIGFjY2VzcyB0aGlzIGJlaGF2aW9yCittYXkgbGVhZCwgYXQgbGVhc3QsIHRv IHF1aXRlIHN1cnByaXNpbmcgcmVzdWx0cy4gSGVuY2UsIGNvbXBpbGVyIHNob3VsZAorYmUgaW5z dHJ1Y3RlZCB0byBub3Qgb3B0aW1pemUgc3VjaCBhY2Nlc3Nlcy4gVXN1YWxseSBpdCBpcyBkb25l IGJ5IHNwZWNpYWwKK2F0dHJpYnV0ZSBhZGRlZCB0byBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiwgZS5n LiBHQ0MgY29tcGF0aWJsZSBzb3VyY2VzIHVzZQorQHNhbXB7X19hdHRyaWJ1dGVfXyAoKF9fcGFj a2VkX18pKX0gZm9yIHRoaXMgcHVycG9zZS4gSG93ZXZlciwgdGhpcyBpcyBub3QKK3JlcXVpcmVk IGlmIGl0IGlzIGtub3duIHRoYXQgaXRzIG1lbWJlcnMgYXJlIHByb3Blcmx5IGFsaWduZWQgYW5k IGNvbXBpbGVyCitkb2VzIG5vdCBkbyBhbnkgb3B0aW1pemF0aW9uLiBWZXJ5IGdvb2QgZXhhbXBs ZSBvZiB0aGlzIGlzIHNob3duIGJlbG93IGluCitAZmlsZXttdWx0aWJvb3QyLmh9IGZpbGUuCisK KwogQG5vZGUgTm90ZXMgb24gUEMKIEBzZWN0aW9uIE5vdGVzIG9uIFBDCiAKLS0gCjEuNy4xMC40 CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1bB6cj-0005Jc-Vj for mharc-grub-devel@gnu.org; Thu, 09 Jun 2016 16:32:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51728) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bB6ch-0005Gm-Ln for grub-devel@gnu.org; Thu, 09 Jun 2016 16:32:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bB6cf-00022u-Mz for grub-devel@gnu.org; Thu, 09 Jun 2016 16:32:14 -0400 Received: from aserp1040.oracle.com ([141.146.126.69]:19430) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bB6cf-00022q-Ea for grub-devel@gnu.org; Thu, 09 Jun 2016 16:32:13 -0400 Received: from userv0021.oracle.com (userv0021.oracle.com [156.151.31.71]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id u59KW6Pu024781 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 9 Jun 2016 20:32:06 GMT Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userv0021.oracle.com (8.13.8/8.13.8) with ESMTP id u59KW5kH000573 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 9 Jun 2016 20:32:06 GMT Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by aserv0122.oracle.com (8.13.8/8.13.8) with ESMTP id u59KW3dU030204; Thu, 9 Jun 2016 20:32:04 GMT Received: from olila.local.net-space.pl (/10.175.235.163) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 09 Jun 2016 13:32:02 -0700 From: Daniel Kiper To: grub-devel@gnu.org, xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, arvidjaar@gmail.com, eric.snowberg@oracle.com, jgross@suse.com, konrad.wilk@oracle.com, phcoder@gmail.com, seth.goldberg@oracle.com Subject: [MULTIBOOT2 DOC PATCH 08/10] multiboot2: Add C structure alignment and padding consideration section Date: Thu, 9 Jun 2016 22:30:42 +0200 Message-Id: <1465504244-17175-9-git-send-email-daniel.kiper@oracle.com> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1465504244-17175-1-git-send-email-daniel.kiper@oracle.com> References: <1465504244-17175-1-git-send-email-daniel.kiper@oracle.com> X-Source-IP: userv0021.oracle.com [156.151.31.71] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] X-Received-From: 141.146.126.69 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jun 2016 20:32:16 -0000 Signed-off-by: Daniel Kiper --- doc/multiboot.texi | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/doc/multiboot.texi b/doc/multiboot.texi index c81b2ea..bf02a1b 100644 --- a/doc/multiboot.texi +++ b/doc/multiboot.texi @@ -1384,6 +1384,7 @@ document, but are included for prospective operating system and boot loader writers. @menu +* C structure alignment and padding consideration:: * Notes on PC:: * BIOS device mapping techniques:: * Example OS code:: @@ -1391,6 +1392,22 @@ loader writers. @end menu +@node C structure alignment and padding consideration +@section C structure alignment and padding consideration + +Many C compilers try to optimize memory accesses aligning structure +members properly. Usually they reach the goal by adding some padding. +This is very useful thing in general. However, if you try to mix assembler +with C or use C to implement structure low level access this behavior +may lead, at least, to quite surprising results. Hence, compiler should +be instructed to not optimize such accesses. Usually it is done by special +attribute added to structure definition, e.g. GCC compatible sources use +@samp{__attribute__ ((__packed__))} for this purpose. However, this is not +required if it is known that its members are properly aligned and compiler +does not do any optimization. Very good example of this is shown below in +@file{multiboot2.h} file. + + @node Notes on PC @section Notes on PC -- 1.7.10.4