/* SPDX-License-Identifier: MIT */
/*
* Copyright © 2019 Intel Corporation
*/
#ifndef __I915_GEM_REGION_H__
#define __I915_GEM_REGION_H__
#include <linux/types.h>
struct intel_memory_region;
struct drm_i915_gem_object;
struct sg_table;
struct i915_gem_apply_to_region;
#define I915_BO_INVALID_OFFSET ((resource_size_t)-1 )
/**
* struct i915_gem_apply_to_region_ops - ops to use when iterating over all
* region objects .
*/
struct i915_gem_apply_to_region_ops {
/**
* @ process_obj : Process the current object
*
* Note that if this function is part of a ww transaction , and
* if returns - EDEADLK for one of the objects , it may be
* rerun for that same object in the same pass .
*/
int (*process_obj)(struct i915_gem_apply_to_region *apply,
struct drm_i915_gem_object *obj);
};
/**
* struct i915_gem_apply_to_region - Argument to the struct
* i915_gem_apply_to_region_ops functions .
* @ ops : The ops for the operation .
* @ ww : Locking context used for the transaction .
* @ interruptible : Whether to perform object locking interruptible .
*
* This structure is intended to be embedded in a private struct if needed
*/
struct i915_gem_apply_to_region {
const struct i915_gem_apply_to_region_ops *ops;
struct i915_gem_ww_ctx *ww;
u32 interruptible:1 ;
};
void i915_gem_object_init_memory_region(struct drm_i915_gem_object *obj,
struct intel_memory_region *mem);
void i915_gem_object_release_memory_region(struct drm_i915_gem_object *obj);
struct drm_i915_gem_object *
i915_gem_object_create_region(struct intel_memory_region *mem,
resource_size_t size,
resource_size_t page_size,
unsigned int flags);
struct drm_i915_gem_object *
i915_gem_object_create_region_at(struct intel_memory_region *mem,
resource_size_t offset,
resource_size_t size,
unsigned int flags);
int i915_gem_process_region(struct intel_memory_region *mr,
struct i915_gem_apply_to_region *apply);
#endif
Messung V0.5 in Prozent C=93 H=100 G=96
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-10-03)
¤
*© Formatika GbR, Deutschland