Thread (82 messages) 82 messages, 11 authors, 2013-01-07

Re: [PATCH v2 03/44] Add CONFIG_HAVE_64BIT_ALIGNED_STRUCT for taskstats

From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: 2012-12-10 12:55:44
Also in: lkml

On Mon, Dec 10, 2012 at 11:22 AM, James Hogan [off-list ref] wrote:
On 08/12/12 03:43, H. Peter Anvin wrote:
quoted
On 12/05/2012 08:08 AM, James Hogan wrote:
quoted
On 64 bit architectures with no efficient unaligned access, taskstats
has to add some padding to a reply to prevent unaligned access warnings.
However this also needs to apply to 32 bit architectures with 64 bit
struct alignment such as metag (which has 64 bit memory accesses).
Wait... 64-bit struct alignment on structures with only 32-bit members?
 That might be... interesting... in a number of places...
I'll rewrite the description as it's a bit misleading. On metag 64bit
struct alignment is required when it contains 64bit members, not if it
only contains 32bit members. Although metag is a 32bit arch, it can do
64bit memory accesses which must be aligned.
The C alignment rules should take care of this automatically (struct alignment
is the maximum alignment of its members).

You only have to override this manually in cases like this, where
64-bit quantities
are stored in char arrays:

 struct buffer_data_page {
        u64              time_stamp;    /* page time stamp */
        local_t          commit;        /* write committed index */
-       unsigned char    data[];        /* data of buffer page */
+       unsigned char    data[] RB_ALIGN_DATA;  /* data of buffer page */
 };

(cfr. your other patch).

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help