[RAMEN9610-20413][9610] wlbt: SCSC Driver version 10.6.1.0
[GitHub/MotorolaMobilityLLC/kernel-slsi.git] / drivers / misc / samsung / scsc / scsc_log_collector_proc.h
1 /****************************************************************************
2 *
3 * Copyright (c) 2014 - 2018 Samsung Electronics Co., Ltd. All rights reserved
4 *
5 ****************************************************************************/
6
7 /*
8 * Chip Manager /proc interface
9 */
10 #include <linux/proc_fs.h>
11 #include <linux/version.h>
12 #include <linux/seq_file.h>
13
14 #ifndef SCSC_LOG_COLLECT_PROC_H
15 #define SCSC_LOG_COLLECT_PROC_H
16
17 #ifndef AID_MX
18 #define AID_MX 0444
19 #endif
20
21 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 9))
22 #define LOG_COLLECT_PDE_DATA(inode) PDE_DATA(inode)
23 #else
24 #define LOG_COLLECT_PDE_DATA(inode) (PDE(inode)->data)
25 #endif
26
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 \
35 }
36
37
38 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 9))
39 #define LOG_COLLECT_PROCFS_SET_UID_GID(_entry) \
40 do { \
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); \
44 } while (0)
45 #else
46 #define LOG_COLLECT_PROCFS_SET_UID_GID(entry) \
47 do { \
48 (entry)->uid = AID_MX; \
49 (entry)->gid = AID_MX; \
50 } while (0)
51 #endif
52
53 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 9))
54 #define LOG_COLLECT_PROCFS_ADD_FILE(_sdev, name, parent, mode) \
55 do { \
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); \
58 } while (0)
59 #else
60 #define LOG_COLLECT_PROCFS_ADD_FILE(_sdev, name, parent, mode) \
61 do { \
62 struct proc_dir_entry *entry; \
63 entry = create_proc_entry(# name, mode, parent); \
64 if (entry) { \
65 entry->proc_fops = &log_collect_procfs_ ## name ## _fops; \
66 entry->data = _sdev; \
67 LOG_COLLECT_PROCFS_SET_UID_GID(entry); \
68 } \
69 } while (0)
70 #endif
71
72 #define LOG_COLLECT_PROCFS_REMOVE_FILE(name, parent) remove_proc_entry(# name, parent)
73
74 int scsc_log_collect_proc_create(void);
75 void scsc_log_collect_proc_remove(void);
76
77 #endif /* SCSC_log_collect__PROC_H */