XenevaOS
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Enumerations
drm_ioctl.h File Reference
#include <linux/types.h>
#include <linux/bitops.h>
#include <asm/ioctl.h>
Include dependency graph for drm_ioctl.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  drm_ioctl_desc
 

Macros

#define DRM_IOCTL_NR(n)   _IOC_NR(n)
 
#define DRM_IOCTL_TYPE(n)   _IOC_TYPE(n)
 
#define DRM_MAJOR   226
 

Typedefs

typedef int drm_ioctl_t(struct drm_device *dev, void *data, struct drm_file *file_priv)
 
typedef int drm_ioctl_compat_t(struct file *filp, unsigned int cmd, unsigned long arg)
 

Enumerations

enum  drm_ioctl_flags { DRM_AUTH = BIT(0) , DRM_MASTER = BIT(1) , DRM_ROOT_ONLY = BIT(2) , DRM_RENDER_ALLOW = BIT(5) }
 

: user-readable name for debug output

struct drm_ioctl_desc - DRM driver ioctl entry @cmd: ioctl command number, without flags @flags: a bitmask of &enum drm_ioctl_flags @func: handler for this ioctl

For convenience it's easier to create these using the DRM_IOCTL_DEF_DRV() macro.

#define DRM_IOCTL_DEF_DRV(ioctl, _func, _flags)
 
#define drm_compat_ioctl   NULL
 
long drm_ioctl (struct file *filp, unsigned int cmd, uintptr_t arg)
 
long drm_ioctl_kernel (struct file *, drm_ioctl_t, void *, u32)
 
bool drm_ioctl_flags (unsigned int nr, unsigned int *flags)
 
int drm_noop (struct drm_device *dev, void *data, struct drm_file *file_priv)
 
int drm_invalid_op (struct drm_device *dev, void *data, struct drm_file *file_priv)
 

Macro Definition Documentation

◆ drm_compat_ioctl

#define drm_compat_ioctl   NULL

◆ DRM_IOCTL_DEF_DRV

#define DRM_IOCTL_DEF_DRV (   ioctl,
  _func,
  _flags 
)
Value:
[DRM_IOCTL_NR(DRM_IOCTL_##ioctl) - DRM_COMMAND_BASE] = { \
.cmd = DRM_IOCTL_##ioctl, \
.func = _func, \
.flags = _flags, \
.name = #ioctl \
}
XEFileIOControl ioctl
Definition dirty.cpp:38
#define DRM_COMMAND_BASE
Definition drm.h:1363
#define DRM_IOCTL_NR(n)
Definition drm_ioctl.h:70

DRM_IOCTL_DEF_DRV() - helper macro to fill out a &struct drm_ioctl_desc @ioctl: ioctl command suffix @_func: handler for the ioctl @_flags: a bitmask of &enum drm_ioctl_flags

Small helper macro to create a &struct drm_ioctl_desc entry. The ioctl command number is constructed by prepending DRM_IOCTL\_ and passing that to DRM_IOCTL_NR().

◆ DRM_IOCTL_NR

#define DRM_IOCTL_NR (   n)    _IOC_NR(n)

◆ DRM_IOCTL_TYPE

#define DRM_IOCTL_TYPE (   n)    _IOC_TYPE(n)

◆ DRM_MAJOR

#define DRM_MAJOR   226

Typedef Documentation

◆ drm_ioctl_compat_t

typedef int drm_ioctl_compat_t(struct file *filp, unsigned int cmd, unsigned long arg)

drm_ioctl_compat_t - compatibility DRM ioctl function type. @filp: file pointer @cmd: ioctl command code

  • : DRM file this ioctl was made on

Just a typedef to make declaring an array of compatibility handlers easier. New drivers shouldn't screw up the structure layout for their ioctl structures and hence never need this.

◆ drm_ioctl_t

typedef int drm_ioctl_t(struct drm_device *dev, void *data, struct drm_file *file_priv)

drm_ioctl_t - DRM ioctl function type. @dev: DRM device inode @data: private pointer of the ioctl call @file_priv: DRM file this ioctl was made on

This is the DRM ioctl typedef. Note that drm_ioctl() has alrady copied @data into kernel-space, and will also copy it back, depending upon the read/write settings in the ioctl command code.

Enumeration Type Documentation

◆ drm_ioctl_flags

enum drm_ioctl_flags - DRM ioctl flags

Various flags that can be set in &drm_ioctl_desc.flags to control how userspace can use a given ioctl.

Enumerator
DRM_AUTH 

@DRM_AUTH:

This is for ioctl which are used for rendering, and require that the file descriptor is either for a render node, or if it's a legacy/primary node, then it must be authenticated.

DRM_MASTER 

@DRM_MASTER:

This must be set for any ioctl which can change the modeset or display state. Userspace must call the ioctl through a primary node, while it is the active master.

Note that read-only modeset ioctl can also be called by unauthenticated clients, or when a master is not the currently active one.

DRM_ROOT_ONLY 

@DRM_ROOT_ONLY:

Anything that could potentially wreak a master file descriptor needs to have this flag set. Current that's only for the SETMASTER and DROPMASTER ioctl, which e.g. logind can call to force a non-behaving master (display compositor) into compliance.

This is equivalent to callers with the SYSADMIN capability.

DRM_RENDER_ALLOW 

@DRM_RENDER_ALLOW:

This is used for all ioctl needed for rendering only, for drivers which support render nodes. This should be all new render drivers, and hence it should be always set for any ioctl with DRM_AUTH set. Note though that read-only query ioctl might have this set, but have not set DRM_AUTH because they do not require authentication.

Function Documentation

◆ drm_invalid_op()

int drm_invalid_op ( struct drm_device *  dev,
void *  data,
struct drm_file *  file_priv 
)

◆ drm_ioctl()

long drm_ioctl ( struct file *  filp,
unsigned int  cmd,
uintptr_t  arg 
)

◆ drm_ioctl_flags()

bool drm_ioctl_flags ( unsigned int  nr,
unsigned int *  flags 
)

◆ drm_ioctl_kernel()

long drm_ioctl_kernel ( struct file *  ,
drm_ioctl_t  ,
void *  ,
u32   
)

◆ drm_noop()

int drm_noop ( struct drm_device *  dev,
void *  data,
struct drm_file *  file_priv 
)