Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/lib/perf/include/internal/xyarray.h
26302 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
#ifndef __LIBPERF_INTERNAL_XYARRAY_H
3
#define __LIBPERF_INTERNAL_XYARRAY_H
4
5
#include <linux/compiler.h>
6
#include <sys/types.h>
7
8
struct xyarray {
9
size_t row_size;
10
size_t entry_size;
11
size_t entries;
12
size_t max_x;
13
size_t max_y;
14
char contents[] __aligned(8);
15
};
16
17
struct xyarray *xyarray__new(int xlen, int ylen, size_t entry_size);
18
void xyarray__delete(struct xyarray *xy);
19
void xyarray__reset(struct xyarray *xy);
20
21
static inline void *__xyarray__entry(struct xyarray *xy, int x, int y)
22
{
23
return &xy->contents[x * xy->row_size + y * xy->entry_size];
24
}
25
26
static inline void *xyarray__entry(struct xyarray *xy, size_t x, size_t y)
27
{
28
if (x >= xy->max_x || y >= xy->max_y)
29
return NULL;
30
return __xyarray__entry(xy, x, y);
31
}
32
33
static inline int xyarray__max_y(struct xyarray *xy)
34
{
35
return xy->max_y;
36
}
37
38
static inline int xyarray__max_x(struct xyarray *xy)
39
{
40
return xy->max_x;
41
}
42
43
#endif /* __LIBPERF_INTERNAL_XYARRAY_H */
44
45