1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2 /*
3 * Copyright (C) 2012-2014 Intel Corporation
4 * Copyright (C) 2013-2014 Intel Mobile Communications GmbH
5 */
6 #define MVM_DEBUGFS_READ_FILE_OPS(name) \
7 static const struct file_operations iwl_dbgfs_##name##_ops = { \
8 .read = iwl_dbgfs_##name##_read, \
9 .open = simple_open, \
10 .llseek = generic_file_llseek, \
11 }
12
13 #define MVM_DEBUGFS_WRITE_WRAPPER(name, buflen, argtype) \
14 static ssize_t _iwl_dbgfs_##name##_write(struct file *file, \
15 const char __user *user_buf, \
16 size_t count, loff_t *ppos) \
17 { \
18 argtype *arg = file->private_data; \
19 char buf[buflen] = {}; \
20 size_t buf_size = min(count, sizeof(buf) - 1); \
21 \
22 if (copy_from_user(buf, user_buf, buf_size)) \
23 return -EFAULT; \
24 \
25 return iwl_dbgfs_##name##_write(arg, buf, buf_size, ppos); \
26 } \
27
28 #define _MVM_DEBUGFS_READ_WRITE_FILE_OPS(name, buflen, argtype) \
29 MVM_DEBUGFS_WRITE_WRAPPER(name, buflen, argtype) \
30 static const struct file_operations iwl_dbgfs_##name##_ops = { \
31 .write = _iwl_dbgfs_##name##_write, \
32 .read = iwl_dbgfs_##name##_read, \
33 .open = simple_open, \
34 .llseek = generic_file_llseek, \
35 };
36
37 #define _MVM_DEBUGFS_WRITE_FILE_OPS(name, buflen, argtype) \
38 MVM_DEBUGFS_WRITE_WRAPPER(name, buflen, argtype) \
39 static const struct file_operations iwl_dbgfs_##name##_ops = { \
40 .write = _iwl_dbgfs_##name##_write, \
41 .open = simple_open, \
42 .llseek = generic_file_llseek, \
43 };
Cache object: bc81e1cb72523b50af1c17082834d392
|