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

Quelle  intel_gt_pm.h   Sprache: C

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


#ifndef INTEL_GT_PM_H
#define INTEL_GT_PM_H

#include <linux/types.h>

#include "intel_gt_types.h"
#include "intel_wakeref.h"

static inline bool intel_gt_pm_is_awake(const struct intel_gt *gt)
{
 return intel_wakeref_is_active(>->wakeref);
}

static inline void intel_gt_pm_get_untracked(struct intel_gt *gt)
{
 intel_wakeref_get(>->wakeref);
}

static inline intel_wakeref_t intel_gt_pm_get(struct intel_gt *gt)
{
 intel_gt_pm_get_untracked(gt);
 return intel_wakeref_track(>->wakeref);
}

static inline void __intel_gt_pm_get(struct intel_gt *gt)
{
 __intel_wakeref_get(>->wakeref);
}

static inline intel_wakeref_t intel_gt_pm_get_if_awake(struct intel_gt *gt)
{
 if (!intel_wakeref_get_if_active(>->wakeref))
  return NULL;

 return intel_wakeref_track(>->wakeref);
}

static inline void intel_gt_pm_might_get(struct intel_gt *gt)
{
 intel_wakeref_might_get(>->wakeref);
}

static inline void intel_gt_pm_put_untracked(struct intel_gt *gt)
{
 intel_wakeref_put(>->wakeref);
}

static inline void intel_gt_pm_put(struct intel_gt *gt, intel_wakeref_t handle)
{
 intel_wakeref_untrack(>->wakeref, handle);
 intel_gt_pm_put_untracked(gt);
}

static inline void intel_gt_pm_put_async_untracked(struct intel_gt *gt)
{
 intel_wakeref_put_async(>->wakeref);
}

static inline void intel_gt_pm_might_put(struct intel_gt *gt)
{
 intel_wakeref_might_put(>->wakeref);
}

static inline void intel_gt_pm_put_async(struct intel_gt *gt, intel_wakeref_t handle)
{
 intel_wakeref_untrack(>->wakeref, handle);
 intel_gt_pm_put_async_untracked(gt);
}

#define with_intel_gt_pm(gt, wf) \
 for ((wf) = intel_gt_pm_get(gt); (wf); intel_gt_pm_put((gt), (wf)), (wf) = NULL)

/**
 * with_intel_gt_pm_if_awake - if GT is PM awake, get a reference to prevent
 * it to sleep, run some code and then asynchrously put the reference
 * away.
 *
 * @gt: pointer to the gt
 * @wf: pointer to a temporary wakeref.
 */

#define with_intel_gt_pm_if_awake(gt, wf) \
 for ((wf) = intel_gt_pm_get_if_awake(gt); (wf); intel_gt_pm_put_async((gt), (wf)), (wf) = NULL)

static inline int intel_gt_pm_wait_for_idle(struct intel_gt *gt)
{
 return intel_wakeref_wait_for_idle(>->wakeref);
}

void intel_gt_pm_init_early(struct intel_gt *gt);
void intel_gt_pm_init(struct intel_gt *gt);
void intel_gt_pm_fini(struct intel_gt *gt);

void intel_gt_suspend_prepare(struct intel_gt *gt);
void intel_gt_suspend_late(struct intel_gt *gt);
int intel_gt_resume(struct intel_gt *gt);
void intel_gt_resume_early(struct intel_gt *gt);

void intel_gt_runtime_suspend(struct intel_gt *gt);
int intel_gt_runtime_resume(struct intel_gt *gt);

ktime_t intel_gt_get_awake_time(const struct intel_gt *gt);

#define INTEL_WAKEREF_MOCK_GT ERR_PTR(-ENODEV)

static inline bool is_mock_gt(const struct intel_gt *gt)
{
 BUILD_BUG_ON(INTEL_WAKEREF_DEF == INTEL_WAKEREF_MOCK_GT);

 return I915_SELFTEST_ONLY(gt->awake == INTEL_WAKEREF_MOCK_GT);
}

#endif /* INTEL_GT_PM_H */

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

¤ Dauer der Verarbeitung: 0.10 Sekunden  (vorverarbeitet)  ¤

*© 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.