xref: /openbmc/linux/tools/lib/perf/xyarray.c (revision 8dd06ef34b6e2f41b29fbf5fc1663780f2524285)
1*3ce311afSJiri Olsa // SPDX-License-Identifier: GPL-2.0
2*3ce311afSJiri Olsa #include <internal/xyarray.h>
3*3ce311afSJiri Olsa #include <linux/zalloc.h>
4*3ce311afSJiri Olsa #include <stdlib.h>
5*3ce311afSJiri Olsa #include <string.h>
6*3ce311afSJiri Olsa 
xyarray__new(int xlen,int ylen,size_t entry_size)7*3ce311afSJiri Olsa struct xyarray *xyarray__new(int xlen, int ylen, size_t entry_size)
8*3ce311afSJiri Olsa {
9*3ce311afSJiri Olsa 	size_t row_size = ylen * entry_size;
10*3ce311afSJiri Olsa 	struct xyarray *xy = zalloc(sizeof(*xy) + xlen * row_size);
11*3ce311afSJiri Olsa 
12*3ce311afSJiri Olsa 	if (xy != NULL) {
13*3ce311afSJiri Olsa 		xy->entry_size = entry_size;
14*3ce311afSJiri Olsa 		xy->row_size   = row_size;
15*3ce311afSJiri Olsa 		xy->entries    = xlen * ylen;
16*3ce311afSJiri Olsa 		xy->max_x      = xlen;
17*3ce311afSJiri Olsa 		xy->max_y      = ylen;
18*3ce311afSJiri Olsa 	}
19*3ce311afSJiri Olsa 
20*3ce311afSJiri Olsa 	return xy;
21*3ce311afSJiri Olsa }
22*3ce311afSJiri Olsa 
xyarray__reset(struct xyarray * xy)23*3ce311afSJiri Olsa void xyarray__reset(struct xyarray *xy)
24*3ce311afSJiri Olsa {
25*3ce311afSJiri Olsa 	size_t n = xy->entries * xy->entry_size;
26*3ce311afSJiri Olsa 
27*3ce311afSJiri Olsa 	memset(xy->contents, 0, n);
28*3ce311afSJiri Olsa }
29*3ce311afSJiri Olsa 
xyarray__delete(struct xyarray * xy)30*3ce311afSJiri Olsa void xyarray__delete(struct xyarray *xy)
31*3ce311afSJiri Olsa {
32*3ce311afSJiri Olsa 	free(xy);
33*3ce311afSJiri Olsa }
34