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