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 int xyarray__max_y(struct xyarray *xy) 27 { 28 return xy->max_y; 29 } 30 31 static inline int xyarray__max_x(struct xyarray *xy) 32 { 33 return xy->max_x; 34 } 35 36 #endif /* __LIBPERF_INTERNAL_XYARRAY_H */ 37