13d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh#ifndef _FS_CEPH_DEBUGFS_H
23d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh#define _FS_CEPH_DEBUGFS_H
33d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh
43d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh#include "ceph_debug.h"
53d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh#include "types.h"
63d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh
73d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh#define CEPH_DEFINE_SHOW_FUNC(name)					\
83d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadehstatic int name##_open(struct inode *inode, struct file *file)		\
93d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh{									\
103d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh	struct seq_file *sf;						\
113d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh	int ret;							\
123d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh									\
133d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh	ret = single_open(file, name, NULL);				\
143d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh	sf = file->private_data;					\
153d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh	sf->private = inode->i_private;					\
163d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh	return ret;							\
173d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh}									\
183d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh									\
193d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadehstatic const struct file_operations name##_fops = {			\
203d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh	.open		= name##_open,					\
213d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh	.read		= seq_read,					\
223d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh	.llseek		= seq_lseek,					\
233d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh	.release	= single_release,				\
243d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh};
253d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh
263d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh/* debugfs.c */
273d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadehextern int ceph_debugfs_init(void);
283d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadehextern void ceph_debugfs_cleanup(void);
293d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadehextern int ceph_debugfs_client_init(struct ceph_client *client);
303d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadehextern void ceph_debugfs_client_cleanup(struct ceph_client *client);
313d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh
323d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh#endif
333d14c5d2b6e15c21d8e5467dc62d33127c23a644Yehuda Sadeh
34