XenevaOS
Loading...
Searching...
No Matches
Macros | Typedefs | Functions
drm_managed.h File Reference
#include <linux/gfp.h>
#include <linux/overflow.h>
#include <linux/types.h>
Include dependency graph for drm_managed.h:

Go to the source code of this file.

Macros

#define drmm_add_action(dev, action, data)    __drmm_add_action(dev, action, data, #action)
 
#define drmm_add_action_or_reset(dev, action, data)    __drmm_add_action_or_reset(dev, action, data, #action)
 
#define drmm_mutex_init(dev, lock)
 
#define drmm_alloc_ordered_workqueue(dev, fmt, flags, args...)
 

Typedefs

typedef void(* drmres_release_t) (struct drm_device *dev, void *res)
 

Functions

int __must_check __drmm_add_action (struct drm_device *dev, drmres_release_t action, void *data, const char *name)
 
int __must_check __drmm_add_action_or_reset (struct drm_device *dev, drmres_release_t action, void *data, const char *name)
 
void drmm_release_action (struct drm_device *dev, drmres_release_t action, void *data)
 
void * drmm_kmalloc (struct drm_device *dev, size_t size, gfp_t gfp) __malloc
 
char * drmm_kstrdup (struct drm_device *dev, const char *s, gfp_t gfp)
 
void drmm_kfree (struct drm_device *dev, void *data)
 
void __drmm_mutex_release (struct drm_device *dev, void *res)
 
void __drmm_workqueue_release (struct drm_device *device, void *wq)
 

Macro Definition Documentation

◆ drmm_add_action

#define drmm_add_action (   dev,
  action,
  data 
)     __drmm_add_action(dev, action, data, #action)

drmm_add_action - add a managed release action to a &drm_device @dev: DRM device @action: function which should be called when @dev is released @data: opaque pointer, passed to @action

This function adds the @release action with optional parameter @data to the list of cleanup actions for @dev. The cleanup actions will be run in reverse order in the final drm_dev_put() call for @dev.

◆ drmm_add_action_or_reset

#define drmm_add_action_or_reset (   dev,
  action,
  data 
)     __drmm_add_action_or_reset(dev, action, data, #action)

drmm_add_action_or_reset - add a managed release action to a &drm_device @dev: DRM device @action: function which should be called when @dev is released @data: opaque pointer, passed to @action

Similar to drmm_add_action(), with the only difference that upon failure @action is directly called for any cleanup work necessary on failures.

◆ drmm_alloc_ordered_workqueue

#define drmm_alloc_ordered_workqueue (   dev,
  fmt,
  flags,
  args... 
)
Value:
({ \
struct workqueue_struct *wq = alloc_ordered_workqueue(fmt, flags, ##args); \
wq ? ({ \
ret ? ERR_PTR(ret) : wq; \
}) : ERR_PTR(-ENOMEM); \
})
uint8_t flags
Definition virtio.h:0
#define ENOMEM
Definition acclib.h:192
const char * fmt
Definition drm_file.h:466
void __drmm_workqueue_release(struct drm_device *device, void *wq)
#define drmm_add_action_or_reset(dev, action, data)
Definition drm_managed.h:41
const struct device * dev
Definition drm_print.h:519
#define ERR_PTR(err)
Definition err.h:51
const char const char va_list args
Definition seq_buf.h:182
Definition workqueue.h:50

drmm_alloc_ordered_workqueue - &drm_device managed alloc_ordered_workqueue() @dev: DRM device @fmt: printf format for the name of the workqueue @flags: WQ_* flags (only WQ_FREEZABLE and WQ_MEM_RECLAIM are meaningful) @args: args for @fmt

This is a &drm_device-managed version of alloc_ordered_workqueue(). The allocated workqueue is automatically destroyed on the final drm_dev_put().

Returns: workqueue on success, negative ERR_PTR otherwise.

◆ drmm_mutex_init

#define drmm_mutex_init (   dev,
  lock 
)
Value:
({ \
mutex_init(lock); \
drmm_add_action_or_reset(dev, __drmm_mutex_release, lock); \
}) \
void __drmm_mutex_release(struct drm_device *dev, void *res)

drmm_mutex_init - &drm_device-managed mutex_init() @dev: DRM device @lock: lock to be initialized

Returns: 0 on success, or a negative errno code otherwise.

This is a &drm_device-managed version of mutex_init(). The initialized lock is automatically destroyed on the final drm_dev_put().

Typedef Documentation

◆ drmres_release_t

typedef void(* drmres_release_t) (struct drm_device *dev, void *res)

Function Documentation

◆ __drmm_add_action()

int __must_check __drmm_add_action ( struct drm_device *  dev,
drmres_release_t  action,
void *  data,
const char *  name 
)

◆ __drmm_add_action_or_reset()

int __must_check __drmm_add_action_or_reset ( struct drm_device *  dev,
drmres_release_t  action,
void *  data,
const char *  name 
)

◆ __drmm_mutex_release()

void __drmm_mutex_release ( struct drm_device *  dev,
void *  res 
)

◆ __drmm_workqueue_release()

void __drmm_workqueue_release ( struct drm_device *  device,
void *  wq 
)

◆ drmm_kfree()

void drmm_kfree ( struct drm_device *  dev,
void *  data 
)

◆ drmm_kmalloc()

void * drmm_kmalloc ( struct drm_device *  dev,
size_t  size,
gfp_t  gfp 
)

◆ drmm_kstrdup()

char * drmm_kstrdup ( struct drm_device *  dev,
const char *  s,
gfp_t  gfp 
)

◆ drmm_release_action()

void drmm_release_action ( struct drm_device *  dev,
drmres_release_t  action,
void *  data 
)