1 // SPDX-License-Identifier: GPL-2.0
2 #include <linux/zalloc.h>
5 struct mem_info
*mem_info__get(struct mem_info
*mi
)
7 struct mem_info
*result
;
9 if (RC_CHK_GET(result
, mi
))
10 refcount_inc(mem_info__refcnt(mi
));
15 void mem_info__put(struct mem_info
*mi
)
17 if (mi
&& refcount_dec_and_test(mem_info__refcnt(mi
))) {
18 addr_map_symbol__exit(mem_info__iaddr(mi
));
19 addr_map_symbol__exit(mem_info__daddr(mi
));
26 struct mem_info
*mem_info__new(void)
28 struct mem_info
*result
= NULL
;
29 RC_STRUCT(mem_info
) *mi
= zalloc(sizeof(*mi
));
31 if (ADD_RC_CHK(result
, mi
))
32 refcount_set(mem_info__refcnt(result
), 1);
37 struct mem_info
*mem_info__clone(struct mem_info
*mi
)
39 struct mem_info
*result
= mem_info__new();
42 addr_map_symbol__copy(mem_info__iaddr(result
), mem_info__iaddr(mi
));
43 addr_map_symbol__copy(mem_info__daddr(result
), mem_info__daddr(mi
));
44 mem_info__data_src(result
)->val
= mem_info__data_src(mi
)->val
;