| 
									
										
										
										
											2006-06-23 02:05:06 -07:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  *    Hypervisor filesystem for Linux on s390. | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2012-07-20 11:15:04 +02:00
										 |  |  |  *    Copyright IBM Corp. 2006 | 
					
						
							| 
									
										
										
										
											2006-06-23 02:05:06 -07:00
										 |  |  |  *    Author(s): Michael Holzheu <holzheu@de.ibm.com> | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef _HYPFS_H_
 | 
					
						
							|  |  |  | #define _HYPFS_H_
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <linux/fs.h>
 | 
					
						
							|  |  |  | #include <linux/types.h>
 | 
					
						
							| 
									
										
										
										
											2010-05-17 10:00:20 +02:00
										 |  |  | #include <linux/debugfs.h>
 | 
					
						
							| 
									
										
										
										
											2011-01-05 12:47:43 +01:00
										 |  |  | #include <linux/workqueue.h>
 | 
					
						
							|  |  |  | #include <linux/kref.h>
 | 
					
						
							| 
									
										
										
										
											2014-01-24 09:18:52 +01:00
										 |  |  | #include <asm/hypfs.h>
 | 
					
						
							| 
									
										
										
										
											2006-06-23 02:05:06 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | #define REG_FILE_MODE    0440
 | 
					
						
							|  |  |  | #define UPDATE_FILE_MODE 0220
 | 
					
						
							|  |  |  | #define DIR_MODE         0550
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-19 18:05:21 +04:00
										 |  |  | extern struct dentry *hypfs_mkdir(struct dentry *parent, const char *name); | 
					
						
							| 
									
										
										
										
											2006-06-23 02:05:06 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-19 18:05:21 +04:00
										 |  |  | extern struct dentry *hypfs_create_u64(struct dentry *dir, const char *name, | 
					
						
							| 
									
										
										
										
											2006-06-23 02:05:06 -07:00
										 |  |  | 				       __u64 value); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-19 18:05:21 +04:00
										 |  |  | extern struct dentry *hypfs_create_str(struct dentry *dir, const char *name, | 
					
						
							| 
									
										
										
										
											2006-06-23 02:05:06 -07:00
										 |  |  | 				       char *string); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-02-05 21:18:29 +01:00
										 |  |  | /* LPAR Hypervisor */ | 
					
						
							|  |  |  | extern int hypfs_diag_init(void); | 
					
						
							|  |  |  | extern void hypfs_diag_exit(void); | 
					
						
							| 
									
										
										
										
											2013-07-19 17:10:21 +04:00
										 |  |  | extern int hypfs_diag_create_files(struct dentry *root); | 
					
						
							| 
									
										
										
										
											2007-02-05 21:18:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* VM Hypervisor */ | 
					
						
							|  |  |  | extern int hypfs_vm_init(void); | 
					
						
							| 
									
										
										
										
											2010-05-17 10:00:20 +02:00
										 |  |  | extern void hypfs_vm_exit(void); | 
					
						
							| 
									
										
										
										
											2013-07-19 17:03:49 +04:00
										 |  |  | extern int hypfs_vm_create_files(struct dentry *root); | 
					
						
							| 
									
										
										
										
											2007-02-05 21:18:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-24 09:18:52 +01:00
										 |  |  | /* Set Partition-Resource Parameter */ | 
					
						
							|  |  |  | int hypfs_sprp_init(void); | 
					
						
							|  |  |  | void hypfs_sprp_exit(void); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-05 12:47:43 +01:00
										 |  |  | /* debugfs interface */ | 
					
						
							|  |  |  | struct hypfs_dbfs_file; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct hypfs_dbfs_data { | 
					
						
							|  |  |  | 	void			*buf; | 
					
						
							|  |  |  | 	void			*buf_free_ptr; | 
					
						
							|  |  |  | 	size_t			size; | 
					
						
							| 
									
										
										
										
											2011-04-08 19:49:08 -07:00
										 |  |  | 	struct hypfs_dbfs_file	*dbfs_file; | 
					
						
							| 
									
										
										
										
											2011-01-05 12:47:43 +01:00
										 |  |  | 	struct kref		kref; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct hypfs_dbfs_file { | 
					
						
							|  |  |  | 	const char	*name; | 
					
						
							|  |  |  | 	int		(*data_create)(void **data, void **data_free_ptr, | 
					
						
							|  |  |  | 				       size_t *size); | 
					
						
							|  |  |  | 	void		(*data_free)(const void *buf_free_ptr); | 
					
						
							| 
									
										
										
										
											2014-01-24 09:18:52 +01:00
										 |  |  | 	long		(*unlocked_ioctl) (struct file *, unsigned int, | 
					
						
							|  |  |  | 					   unsigned long); | 
					
						
							| 
									
										
										
										
											2011-01-05 12:47:43 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* Private data for hypfs_dbfs.c */ | 
					
						
							|  |  |  | 	struct hypfs_dbfs_data	*data; | 
					
						
							|  |  |  | 	struct delayed_work	data_free_work; | 
					
						
							|  |  |  | 	struct mutex		lock; | 
					
						
							|  |  |  | 	struct dentry		*dentry; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern int hypfs_dbfs_init(void); | 
					
						
							|  |  |  | extern void hypfs_dbfs_exit(void); | 
					
						
							|  |  |  | extern int hypfs_dbfs_create_file(struct hypfs_dbfs_file *df); | 
					
						
							|  |  |  | extern void hypfs_dbfs_remove_file(struct hypfs_dbfs_file *df); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-06-23 02:05:06 -07:00
										 |  |  | #endif /* _HYPFS_H_ */
 |