cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

xyarray.h (960B)


      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
      8struct 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
     17struct xyarray *xyarray__new(int xlen, int ylen, size_t entry_size);
     18void xyarray__delete(struct xyarray *xy);
     19void xyarray__reset(struct xyarray *xy);
     20
     21static 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
     26static 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
     33static inline int xyarray__max_y(struct xyarray *xy)
     34{
     35	return xy->max_y;
     36}
     37
     38static inline int xyarray__max_x(struct xyarray *xy)
     39{
     40	return xy->max_x;
     41}
     42
     43#endif /* __LIBPERF_INTERNAL_XYARRAY_H */