drivers/gpu/drm/i915/selftests/mock_request.c

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/i915/selftests/mock_request.c

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/i915/selftests/mock_request.c
Extension
.c
Size
1973 bytes
Lines
60
Domain
Driver Families
Bucket
drivers/gpu
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

#include "gem/selftests/igt_gem_utils.h"
#include "gt/mock_engine.h"

#include "mock_request.h"

struct i915_request *
mock_request(struct intel_context *ce, unsigned long delay)
{
	struct i915_request *request;

	/* NB the i915->requests slab cache is enlarged to fit mock_request */
	request = intel_context_create_request(ce);
	if (IS_ERR(request))
		return request;

	request->mock.delay = delay;
	return request;
}

bool mock_cancel_request(struct i915_request *request)
{
	struct mock_engine *engine =
		container_of(request->engine, typeof(*engine), base);
	bool was_queued;

	spin_lock_irq(&engine->hw_lock);
	was_queued = !list_empty(&request->mock.link);
	list_del_init(&request->mock.link);
	spin_unlock_irq(&engine->hw_lock);

	if (was_queued)
		i915_request_unsubmit(request);

	return was_queued;
}

Annotation

Implementation Notes