drivers/gpu/drm/xen/xen_drm_front_evtchnl.h

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/xen/xen_drm_front_evtchnl.h

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/xen/xen_drm_front_evtchnl.h
Extension
.h
Size
2009 bytes
Lines
82
Domain
Driver Families
Bucket
drivers/gpu
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct xen_drm_front_evtchnl {
	struct xen_drm_front_info *front_info;
	int gref;
	int port;
	int irq;
	int index;
	enum xen_drm_front_evtchnl_state state;
	enum xen_drm_front_evtchnl_type type;
	/* either response id or incoming event id */
	u16 evt_id;
	/* next request id or next expected event id */
	u16 evt_next_id;
	union {
		struct {
			struct xen_displif_front_ring ring;
			struct completion completion;
			/* latest response status */
			int resp_status;
			/* serializer for backend IO: request/response */
			struct mutex req_io_lock;
		} req;
		struct {
			struct xendispl_event_page *page;
		} evt;
	} u;
};

struct xen_drm_front_evtchnl_pair {
	struct xen_drm_front_evtchnl req;
	struct xen_drm_front_evtchnl evt;
};

int xen_drm_front_evtchnl_create_all(struct xen_drm_front_info *front_info);

int xen_drm_front_evtchnl_publish_all(struct xen_drm_front_info *front_info);

void xen_drm_front_evtchnl_flush(struct xen_drm_front_evtchnl *evtchnl);

void xen_drm_front_evtchnl_set_state(struct xen_drm_front_info *front_info,
				     enum xen_drm_front_evtchnl_state state);

void xen_drm_front_evtchnl_free_all(struct xen_drm_front_info *front_info);

#endif /* __XEN_DRM_FRONT_EVTCHNL_H_ */

Annotation

Implementation Notes