Linux Audio

Check our new training course

Loading...
Note: File does not exist in v5.4.
 1/* SPDX-License-Identifier: GPL-2.0 */
 2#ifndef __PERF_MEM_INFO_H
 3#define __PERF_MEM_INFO_H
 4
 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 */