162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2017-2019 Mellanox Technologies. All rights reserved. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#ifndef _RDMA_CORE_RESTRACK_H_ 762306a36Sopenharmony_ci#define _RDMA_CORE_RESTRACK_H_ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include <linux/mutex.h> 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci/** 1262306a36Sopenharmony_ci * struct rdma_restrack_root - main resource tracking management 1362306a36Sopenharmony_ci * entity, per-device 1462306a36Sopenharmony_ci */ 1562306a36Sopenharmony_cistruct rdma_restrack_root { 1662306a36Sopenharmony_ci /** 1762306a36Sopenharmony_ci * @xa: Array of XArray structure to hold restrack entries. 1862306a36Sopenharmony_ci */ 1962306a36Sopenharmony_ci struct xarray xa; 2062306a36Sopenharmony_ci /** 2162306a36Sopenharmony_ci * @next_id: Next ID to support cyclic allocation 2262306a36Sopenharmony_ci */ 2362306a36Sopenharmony_ci u32 next_id; 2462306a36Sopenharmony_ci}; 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ciint rdma_restrack_init(struct ib_device *dev); 2762306a36Sopenharmony_civoid rdma_restrack_clean(struct ib_device *dev); 2862306a36Sopenharmony_civoid rdma_restrack_add(struct rdma_restrack_entry *res); 2962306a36Sopenharmony_civoid rdma_restrack_del(struct rdma_restrack_entry *res); 3062306a36Sopenharmony_civoid rdma_restrack_new(struct rdma_restrack_entry *res, 3162306a36Sopenharmony_ci enum rdma_restrack_type type); 3262306a36Sopenharmony_civoid rdma_restrack_set_name(struct rdma_restrack_entry *res, 3362306a36Sopenharmony_ci const char *caller); 3462306a36Sopenharmony_civoid rdma_restrack_parent_name(struct rdma_restrack_entry *dst, 3562306a36Sopenharmony_ci const struct rdma_restrack_entry *parent); 3662306a36Sopenharmony_ci#endif /* _RDMA_CORE_RESTRACK_H_ */ 37