| Michael Holzheu | 24bbb1f | 2006-06-23 02:05:06 -0700 | [diff] [blame] | 1 | /* | 
| Michael Holzheu | f19bfb2 | 2006-09-20 15:58:44 +0200 | [diff] [blame] | 2 | *  arch/s390/hypfs/hypfs.h | 
| Michael Holzheu | 24bbb1f | 2006-06-23 02:05:06 -0700 | [diff] [blame] | 3 | *    Hypervisor filesystem for Linux on s390. | 
|  | 4 | * | 
|  | 5 | *    Copyright (C) IBM Corp. 2006 | 
|  | 6 | *    Author(s): Michael Holzheu <holzheu@de.ibm.com> | 
|  | 7 | */ | 
|  | 8 |  | 
|  | 9 | #ifndef _HYPFS_H_ | 
|  | 10 | #define _HYPFS_H_ | 
|  | 11 |  | 
|  | 12 | #include <linux/fs.h> | 
|  | 13 | #include <linux/types.h> | 
| Michael Holzheu | 57b28f6 | 2010-05-17 10:00:20 +0200 | [diff] [blame] | 14 | #include <linux/debugfs.h> | 
| Michael Holzheu | 2fcb368 | 2011-01-05 12:47:43 +0100 | [diff] [blame] | 15 | #include <linux/workqueue.h> | 
|  | 16 | #include <linux/kref.h> | 
| Michael Holzheu | 24bbb1f | 2006-06-23 02:05:06 -0700 | [diff] [blame] | 17 |  | 
|  | 18 | #define REG_FILE_MODE    0440 | 
|  | 19 | #define UPDATE_FILE_MODE 0220 | 
|  | 20 | #define DIR_MODE         0550 | 
|  | 21 |  | 
|  | 22 | extern struct dentry *hypfs_mkdir(struct super_block *sb, struct dentry *parent, | 
|  | 23 | const char *name); | 
|  | 24 |  | 
|  | 25 | extern struct dentry *hypfs_create_u64(struct super_block *sb, | 
|  | 26 | struct dentry *dir, const char *name, | 
|  | 27 | __u64 value); | 
|  | 28 |  | 
|  | 29 | extern struct dentry *hypfs_create_str(struct super_block *sb, | 
|  | 30 | struct dentry *dir, const char *name, | 
|  | 31 | char *string); | 
|  | 32 |  | 
| Michael Holzheu | 31cb4bd | 2007-02-05 21:18:29 +0100 | [diff] [blame] | 33 | /* LPAR Hypervisor */ | 
|  | 34 | extern int hypfs_diag_init(void); | 
|  | 35 | extern void hypfs_diag_exit(void); | 
|  | 36 | extern int hypfs_diag_create_files(struct super_block *sb, struct dentry *root); | 
|  | 37 |  | 
|  | 38 | /* VM Hypervisor */ | 
|  | 39 | extern int hypfs_vm_init(void); | 
| Michael Holzheu | 57b28f6 | 2010-05-17 10:00:20 +0200 | [diff] [blame] | 40 | extern void hypfs_vm_exit(void); | 
| Michael Holzheu | 31cb4bd | 2007-02-05 21:18:29 +0100 | [diff] [blame] | 41 | extern int hypfs_vm_create_files(struct super_block *sb, struct dentry *root); | 
|  | 42 |  | 
| Michael Holzheu | 2fcb368 | 2011-01-05 12:47:43 +0100 | [diff] [blame] | 43 | /* debugfs interface */ | 
|  | 44 | struct hypfs_dbfs_file; | 
|  | 45 |  | 
|  | 46 | struct hypfs_dbfs_data { | 
|  | 47 | void			*buf; | 
|  | 48 | void			*buf_free_ptr; | 
|  | 49 | size_t			size; | 
| Justin P. Mattock | 6eab04a | 2011-04-08 19:49:08 -0700 | [diff] [blame] | 50 | struct hypfs_dbfs_file	*dbfs_file; | 
| Michael Holzheu | 2fcb368 | 2011-01-05 12:47:43 +0100 | [diff] [blame] | 51 | struct kref		kref; | 
|  | 52 | }; | 
|  | 53 |  | 
|  | 54 | struct hypfs_dbfs_file { | 
|  | 55 | const char	*name; | 
|  | 56 | int		(*data_create)(void **data, void **data_free_ptr, | 
|  | 57 | size_t *size); | 
|  | 58 | void		(*data_free)(const void *buf_free_ptr); | 
|  | 59 |  | 
|  | 60 | /* Private data for hypfs_dbfs.c */ | 
|  | 61 | struct hypfs_dbfs_data	*data; | 
|  | 62 | struct delayed_work	data_free_work; | 
|  | 63 | struct mutex		lock; | 
|  | 64 | struct dentry		*dentry; | 
|  | 65 | }; | 
|  | 66 |  | 
|  | 67 | extern int hypfs_dbfs_init(void); | 
|  | 68 | extern void hypfs_dbfs_exit(void); | 
|  | 69 | extern int hypfs_dbfs_create_file(struct hypfs_dbfs_file *df); | 
|  | 70 | extern void hypfs_dbfs_remove_file(struct hypfs_dbfs_file *df); | 
|  | 71 |  | 
| Michael Holzheu | 24bbb1f | 2006-06-23 02:05:06 -0700 | [diff] [blame] | 72 | #endif /* _HYPFS_H_ */ |