Thread

  1. Re: Non-reproducible AIO failure

    Konstantin Knizhnik <knizhnik@garret.ru> — 2025-09-03T18:50:42Z

    On 03/09/2025 8:37 PM, Dmitry Mityugov wrote:
    > Quite inspiring discussion. The patch is brilliantly good but it adds 
    > a bunch of explicit type casts, and it's not always easy to remember 
    > what cast to use in a particular case, and that may eventually lead to 
    > errors in the future. Just wanted to add that when 64-bit code is 
    > generated, uint8s are probably aligned to 64-bit boundaries for 
    > structures that contain other 64-bit members like pointers, and bit 
    > fields are not (and they may not have an address at all). To align bit 
    > fields properly, anonymous bit fields probably can be used, or unions 
    > containing the bitfields together with uint8s, to avoid the explicit 
    > casts, like in this example:
    >
    > struct Foo {
    >     union {
    >         char a:8;
    >         char aa;
    >     };
    >     char b:8;
    >     int* c;
    > };
    >
    > Regards,
    >
    
    Size of PgAioHandle is144 bytes. I wonder how critical for us is to save 
    9 bytes for it (3 bytes vs 3 integers)?
    Why not to use normal enums instead of bitfields and uint8 with type casts?