XenevaOS
Loading...
Searching...
No Matches
Public Attributes | List of all members
drm_file Struct Reference

#include <drm_file.h>

Collaboration diagram for drm_file:
Collaboration graph
[legend]

Public Attributes

bool authenticated
 
bool stereo_allowed
 
bool universal_planes
 
bool atomic
 
bool aspect_ratio_allowed
 
bool writeback_connectors
 
bool plane_color_pipeline
 
bool was_master
 
bool is_master
 
bool supports_virtualized_cursor_plane
 
struct drm_master * master
 
spinlock_t master_lookup_lock
 
struct pid __rcu * pid
 
u64 client_id
 
drm_magic_t magic
 
struct list_head lhead
 
struct drm_minor * minor
 
struct idr object_idr
 
spinlock_t table_lock
 
struct xarray syncobj_xa
 
struct file * filp
 
void * driver_priv
 
struct list_head fbs
 
struct mutex fbs_lock
 
struct list_head blobs
 
wait_queue_head_t event_wait
 
struct list_head pending_event_list
 
struct list_head event_list
 
int event_space
 
struct mutex event_read_lock
 
struct drm_prime_file_private prime
 
const char * client_name
 
struct mutex client_name_lock
 
struct dentry * debugfs_client
 

Detailed Description

struct drm_file - DRM file private data

This structure tracks DRM state per open file descriptor.

Member Data Documentation

◆ aspect_ratio_allowed

bool drm_file::aspect_ratio_allowed

@aspect_ratio_allowed:

True, if client can handle picture aspect ratios, and has requested to pass this information along with the mode.

◆ atomic

bool drm_file::atomic

@atomic: True if client understands atomic properties.

◆ authenticated

bool drm_file::authenticated

@authenticated:

Whether the client is allowed to submit rendering, which for legacy nodes means it must be authenticated.

See also the :ref:section on primary nodes and authentication <drm_primary_node>.

◆ blobs

struct list_head drm_file::blobs

@blobs:

User-created blob properties; this retains a reference on the property.

Protected by @drm_mode_config.blob_lock;

◆ client_id

u64 drm_file::client_id

@client_id: A unique id for fdinfo

◆ client_name

const char* drm_file::client_name

@client_name:

Userspace-provided name; useful for accounting and debugging.

◆ client_name_lock

struct mutex drm_file::client_name_lock

@client_name_lock: Protects @client_name.

◆ debugfs_client

struct dentry* drm_file::debugfs_client

@debugfs_client:

debugfs directory for each client under a drm node.

◆ driver_priv

void* drm_file::driver_priv

@driver_priv:

Optional pointer for driver private data. Can be allocated in &drm_driver.open and should be freed in &drm_driver.postclose.

◆ event_list

struct list_head drm_file::event_list

@event_list:

List of &struct drm_pending_event, ready for delivery to userspace through drm_read(). Uses the &drm_pending_event.link entry.

Protect by &drm_device.event_lock.

◆ event_read_lock

struct mutex drm_file::event_read_lock

@event_read_lock: Serializes drm_read().

◆ event_space

int drm_file::event_space

@event_space:

Available event space to prevent userspace from exhausting kernel memory. Currently limited to the fairly arbitrary value of 4KB.

◆ event_wait

wait_queue_head_t drm_file::event_wait

@event_wait: Waitqueue for new events added to @event_list.

◆ fbs

struct list_head drm_file::fbs

@fbs:

List of &struct drm_framebuffer associated with this file, using the &drm_framebuffer.filp_head entry.

Protected by @fbs_lock. Note that the @fbs list holds a reference on the framebuffer object to prevent it from untimely disappearing.

◆ fbs_lock

struct mutex drm_file::fbs_lock

@fbs_lock: Protects @fbs.

◆ filp

struct file* drm_file::filp

@filp: Pointer to the core file structure.

◆ is_master

bool drm_file::is_master

@is_master:

This client is the creator of @master. Protected by struct &drm_device.master_mutex.

See also the :ref:section on primary nodes and authentication <drm_primary_node>.

◆ lhead

struct list_head drm_file::lhead

@lhead:

List of all open files of a DRM device, linked into &drm_device.filelist. Protected by &drm_device.filelist_mutex.

◆ magic

drm_magic_t drm_file::magic

@magic: Authentication magic, see @authenticated.

◆ master

struct drm_master* drm_file::master

@master:

Master this node is currently associated with. Protected by struct &drm_device.master_mutex, and serialized by @master_lookup_lock.

Only relevant if drm_is_primary_client() returns true. Note that this only matches &drm_device.master if the master is the currently active one.

To update @master, both &drm_device.master_mutex and @master_lookup_lock need to be held, therefore holding either of them is safe and enough for the read side.

When dereferencing this pointer, either hold struct &drm_device.master_mutex for the duration of the pointer's use, or use drm_file_get_master() if struct &drm_device.master_mutex is not currently held and there is no other need to hold it. This prevents @master from being freed during use.

See also @authentication and @is_master and the :ref:section on primary nodes and authentication <drm_primary_node>.

◆ master_lookup_lock

spinlock_t drm_file::master_lookup_lock

@master_lookup_lock: Serializes @master.

◆ minor

struct drm_minor* drm_file::minor

@minor: &struct drm_minor for this file.

◆ object_idr

struct idr drm_file::object_idr

@object_idr:

Mapping of mm object handles to object pointers. Used by the GEM subsystem. Protected by @table_lock.

Note that allocated entries might be NULL as a transient state when creating or deleting a handle.

◆ pending_event_list

struct list_head drm_file::pending_event_list

@pending_event_list:

List of pending &struct drm_pending_event, used to clean up pending events in case this file gets closed before the event is signalled. Uses the &drm_pending_event.pending_link entry.

Protect by &drm_device.event_lock.

◆ pid

struct pid __rcu* drm_file::pid

@pid: Process that is using this file.

Must only be dereferenced under a rcu_read_lock or equivalent.

Updates are guarded with dev->filelist_mutex and reference must be dropped after a RCU grace period to accommodate lockless readers.

◆ plane_color_pipeline

bool drm_file::plane_color_pipeline

@plane_color_pipeline:

True if client understands plane color pipelines

◆ prime

struct drm_prime_file_private drm_file::prime

@prime:

Per-file buffer caches used by the PRIME buffer sharing code.

◆ stereo_allowed

bool drm_file::stereo_allowed

@stereo_allowed:

True when the client has asked us to expose stereo 3D mode flags.

◆ supports_virtualized_cursor_plane

bool drm_file::supports_virtualized_cursor_plane

@supports_virtualized_cursor_plane:

This client is capable of handling the cursor plane with the restrictions imposed on it by the virtualized drivers.

This implies that the cursor plane has to behave like a cursor i.e. track cursor movement. It also requires setting of the hotspot properties by the client on the cursor plane.

◆ syncobj_xa

struct xarray drm_file::syncobj_xa

@syncobj_xa: Mapping of sync object handles to object pointers.

◆ table_lock

spinlock_t drm_file::table_lock

@table_lock: Protects @object_idr.

◆ universal_planes

bool drm_file::universal_planes

@universal_planes:

True if client understands CRTC primary planes and cursor planes in the plane list. Automatically set when @atomic is set.

◆ was_master

bool drm_file::was_master

@was_master:

This client has or had, master capability. Protected by struct &drm_device.master_mutex.

This is used to ensure that CAP_SYS_ADMIN is not enforced, if the client is or was master in the past.

◆ writeback_connectors

bool drm_file::writeback_connectors

@writeback_connectors:

True if client understands writeback connectors


The documentation for this struct was generated from the following file: