brintos

brintos / linux-shallow public Read only

0
0
Text · 1.0 KiB · d3efa9c Raw
49 lines · c
1// SPDX-License-Identifier: GPL-2.02#include <linux/zalloc.h>3#include "mem-info.h"4 5struct mem_info *mem_info__get(struct mem_info *mi)6{7	struct mem_info *result;8 9	if (RC_CHK_GET(result, mi))10		refcount_inc(mem_info__refcnt(mi));11 12	return result;13}14 15void mem_info__put(struct mem_info *mi)16{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));20		RC_CHK_FREE(mi);21	} else {22		RC_CHK_PUT(mi);23	}24}25 26struct mem_info *mem_info__new(void)27{28	struct mem_info *result = NULL;29	RC_STRUCT(mem_info) *mi = zalloc(sizeof(*mi));30 31	if (ADD_RC_CHK(result, mi))32		refcount_set(mem_info__refcnt(result), 1);33 34	return result;35}36 37struct mem_info *mem_info__clone(struct mem_info *mi)38{39	struct mem_info *result = mem_info__new();40 41	if (result) {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;45	}46 47	return result;48}49