proc_dir_entryRegular
4.4: ✅struct proc_dir_entry {
unsigned int low_ino;
umode_t mode;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
const struct inode_operations *proc_iops;
const struct file_operations *proc_fops;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
void *data;
atomic_t count;
atomic_t in_use;
struct completion *pde_unload_completion;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
u8 namelen;
char name[0];
};
4.8: ✅struct proc_dir_entry {
unsigned int low_ino;
umode_t mode;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
const struct inode_operations *proc_iops;
const struct file_operations *proc_fops;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
void *data;
atomic_t count;
atomic_t in_use;
struct completion *pde_unload_completion;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
u8 namelen;
char name[0];
};
4.10: ✅struct proc_dir_entry {
unsigned int low_ino;
umode_t mode;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
const struct inode_operations *proc_iops;
const struct file_operations *proc_fops;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
void *data;
atomic_t count;
atomic_t in_use;
struct completion *pde_unload_completion;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
u8 namelen;
char name[0];
};
4.13: ✅struct proc_dir_entry {
unsigned int low_ino;
umode_t mode;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
const struct inode_operations *proc_iops;
const struct file_operations *proc_fops;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
void *data;
atomic_t count;
atomic_t in_use;
struct completion *pde_unload_completion;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
u8 namelen;
char name[0];
};
4.15: ✅struct proc_dir_entry {
unsigned int low_ino;
umode_t mode;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
const struct inode_operations *proc_iops;
const struct file_operations *proc_fops;
struct proc_dir_entry *parent;
struct rb_root_cached subdir;
struct rb_node subdir_node;
void *data;
atomic_t count;
atomic_t in_use;
struct completion *pde_unload_completion;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
u8 namelen;
char name[0];
};
4.18: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct file_operations *proc_fops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 namelen;
char inline_name[0];
};
5.0: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct file_operations *proc_fops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 namelen;
char inline_name[0];
};
5.3: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct file_operations *proc_fops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 namelen;
char inline_name[0];
};
5.4: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct file_operations *proc_fops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 namelen;
char inline_name[0];
};
5.8: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct proc_ops *proc_ops;
const struct file_operations *proc_dir_ops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 flags;
u8 namelen;
char inline_name[0];
};
5.11: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct proc_ops *proc_ops;
const struct file_operations *proc_dir_ops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 flags;
u8 namelen;
char inline_name[0];
};
5.13: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct proc_ops *proc_ops;
const struct file_operations *proc_dir_ops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 flags;
u8 namelen;
char inline_name[0];
};
5.15: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct proc_ops *proc_ops;
const struct file_operations *proc_dir_ops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 flags;
u8 namelen;
char inline_name[0];
};
5.19: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct proc_ops *proc_ops;
const struct file_operations *proc_dir_ops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 flags;
u8 namelen;
char inline_name[0];
};
6.2: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct proc_ops *proc_ops;
const struct file_operations *proc_dir_ops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 flags;
u8 namelen;
char inline_name[0];
};
6.5: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct proc_ops *proc_ops;
const struct file_operations *proc_dir_ops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 flags;
u8 namelen;
char inline_name[0];
};
6.8: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct proc_ops *proc_ops;
const struct file_operations *proc_dir_ops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 flags;
u8 namelen;
char inline_name[0];
};
arm64: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct file_operations *proc_fops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 namelen;
char inline_name[0];
};
armhf: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct file_operations *proc_fops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 namelen;
char inline_name[0];
};
ppc64el: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct file_operations *proc_fops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 namelen;
char inline_name[0];
};
riscv64: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct file_operations *proc_fops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 namelen;
char inline_name[0];
};
aws: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct file_operations *proc_fops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 namelen;
char inline_name[0];
};
azure: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct file_operations *proc_fops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 namelen;
char inline_name[0];
};
gcp: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct file_operations *proc_fops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 namelen;
char inline_name[0];
};
lowlatency: ✅struct proc_dir_entry {
atomic_t in_use;
refcount_t refcnt;
struct list_head pde_openers;
spinlock_t pde_unload_lock;
struct completion *pde_unload_completion;
const struct inode_operations *proc_iops;
const struct file_operations *proc_fops;
const struct dentry_operations *proc_dops;
const struct seq_operations *seq_ops;
int (*single_show)(struct seq_file *, void *);
proc_write_t write;
void *data;
unsigned int state_size;
unsigned int low_ino;
nlink_t nlink;
kuid_t uid;
kgid_t gid;
loff_t size;
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
char *name;
umode_t mode;
u8 namelen;
char inline_name[0];
};
Regular
4.4 and 4.8 ✅
4.8 and 4.10 ✅
4.10 and 4.13 ✅
4.13 and 4.15 ⚠️struct rb_root subdir ➡️ struct rb_root_cached subdir
4.15 and 4.18 ⚠️refcount_t refcnt
const struct seq_operations *seq_ops
int (*single_show)(struct seq_file *, void *)
proc_write_t write
unsigned int state_size
char inline_name[0]
atomic_t count
struct rb_root_cached subdir ➡️ struct rb_root subdir
char name[0] ➡️ char *name
4.18 and 5.0 ⚠️const struct dentry_operations *proc_dops
5.0 and 5.3 ✅
5.3 and 5.4 ✅
5.4 and 5.8 ⚠️const struct proc_ops *proc_ops
const struct file_operations *proc_dir_ops
u8 flags
const struct file_operations *proc_fops
5.8 and 5.11 ✅
5.11 and 5.13 ✅
5.13 and 5.15 ✅
5.15 and 5.19 ✅
5.19 and 6.2 ✅
6.2 and 6.5 ✅
6.5 and 6.8 ✅
amd64 and arm64 ✅
amd64 and armhf ✅
amd64 and ppc64el ✅
amd64 and riscv64 ✅
generic and aws ✅
generic and azure ✅
generic and gcp ✅
generic and lowlatency ✅