Alignment of structure on a 64-bit machine

I have the following structure on a 64-bit Linux machine.

struct __wait_queue_head {
          spinlock_t lock;
          struct list_head task_list;
  };

where

typedef struct {
          raw_spinlock_t raw_lock;
  } spinlock_t;

and

struct list_head {
          struct list_head *next, *prev;
  };

raw_spinlock_t is defined as:

typedef struct {
          volatile unsigned int slock;
  } raw_spinlock_t;

Now I want to understand the alignment of the __wait_queue_head structure on a 64-bit Linux machine after the LP64 standard. From what I know, starting from the first field of this structure, i.e.

spinlock_t lock

- unsigned int, 4 64- , 4- . , , . 8- , 4- . , ? , . - , .

+3
1

. , struct list_head , struct list_head 8 . struct __wait_queue_head struct list_head, 8 . , , , , , .

+6

All Articles