srcu_structRegular
4.4: ✅struct srcu_struct {
long unsigned int completed;
struct srcu_struct_array *per_cpu_ref;
spinlock_t queue_lock;
bool running;
struct rcu_batch batch_queue;
struct rcu_batch batch_check0;
struct rcu_batch batch_check1;
struct rcu_batch batch_done;
struct delayed_work work;
};
4.8: ✅struct srcu_struct {
long unsigned int completed;
struct srcu_struct_array *per_cpu_ref;
spinlock_t queue_lock;
bool running;
struct rcu_batch batch_queue;
struct rcu_batch batch_check0;
struct rcu_batch batch_check1;
struct rcu_batch batch_done;
struct delayed_work work;
};
4.10: ✅struct srcu_struct {
long unsigned int completed;
struct srcu_struct_array *per_cpu_ref;
spinlock_t queue_lock;
bool running;
struct rcu_batch batch_queue;
struct rcu_batch batch_check0;
struct rcu_batch batch_check1;
struct rcu_batch batch_done;
struct delayed_work work;
};
4.13: ✅struct srcu_struct {
struct srcu_node node[521];
struct srcu_node * level[4];
struct mutex srcu_cb_mutex;
raw_spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_last_gp_end;
struct srcu_data *sda;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
struct delayed_work work;
};
4.15: ✅struct srcu_struct {
struct srcu_node node[521];
struct srcu_node * level[4];
struct mutex srcu_cb_mutex;
raw_spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_last_gp_end;
struct srcu_data *sda;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
struct delayed_work work;
};
4.18: ✅struct srcu_struct {
struct srcu_node node[521];
struct srcu_node * level[4];
struct mutex srcu_cb_mutex;
spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_last_gp_end;
struct srcu_data *sda;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
struct delayed_work work;
};
5.0: ✅struct srcu_struct {
struct srcu_node node[521];
struct srcu_node * level[4];
struct mutex srcu_cb_mutex;
spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_last_gp_end;
struct srcu_data *sda;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
struct delayed_work work;
};
5.3: ✅struct srcu_struct {
struct srcu_node node[521];
struct srcu_node * level[4];
struct mutex srcu_cb_mutex;
spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_last_gp_end;
struct srcu_data *sda;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
struct delayed_work work;
};
5.4: ✅struct srcu_struct {
struct srcu_node node[521];
struct srcu_node * level[4];
struct mutex srcu_cb_mutex;
spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_last_gp_end;
struct srcu_data *sda;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
struct delayed_work work;
};
5.8: ✅struct srcu_struct {
struct srcu_node node[521];
struct srcu_node * level[4];
struct mutex srcu_cb_mutex;
spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_last_gp_end;
struct srcu_data *sda;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
struct delayed_work work;
};
5.11: ✅struct srcu_struct {
struct srcu_node node[521];
struct srcu_node * level[4];
struct mutex srcu_cb_mutex;
spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_last_gp_end;
struct srcu_data *sda;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
struct delayed_work work;
};
5.13: ✅struct srcu_struct {
struct srcu_node node[521];
struct srcu_node * level[4];
struct mutex srcu_cb_mutex;
spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_last_gp_end;
struct srcu_data *sda;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
struct delayed_work work;
};
5.15: ✅struct srcu_struct {
struct srcu_node node[521];
struct srcu_node * level[4];
struct mutex srcu_cb_mutex;
spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_last_gp_end;
struct srcu_data *sda;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
struct delayed_work work;
struct lockdep_map dep_map;
};
5.19: ✅struct srcu_struct {
struct srcu_node *node;
struct srcu_node * level[4];
int srcu_size_state;
struct mutex srcu_cb_mutex;
spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_gp_start;
long unsigned int srcu_last_gp_end;
long unsigned int srcu_size_jiffies;
long unsigned int srcu_n_lock_retries;
long unsigned int srcu_n_exp_nodelay;
struct srcu_data *sda;
bool sda_is_static;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
long unsigned int reschedule_jiffies;
long unsigned int reschedule_count;
struct delayed_work work;
struct lockdep_map dep_map;
};
6.2: ✅struct srcu_struct {
struct srcu_node *node;
struct srcu_node * level[4];
int srcu_size_state;
struct mutex srcu_cb_mutex;
spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_gp_start;
long unsigned int srcu_last_gp_end;
long unsigned int srcu_size_jiffies;
long unsigned int srcu_n_lock_retries;
long unsigned int srcu_n_exp_nodelay;
struct srcu_data *sda;
bool sda_is_static;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
long unsigned int reschedule_jiffies;
long unsigned int reschedule_count;
struct delayed_work work;
struct lockdep_map dep_map;
};
6.5: ✅struct srcu_struct {
unsigned int srcu_idx;
struct srcu_data *sda;
struct lockdep_map dep_map;
struct srcu_usage *srcu_sup;
};
6.8: ✅struct srcu_struct {
unsigned int srcu_idx;
struct srcu_data *sda;
struct lockdep_map dep_map;
struct srcu_usage *srcu_sup;
};
arm64: ✅struct srcu_struct {
struct srcu_node node[17];
struct srcu_node * level[3];
struct mutex srcu_cb_mutex;
spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_last_gp_end;
struct srcu_data *sda;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
struct delayed_work work;
};
armhf: ✅struct srcu_struct {
struct srcu_node node[1];
struct srcu_node * level[2];
struct mutex srcu_cb_mutex;
spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_last_gp_end;
struct srcu_data *sda;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
struct delayed_work work;
};
ppc64el: ✅struct srcu_struct {
struct srcu_node node[131];
struct srcu_node * level[4];
struct mutex srcu_cb_mutex;
spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_last_gp_end;
struct srcu_data *sda;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
struct delayed_work work;
};
riscv64: ✅struct srcu_struct {
struct srcu_node node[1];
struct srcu_node * level[2];
struct mutex srcu_cb_mutex;
spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_last_gp_end;
struct srcu_data *sda;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
struct delayed_work work;
};
aws: ✅struct srcu_struct {
struct srcu_node node[521];
struct srcu_node * level[4];
struct mutex srcu_cb_mutex;
spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_last_gp_end;
struct srcu_data *sda;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
struct delayed_work work;
};
azure: ✅struct srcu_struct {
struct srcu_node node[521];
struct srcu_node * level[4];
struct mutex srcu_cb_mutex;
spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_last_gp_end;
struct srcu_data *sda;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
struct delayed_work work;
};
gcp: ✅struct srcu_struct {
struct srcu_node node[521];
struct srcu_node * level[4];
struct mutex srcu_cb_mutex;
spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_last_gp_end;
struct srcu_data *sda;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
struct delayed_work work;
};
lowlatency: ✅struct srcu_struct {
struct srcu_node node[521];
struct srcu_node * level[4];
struct mutex srcu_cb_mutex;
spinlock_t lock;
struct mutex srcu_gp_mutex;
unsigned int srcu_idx;
long unsigned int srcu_gp_seq;
long unsigned int srcu_gp_seq_needed;
long unsigned int srcu_gp_seq_needed_exp;
long unsigned int srcu_last_gp_end;
struct srcu_data *sda;
long unsigned int srcu_barrier_seq;
struct mutex srcu_barrier_mutex;
struct completion srcu_barrier_completion;
atomic_t srcu_barrier_cpu_cnt;
struct delayed_work work;
};
Regular
4.4 and 4.8 ✅
4.8 and 4.10 ✅
4.10 and 4.13 ⚠️struct srcu_node node[521]
struct srcu_node * level[4]
struct mutex srcu_cb_mutex
raw_spinlock_t lock
struct mutex srcu_gp_mutex
unsigned int srcu_idx
long unsigned int srcu_gp_seq
long unsigned int srcu_gp_seq_needed
long unsigned int srcu_gp_seq_needed_exp
long unsigned int srcu_last_gp_end
struct srcu_data *sda
long unsigned int srcu_barrier_seq
struct mutex srcu_barrier_mutex
struct completion srcu_barrier_completion
atomic_t srcu_barrier_cpu_cnt
long unsigned int completed
struct srcu_struct_array *per_cpu_ref
spinlock_t queue_lock
bool running
struct rcu_batch batch_queue
struct rcu_batch batch_check0
struct rcu_batch batch_check1
struct rcu_batch batch_done
4.13 and 4.15 ✅
4.15 and 4.18 ⚠️raw_spinlock_t lock ➡️ spinlock_t lock
4.18 and 5.0 ✅
5.0 and 5.3 ✅
5.3 and 5.4 ✅
5.4 and 5.8 ✅
5.8 and 5.11 ✅
5.11 and 5.13 ✅
5.13 and 5.15 ⚠️struct lockdep_map dep_map
5.15 and 5.19 ⚠️int srcu_size_state
long unsigned int srcu_gp_start
long unsigned int srcu_size_jiffies
long unsigned int srcu_n_lock_retries
long unsigned int srcu_n_exp_nodelay
bool sda_is_static
long unsigned int reschedule_jiffies
long unsigned int reschedule_count
struct srcu_node node[521] ➡️ struct srcu_node *node
5.19 and 6.2 ✅
6.2 and 6.5 ⚠️struct srcu_usage *srcu_sup
struct srcu_node *node
struct srcu_node * level[4]
int srcu_size_state
struct mutex srcu_cb_mutex
spinlock_t lock
struct mutex srcu_gp_mutex
long unsigned int srcu_gp_seq
long unsigned int srcu_gp_seq_needed
long unsigned int srcu_gp_seq_needed_exp
long unsigned int srcu_gp_start
long unsigned int srcu_last_gp_end
long unsigned int srcu_size_jiffies
long unsigned int srcu_n_lock_retries
long unsigned int srcu_n_exp_nodelay
bool sda_is_static
long unsigned int srcu_barrier_seq
struct mutex srcu_barrier_mutex
struct completion srcu_barrier_completion
atomic_t srcu_barrier_cpu_cnt
long unsigned int reschedule_jiffies
long unsigned int reschedule_count
struct delayed_work work
6.5 and 6.8 ✅
amd64 and arm64 ⚠️struct srcu_node node[521] ➡️ struct srcu_node node[17]
struct srcu_node * level[4] ➡️ struct srcu_node * level[3]
amd64 and armhf ⚠️struct srcu_node node[521] ➡️ struct srcu_node node[1]
struct srcu_node * level[4] ➡️ struct srcu_node * level[2]
amd64 and ppc64el ⚠️struct srcu_node node[521] ➡️ struct srcu_node node[131]
amd64 and riscv64 ⚠️struct srcu_node node[521] ➡️ struct srcu_node node[1]
struct srcu_node * level[4] ➡️ struct srcu_node * level[2]
generic and aws ✅
generic and azure ✅
generic and gcp ✅
generic and lowlatency ✅