|
|
|
@ -443,41 +443,62 @@ static struct re_auto_array streams; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static const struct file_operations proc_control_ops = { |
|
|
|
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) |
|
|
|
# define PROC_OP_STRUCT file_operations |
|
|
|
# define PROC_OWNER \ |
|
|
|
.owner = THIS_MODULE, |
|
|
|
.read = proc_control_read, |
|
|
|
.write = proc_control_write, |
|
|
|
.open = proc_control_open, |
|
|
|
.release = proc_control_close, |
|
|
|
# define PROC_READ read |
|
|
|
# define PROC_WRITE write |
|
|
|
# define PROC_OPEN open |
|
|
|
# define PROC_RELEASE release |
|
|
|
# define PROC_LSEEK llseek |
|
|
|
# define PROC_POLL poll |
|
|
|
#else |
|
|
|
# define PROC_OP_STRUCT proc_ops |
|
|
|
# define PROC_OWNER 0, |
|
|
|
# define PROC_READ proc_read |
|
|
|
# define PROC_WRITE proc_write |
|
|
|
# define PROC_OPEN proc_open |
|
|
|
# define PROC_RELEASE proc_release |
|
|
|
# define PROC_LSEEK proc_lseek |
|
|
|
# define PROC_POLL proc_poll |
|
|
|
#endif |
|
|
|
|
|
|
|
static const struct PROC_OP_STRUCT proc_control_ops = { |
|
|
|
PROC_OWNER |
|
|
|
.PROC_READ = proc_control_read, |
|
|
|
.PROC_WRITE = proc_control_write, |
|
|
|
.PROC_OPEN = proc_control_open, |
|
|
|
.PROC_RELEASE = proc_control_close, |
|
|
|
}; |
|
|
|
|
|
|
|
static const struct file_operations proc_main_control_ops = { |
|
|
|
.owner = THIS_MODULE, |
|
|
|
.write = proc_main_control_write, |
|
|
|
.open = proc_generic_open_modref, |
|
|
|
.release = proc_generic_close_modref, |
|
|
|
static const struct PROC_OP_STRUCT proc_main_control_ops = { |
|
|
|
PROC_OWNER |
|
|
|
.PROC_WRITE = proc_main_control_write, |
|
|
|
.PROC_OPEN = proc_generic_open_modref, |
|
|
|
.PROC_RELEASE = proc_generic_close_modref, |
|
|
|
}; |
|
|
|
|
|
|
|
static const struct file_operations proc_status_ops = { |
|
|
|
.owner = THIS_MODULE, |
|
|
|
.read = proc_status, |
|
|
|
.open = proc_generic_open_modref, |
|
|
|
.release = proc_generic_close_modref, |
|
|
|
static const struct PROC_OP_STRUCT proc_status_ops = { |
|
|
|
PROC_OWNER |
|
|
|
.PROC_READ = proc_status, |
|
|
|
.PROC_OPEN = proc_generic_open_modref, |
|
|
|
.PROC_RELEASE = proc_generic_close_modref, |
|
|
|
}; |
|
|
|
|
|
|
|
static const struct file_operations proc_list_ops = { |
|
|
|
.owner = THIS_MODULE, |
|
|
|
.open = proc_list_open, |
|
|
|
.read = seq_read, |
|
|
|
.llseek = seq_lseek, |
|
|
|
.release = proc_generic_seqrelease_modref, |
|
|
|
static const struct PROC_OP_STRUCT proc_list_ops = { |
|
|
|
PROC_OWNER |
|
|
|
.PROC_OPEN = proc_list_open, |
|
|
|
.PROC_READ = seq_read, |
|
|
|
.PROC_LSEEK = seq_lseek, |
|
|
|
.PROC_RELEASE = proc_generic_seqrelease_modref, |
|
|
|
}; |
|
|
|
|
|
|
|
static const struct file_operations proc_blist_ops = { |
|
|
|
.owner = THIS_MODULE, |
|
|
|
.open = proc_blist_open, |
|
|
|
.read = proc_blist_read, |
|
|
|
.release = proc_blist_close, |
|
|
|
static const struct PROC_OP_STRUCT proc_blist_ops = { |
|
|
|
PROC_OWNER |
|
|
|
.PROC_OPEN = proc_blist_open, |
|
|
|
.PROC_READ = proc_blist_read, |
|
|
|
.PROC_RELEASE = proc_blist_close, |
|
|
|
}; |
|
|
|
|
|
|
|
static const struct seq_operations proc_list_seq_ops = { |
|
|
|
@ -487,12 +508,12 @@ static const struct seq_operations proc_list_seq_ops = { |
|
|
|
.show = proc_list_show, |
|
|
|
}; |
|
|
|
|
|
|
|
static const struct file_operations proc_main_list_ops = { |
|
|
|
.owner = THIS_MODULE, |
|
|
|
.open = proc_main_list_open, |
|
|
|
.read = seq_read, |
|
|
|
.llseek = seq_lseek, |
|
|
|
.release = proc_generic_seqrelease_modref, |
|
|
|
static const struct PROC_OP_STRUCT proc_main_list_ops = { |
|
|
|
PROC_OWNER |
|
|
|
.PROC_OPEN = proc_main_list_open, |
|
|
|
.PROC_READ = seq_read, |
|
|
|
.PROC_LSEEK = seq_lseek, |
|
|
|
.PROC_RELEASE = proc_generic_seqrelease_modref, |
|
|
|
}; |
|
|
|
|
|
|
|
static const struct seq_operations proc_main_list_seq_ops = { |
|
|
|
@ -502,12 +523,12 @@ static const struct seq_operations proc_main_list_seq_ops = { |
|
|
|
.show = proc_main_list_show, |
|
|
|
}; |
|
|
|
|
|
|
|
static const struct file_operations proc_stream_ops = { |
|
|
|
.owner = THIS_MODULE, |
|
|
|
.read = proc_stream_read, |
|
|
|
.poll = proc_stream_poll, |
|
|
|
.open = proc_stream_open, |
|
|
|
.release = proc_stream_close, |
|
|
|
static const struct PROC_OP_STRUCT proc_stream_ops = { |
|
|
|
PROC_OWNER |
|
|
|
.PROC_READ = proc_stream_read, |
|
|
|
.PROC_POLL = proc_stream_poll, |
|
|
|
.PROC_OPEN = proc_stream_open, |
|
|
|
.PROC_RELEASE = proc_stream_close, |
|
|
|
}; |
|
|
|
|
|
|
|
static const struct re_cipher re_ciphers[] = { |
|
|
|
@ -689,7 +710,7 @@ static inline struct proc_dir_entry *proc_mkdir_user(const char *name, umode_t m |
|
|
|
return ret; |
|
|
|
} |
|
|
|
static inline struct proc_dir_entry *proc_create_user(const char *name, umode_t mode, |
|
|
|
struct proc_dir_entry *parent, const struct file_operations *ops, |
|
|
|
struct proc_dir_entry *parent, const struct PROC_OP_STRUCT *ops, |
|
|
|
void *ptr) |
|
|
|
{ |
|
|
|
struct proc_dir_entry *ret; |
|
|
|
|