xref: /linux/net/rds/info.h (revision ca55b2fef3a9373fcfc30f82fd26bc7fccbda732)
1 #ifndef _RDS_INFO_H
2 #define _RDS_INFO_H
3 
4 struct rds_info_lengths {
5 	unsigned int	nr;
6 	unsigned int	each;
7 };
8 
9 struct rds_info_iterator;
10 
11 /*
12  * These functions must fill in the fields of @lens to reflect the size
13  * of the available info source.  If the snapshot fits in @len then it
14  * should be copied using @iter.  The caller will deduce if it was copied
15  * or not by comparing the lengths.
16  */
17 typedef void (*rds_info_func)(struct socket *sock, unsigned int len,
18 			      struct rds_info_iterator *iter,
19 			      struct rds_info_lengths *lens);
20 
21 void rds_info_register_func(int optname, rds_info_func func);
22 void rds_info_deregister_func(int optname, rds_info_func func);
23 int rds_info_getsockopt(struct socket *sock, int optname, char __user *optval,
24 			int __user *optlen);
25 void rds_info_copy(struct rds_info_iterator *iter, void *data,
26 		   unsigned long bytes);
27 void rds_info_iter_unmap(struct rds_info_iterator *iter);
28 
29 
30 #endif
31