restrack.h (1063B)
1/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ 2/* 3 * Copyright (c) 2017-2019 Mellanox Technologies. All rights reserved. 4 */ 5 6#ifndef _RDMA_CORE_RESTRACK_H_ 7#define _RDMA_CORE_RESTRACK_H_ 8 9#include <linux/mutex.h> 10 11/** 12 * struct rdma_restrack_root - main resource tracking management 13 * entity, per-device 14 */ 15struct rdma_restrack_root { 16 /** 17 * @xa: Array of XArray structure to hold restrack entries. 18 */ 19 struct xarray xa; 20 /** 21 * @next_id: Next ID to support cyclic allocation 22 */ 23 u32 next_id; 24}; 25 26int rdma_restrack_init(struct ib_device *dev); 27void rdma_restrack_clean(struct ib_device *dev); 28void rdma_restrack_add(struct rdma_restrack_entry *res); 29void rdma_restrack_del(struct rdma_restrack_entry *res); 30void rdma_restrack_new(struct rdma_restrack_entry *res, 31 enum rdma_restrack_type type); 32void rdma_restrack_set_name(struct rdma_restrack_entry *res, 33 const char *caller); 34void rdma_restrack_parent_name(struct rdma_restrack_entry *dst, 35 const struct rdma_restrack_entry *parent); 36#endif /* _RDMA_CORE_RESTRACK_H_ */