/** * @unregister: * * Called when &drm_device is unregistered. The client should respond by * releasing its resources using drm_client_release(). * * This callback is optional.
*/ void (*unregister)(struct drm_client_dev *client);
/** * @restore: * * Called on drm_lastclose(). The first client instance in the list that * returns zero gets the privilege to restore and no more clients are * called. This callback is not called after @unregister has been called. * * Note that the core does not guarantee exclusion against concurrent * drm_open(). Clients need to ensure this themselves, for example by * using drm_master_internal_acquire() and * drm_master_internal_release(). * * This callback is optional.
*/ int (*restore)(struct drm_client_dev *client);
/** * @hotplug: * * Called on drm_kms_helper_hotplug_event(). * This callback is not called after @unregister has been called. * * This callback is optional.
*/ int (*hotplug)(struct drm_client_dev *client);
/** * @suspend: * * Called when suspending the device. * * This callback is optional. * * FIXME: Some callers hold the console lock when invoking this * function. This interferes with fbdev emulation, which * also tries to acquire the lock. Push the console lock * into the callback and remove 'holds_console_lock'.
*/ int (*suspend)(struct drm_client_dev *client, bool holds_console_lock);
/** * @resume: * * Called when resuming the device from suspend. * * This callback is optional. * * FIXME: Some callers hold the console lock when invoking this * function. This interferes with fbdev emulation, which * also tries to acquire the lock. Push the console lock * into the callback and remove 'holds_console_lock'.
*/ int (*resume)(struct drm_client_dev *client, bool holds_console_lock);
};
/** * @name: Name of the client.
*/ constchar *name;
/** * @list: * * List of all clients of a DRM device, linked into * &drm_device.clientlist. Protected by &drm_device.clientlist_mutex.
*/ struct list_head list;
/** * @gem: GEM object backing this buffer * * FIXME: The dependency on GEM here isn't required, we could * convert the driver handle to a dma-buf instead and use the * backend-agnostic dma-buf vmap support instead. This would * require that the handle2fd prime ioctl is reworked to pull the * fd_install step out of the driver backend hooks, to make that * final step optional for internal users.
*/ struct drm_gem_object *gem;
/** * @map: Virtual address for the buffer
*/ struct iosys_map map;
/** * drm_client_for_each_connector_iter - connector_list iterator macro * @connector: &struct drm_connector pointer used as cursor * @iter: &struct drm_connector_list_iter * * This iterates the connectors that are useable for internal clients (excludes * writeback connectors). * * For more info see drm_for_each_connector_iter().
*/ #define drm_client_for_each_connector_iter(connector, iter) \
drm_for_each_connector_iter(connector, iter) \ if (connector->connector_type != DRM_MODE_CONNECTOR_WRITEBACK)
#endif
Messung V0.5
¤ Dauer der Verarbeitung: 0.19 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.