Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/gpu/drm/xe/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  xe_observation.c   Sprache: C

 
// SPDX-License-Identifier: MIT
/*
 * Copyright © 2023-2024 Intel Corporation
 */


#include <linux/errno.h>
#include <linux/sysctl.h>

#include <uapi/drm/xe_drm.h>

#include "xe_eu_stall.h"
#include "xe_oa.h"
#include "xe_observation.h"

u32 xe_observation_paranoid = true;
static struct ctl_table_header *sysctl_header;

static int xe_oa_ioctl(struct drm_device *dev, struct drm_xe_observation_param *arg,
         struct drm_file *file)
{
 switch (arg->observation_op) {
 case DRM_XE_OBSERVATION_OP_STREAM_OPEN:
  return xe_oa_stream_open_ioctl(dev, arg->param, file);
 case DRM_XE_OBSERVATION_OP_ADD_CONFIG:
  return xe_oa_add_config_ioctl(dev, arg->param, file);
 case DRM_XE_OBSERVATION_OP_REMOVE_CONFIG:
  return xe_oa_remove_config_ioctl(dev, arg->param, file);
 default:
  return -EINVAL;
 }
}

static int xe_eu_stall_ioctl(struct drm_device *dev, struct drm_xe_observation_param *arg,
        struct drm_file *file)
{
 switch (arg->observation_op) {
 case DRM_XE_OBSERVATION_OP_STREAM_OPEN:
  return xe_eu_stall_stream_open(dev, arg->param, file);
 default:
  return -EINVAL;
 }
}

/**
 * xe_observation_ioctl - The top level observation layer ioctl
 * @dev: @drm_device
 * @data: pointer to struct @drm_xe_observation_param
 * @file: @drm_file
 *
 * The function is called for different observation streams types and
 * allows execution of different operations supported by those stream
 * types.
 *
 * Return: 0 on success or a negative error code on failure.
 */

int xe_observation_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
{
 struct drm_xe_observation_param *arg = data;

 if (arg->extensions)
  return -EINVAL;

 switch (arg->observation_type) {
 case DRM_XE_OBSERVATION_TYPE_OA:
  return xe_oa_ioctl(dev, arg, file);
 case DRM_XE_OBSERVATION_TYPE_EU_STALL:
  return xe_eu_stall_ioctl(dev, arg, file);
 default:
  return -EINVAL;
 }
}

static const struct ctl_table observation_ctl_table[] = {
 {
  .procname = "observation_paranoid",
  .data = &xe_observation_paranoid,
  .maxlen = sizeof(xe_observation_paranoid),
  .mode = 0644,
  .proc_handler = proc_dointvec_minmax,
  .extra1 = SYSCTL_ZERO,
  .extra2 = SYSCTL_ONE,
  },
};

/**
 * xe_observation_sysctl_register - Register xe_observation_paranoid sysctl
 *
 * Normally only superuser/root can access observation stream
 * data. However, superuser can set xe_observation_paranoid sysctl to 0 to
 * allow non-privileged users to also access observation data.
 *
 * Return: always returns 0
 */

int xe_observation_sysctl_register(void)
{
 sysctl_header = register_sysctl("dev/xe", observation_ctl_table);
 return 0;
}

/**
 * xe_observation_sysctl_unregister - Unregister xe_observation_paranoid sysctl
 */

void xe_observation_sysctl_unregister(void)
{
 unregister_sysctl_table(sysctl_header);
}

Messung V0.5
C=95 H=94 G=94

¤ Dauer der Verarbeitung: 0.2 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.