XenevaOS
Loading...
Searching...
No Matches
drm_pagemap_util.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: MIT */
2/*
3 * Copyright © 2025 Intel Corporation
4 */
5
6#ifndef _DRM_PAGEMAP_UTIL_H_
7#define _DRM_PAGEMAP_UTIL_H_
8
9#include <linux/list.h>
10#include <linux/mutex.h>
11
12struct drm_device;
13struct drm_pagemap;
14struct drm_pagemap_cache;
15struct drm_pagemap_owner;
16struct drm_pagemap_shrinker;
17
26struct drm_pagemap_peer {
28 struct list_head link;
29 struct drm_pagemap_owner *owner;
30 void *private;
31};
32
47
48/*
49 * Convenience macro to define an owner list.
50 * Typically the owner list statically declared
51 * driver-wide.
52 */
53#define DRM_PAGEMAP_OWNER_LIST_DEFINE(_name) \
54 struct drm_pagemap_owner_list _name = { \
55 .lock = __MUTEX_INITIALIZER((_name).lock), \
56 .peers = LIST_HEAD_INIT((_name).peers) }
57
59
60int drm_pagemap_cache_lock_lookup(struct drm_pagemap_cache *cache);
61
62void drm_pagemap_cache_unlock_lookup(struct drm_pagemap_cache *cache);
63
64struct drm_pagemap_shrinker *drm_pagemap_shrinker_create_devm(struct drm_device *drm);
65
66struct drm_pagemap_cache *drm_pagemap_cache_create_devm(struct drm_pagemap_shrinker *shrinker);
67
68struct drm_pagemap *drm_pagemap_get_from_cache(struct drm_pagemap_cache *cache);
69
70void drm_pagemap_cache_set_pagemap(struct drm_pagemap_cache *cache, struct drm_pagemap *dpagemap);
71
72struct drm_pagemap *drm_pagemap_get_from_cache_if_active(struct drm_pagemap_cache *cache);
73
74#ifdef CONFIG_PROVE_LOCKING
75
76void drm_pagemap_shrinker_might_lock(struct drm_pagemap *dpagemap);
77
78#else
79
80static inline void drm_pagemap_shrinker_might_lock(struct drm_pagemap *dpagemap)
81{
82}
83
84#endif /* CONFIG_PROVE_LOCKING */
85
86void drm_pagemap_release_owner(struct drm_pagemap_peer *peer);
87
88int drm_pagemap_acquire_owner(struct drm_pagemap_peer *peer,
89 struct drm_pagemap_owner_list *owner_list,
90 bool (*has_interconnect)(struct drm_pagemap_peer *peer1,
91 struct drm_pagemap_peer *peer2));
92#endif
XEProcessList * list
Definition main.cpp:27
void drm_pagemap_release_owner(struct drm_pagemap_peer *peer)
void drm_pagemap_cache_set_pagemap(struct drm_pagemap_cache *cache, struct drm_pagemap *dpagemap)
struct drm_pagemap_shrinker * drm_pagemap_shrinker_create_devm(struct drm_device *drm)
struct drm_pagemap * drm_pagemap_get_from_cache_if_active(struct drm_pagemap_cache *cache)
struct drm_pagemap_cache * drm_pagemap_cache_create_devm(struct drm_pagemap_shrinker *shrinker)
struct drm_pagemap * drm_pagemap_get_from_cache(struct drm_pagemap_cache *cache)
void drm_pagemap_cache_unlock_lookup(struct drm_pagemap_cache *cache)
void drm_pagemap_shrinker_add(struct drm_pagemap *dpagemap)
int drm_pagemap_cache_lock_lookup(struct drm_pagemap_cache *cache)
int drm_pagemap_acquire_owner(struct drm_pagemap_peer *peer, struct drm_pagemap_owner_list *owner_list, bool(*has_interconnect)(struct drm_pagemap_peer *peer1, struct drm_pagemap_peer *peer2))
AuProcess * owner
Definition netproxy.c:38
Definition drm_device.h:75
Definition drm_pagemap_util.h:41
struct mutex lock
Definition drm_pagemap_util.h:43
struct list_head peers
Definition drm_pagemap_util.h:45
Definition drm_pagemap.h:165
struct drm_pagemap_cache * cache
Definition drm_pagemap.h:171
Definition list.h:11
Definition mutex.h:59