mirror of
https://github.com/postgres/postgres.git
synced 2026-04-22 06:37:06 -04:00
Use C11 alignas in typedef definitions
They were already using pg_attribute_aligned. This replaces that with alignas and moves that into the required syntactic position. Suggested-by: Peter Eisentraut <peter@eisentraut.org> Author: Bertrand Drouvot <bertranddrouvot.pg@gmail.com> Discussion: https://postgr.es/m/d7a788fa-e609-4894-a8be-2f70e135424f%40eisentraut.org
This commit is contained in:
parent
d7ad79e506
commit
5c2a8d272b
2 changed files with 12 additions and 13 deletions
|
|
@ -79,13 +79,15 @@ const IoMethodOps pgaio_uring_ops = {
|
|||
|
||||
/*
|
||||
* Per-backend state when using io_method=io_uring
|
||||
*
|
||||
* Align the whole struct to a cacheline boundary, to prevent false sharing
|
||||
* between completion_lock and prior backend's io_uring_ring.
|
||||
*/
|
||||
typedef struct pg_attribute_aligned (PG_CACHE_LINE_SIZE)
|
||||
PgAioUringContext
|
||||
typedef struct PgAioUringContext
|
||||
{
|
||||
/*
|
||||
* Align the whole struct to a cacheline boundary, to prevent false
|
||||
* sharing between completion_lock and prior backend's io_uring_ring.
|
||||
*/
|
||||
alignas(PG_CACHE_LINE_SIZE)
|
||||
|
||||
/*
|
||||
* Multiple backends can process completions for this backend's io_uring
|
||||
* instance (e.g. when the backend issuing IO is busy doing something
|
||||
|
|
|
|||
|
|
@ -180,6 +180,11 @@ typedef enum
|
|||
*/
|
||||
typedef struct PGPROC
|
||||
{
|
||||
/*
|
||||
* Align the struct at cache line boundaries. This is just for
|
||||
* performance, to avoid false sharing.
|
||||
*/
|
||||
alignas(PG_CACHE_LINE_SIZE)
|
||||
dlist_head *procgloballist; /* procglobal list that owns this PGPROC */
|
||||
dlist_node freeProcsLink; /* link in procgloballist, when in recycled
|
||||
* state */
|
||||
|
|
@ -375,14 +380,6 @@ typedef struct PGPROC
|
|||
|
||||
uint32 wait_event_info; /* proc's wait information */
|
||||
}
|
||||
|
||||
/*
|
||||
* If compiler understands aligned pragma, use it to align the struct at cache
|
||||
* line boundaries. This is just for performance, to avoid false sharing.
|
||||
*/
|
||||
#if defined(pg_attribute_aligned)
|
||||
pg_attribute_aligned(PG_CACHE_LINE_SIZE)
|
||||
#endif
|
||||
PGPROC;
|
||||
|
||||
extern PGDLLIMPORT PGPROC *MyProc;
|
||||
|
|
|
|||
Loading…
Reference in a new issue