1#ifndef _RDS_INFO_H 2#define _RDS_INFO_H 3 4struct rds_info_lengths { 5 unsigned int nr; 6 unsigned int each; 7}; 8 9struct 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 */ 17typedef void (*rds_info_func)(struct socket *sock, unsigned int len, 18 struct rds_info_iterator *iter, 19 struct rds_info_lengths *lens); 20 21void rds_info_register_func(int optname, rds_info_func func); 22void rds_info_deregister_func(int optname, rds_info_func func); 23int rds_info_getsockopt(struct socket *sock, int optname, char __user *optval, 24 int __user *optlen); 25void rds_info_copy(struct rds_info_iterator *iter, void *data, 26 unsigned long bytes); 27void rds_info_iter_unmap(struct rds_info_iterator *iter); 28 29 30#endif 31