brintos

brintos / linux-shallow public Read only

0
0
Text · 1.3 KiB · df75e94 Raw
56 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef __PERF_MEM_INFO_H3#define __PERF_MEM_INFO_H4 5#include <linux/refcount.h>6#include <linux/perf_event.h>7#include <internal/rc_check.h>8#include "map_symbol.h"9 10DECLARE_RC_STRUCT(mem_info) {11	struct addr_map_symbol	iaddr;12	struct addr_map_symbol	daddr;13	union perf_mem_data_src	data_src;14	refcount_t		refcnt;15};16 17struct mem_info *mem_info__new(void);18struct mem_info *mem_info__clone(struct mem_info *mi);19struct mem_info *mem_info__get(struct mem_info *mi);20void   mem_info__put(struct mem_info *mi);21 22static inline void __mem_info__zput(struct mem_info **mi)23{24	mem_info__put(*mi);25	*mi = NULL;26}27 28#define mem_info__zput(mi) __mem_info__zput(&mi)29 30static inline struct addr_map_symbol *mem_info__iaddr(struct mem_info *mi)31{32	return &RC_CHK_ACCESS(mi)->iaddr;33}34 35static inline struct addr_map_symbol *mem_info__daddr(struct mem_info *mi)36{37	return &RC_CHK_ACCESS(mi)->daddr;38}39 40static inline union perf_mem_data_src *mem_info__data_src(struct mem_info *mi)41{42	return &RC_CHK_ACCESS(mi)->data_src;43}44 45static inline const union perf_mem_data_src *mem_info__const_data_src(const struct mem_info *mi)46{47	return &RC_CHK_ACCESS(mi)->data_src;48}49 50static inline refcount_t *mem_info__refcnt(struct mem_info *mi)51{52	return &RC_CHK_ACCESS(mi)->refcnt;53}54 55#endif /* __PERF_MEM_INFO_H */56