31 lines
		
	
	
	
		
			934 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			31 lines
		
	
	
	
		
			934 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | #ifndef _RDS_INFO_H
 | ||
|  | #define _RDS_INFO_H
 | ||
|  | 
 | ||
|  | struct rds_info_lengths { | ||
|  | 	unsigned int	nr; | ||
|  | 	unsigned int	each; | ||
|  | }; | ||
|  | 
 | ||
|  | struct rds_info_iterator; | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * These functions must fill in the fields of @lens to reflect the size | ||
|  |  * of the available info source.  If the snapshot fits in @len then it | ||
|  |  * should be copied using @iter.  The caller will deduce if it was copied | ||
|  |  * or not by comparing the lengths. | ||
|  |  */ | ||
|  | typedef void (*rds_info_func)(struct socket *sock, unsigned int len, | ||
|  | 			      struct rds_info_iterator *iter, | ||
|  | 			      struct rds_info_lengths *lens); | ||
|  | 
 | ||
|  | void rds_info_register_func(int optname, rds_info_func func); | ||
|  | void rds_info_deregister_func(int optname, rds_info_func func); | ||
|  | int rds_info_getsockopt(struct socket *sock, int optname, char __user *optval, | ||
|  | 			int __user *optlen); | ||
|  | void rds_info_copy(struct rds_info_iterator *iter, void *data, | ||
|  | 		   unsigned long bytes); | ||
|  | void rds_info_iter_unmap(struct rds_info_iterator *iter); | ||
|  | 
 | ||
|  | 
 | ||
|  | #endif
 |