#include <drm/drm_file.h>
#include "ivpu_drv.h"
#include "ivpu_gem.h"
#include "ivpu_jsm_msg.h"
#include "ivpu_ms.h"
#include "ivpu_pm.h"
#define MS_INFO_BUFFER_SIZE …
#define MS_NUM_BUFFERS …
#define MS_READ_PERIOD_MULTIPLIER …
#define MS_MIN_SAMPLE_PERIOD_NS …
static struct ivpu_ms_instance *
get_instance_by_mask(struct ivpu_file_priv *file_priv, u64 metric_mask)
{ … }
int ivpu_ms_start_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
{ … }
static int
copy_leftover_bytes(struct ivpu_ms_instance *ms,
void __user *user_ptr, u64 user_size, u64 *user_bytes_copied)
{ … }
static int
copy_samples_to_user(struct ivpu_device *vdev, struct ivpu_ms_instance *ms,
void __user *user_ptr, u64 user_size, u64 *user_bytes_copied)
{ … }
int ivpu_ms_get_data_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
{ … }
static void free_instance(struct ivpu_file_priv *file_priv, struct ivpu_ms_instance *ms)
{ … }
int ivpu_ms_stop_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
{ … }
static inline struct ivpu_bo *get_ms_info_bo(struct ivpu_file_priv *file_priv)
{ … }
int ivpu_ms_get_info_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
{ … }
void ivpu_ms_cleanup(struct ivpu_file_priv *file_priv)
{ … }
void ivpu_ms_cleanup_all(struct ivpu_device *vdev)
{ … }