|
XenevaOS
|
#include <drm_file.h>

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 |
struct drm_file - DRM file private data
This structure tracks DRM state per open file descriptor.
| 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.
| bool drm_file::atomic |
@atomic: True if client understands atomic properties.
| 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>.
| 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;
| u64 drm_file::client_id |
@client_id: A unique id for fdinfo
| const char* drm_file::client_name |
@client_name:
Userspace-provided name; useful for accounting and debugging.
| struct mutex drm_file::client_name_lock |
@client_name_lock: Protects @client_name.
| struct dentry* drm_file::debugfs_client |
@debugfs_client:
debugfs directory for each client under a drm node.
| 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.
| 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.
| struct mutex drm_file::event_read_lock |
@event_read_lock: Serializes drm_read().
| 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.
| wait_queue_head_t drm_file::event_wait |
@event_wait: Waitqueue for new events added to @event_list.
| 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.
| struct mutex drm_file::fbs_lock |
@fbs_lock: Protects @fbs.
| struct file* drm_file::filp |
@filp: Pointer to the core file structure.
| 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>.
| 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.
| drm_magic_t drm_file::magic |
@magic: Authentication magic, see @authenticated.
| 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>.
| spinlock_t drm_file::master_lookup_lock |
@master_lookup_lock: Serializes @master.
| 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.
| 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.
| 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.
| bool drm_file::plane_color_pipeline |
@plane_color_pipeline:
True if client understands plane color pipelines
| struct drm_prime_file_private drm_file::prime |
@prime:
Per-file buffer caches used by the PRIME buffer sharing code.
| bool drm_file::stereo_allowed |
@stereo_allowed:
True when the client has asked us to expose stereo 3D mode flags.
| 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.
| struct xarray drm_file::syncobj_xa |
@syncobj_xa: Mapping of sync object handles to object pointers.
| spinlock_t drm_file::table_lock |
@table_lock: Protects @object_idr.
| 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.
| 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.
| bool drm_file::writeback_connectors |
@writeback_connectors:
True if client understands writeback connectors