xebd / accel-ppp

High performance PPTP/L2TP/PPPoE/IPoE server for Linux
GNU General Public License v2.0
299 stars 107 forks source link

mempool: add some padding to ensure correct alignment #142

Open laarmen opened 4 years ago

laarmen commented 4 years ago

The _item_t structure is 64-bit aligned on 64-bit architectures, whereas the allocated structures might very well be 32-bit aligned if, for instance, they only hold integer values. This patch ensures that we round up the size to a multiple of the natural alignment of the item structure, thus ensuring that two consecutive items are properly aligned.

Unaligned access to non-packed structures is undefined behavior. On Intel processors, unaligned access can result in those accesses being much slower than normal. On some other architectures, it could simply crash the program :-).

Caveat: technically, the stdalign.h headers are part of C11