1 /****************************************************************************
3 * Copyright (c) 2014 - 2018 Samsung Electronics Co., Ltd. All rights reserved
5 ****************************************************************************/
8 * Chip Manager /proc interface
10 #include <linux/proc_fs.h>
11 #include <linux/version.h>
12 #include <linux/seq_file.h>
14 #ifndef SCSC_LOG_COLLECT_PROC_H
15 #define SCSC_LOG_COLLECT_PROC_H
21 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 9))
22 #define LOG_COLLECT_PDE_DATA(inode) PDE_DATA(inode)
24 #define LOG_COLLECT_PDE_DATA(inode) (PDE(inode)->data)
27 #define LOG_COLLECT_PROCFS_RW_FILE_OPS(name) \
28 static ssize_t log_collect_procfs_ ## name ## _write(struct file *file, const char __user *user_buf, size_t count, loff_t *ppos); \
29 static ssize_t log_collect_procfs_ ## name ## _read(struct file *file, char __user *user_buf, size_t count, loff_t *ppos); \
30 static const struct file_operations log_collect_procfs_ ## name ## _fops = { \
31 .read = log_collect_procfs_ ## name ## _read, \
32 .write = log_collect_procfs_ ## name ## _write, \
33 .open = log_collect_procfs_open_file_generic, \
34 .llseek = generic_file_llseek \
38 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 9))
39 #define LOG_COLLECT_PROCFS_SET_UID_GID(_entry) \
41 kuid_t proc_kuid = KUIDT_INIT(AID_MX); \
42 kgid_t proc_kgid = KGIDT_INIT(AID_MX); \
43 proc_set_user(_entry, proc_kuid, proc_kgid); \
46 #define LOG_COLLECT_PROCFS_SET_UID_GID(entry) \
48 (entry)->uid = AID_MX; \
49 (entry)->gid = AID_MX; \
53 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 9))
54 #define LOG_COLLECT_PROCFS_ADD_FILE(_sdev, name, parent, mode) \
56 struct proc_dir_entry *entry = proc_create_data(# name, mode, parent, &log_collect_procfs_ ## name ## _fops, _sdev); \
57 LOG_COLLECT_PROCFS_SET_UID_GID(entry); \
60 #define LOG_COLLECT_PROCFS_ADD_FILE(_sdev, name, parent, mode) \
62 struct proc_dir_entry *entry; \
63 entry = create_proc_entry(# name, mode, parent); \
65 entry->proc_fops = &log_collect_procfs_ ## name ## _fops; \
66 entry->data = _sdev; \
67 LOG_COLLECT_PROCFS_SET_UID_GID(entry); \
72 #define LOG_COLLECT_PROCFS_REMOVE_FILE(name, parent) remove_proc_entry(# name, parent)
74 int scsc_log_collect_proc_create(void);
75 void scsc_log_collect_proc_remove(void);
77 #endif /* SCSC_log_collect__PROC_H */