CasperSecurity

Current Path : /usr/src/linux-headers-5.15.0-164/include/drm/
Upload File :
Current File : //usr/src/linux-headers-5.15.0-164/include/drm/drm_vblank_work.h

/* SPDX-License-Identifier: MIT */

#ifndef _DRM_VBLANK_WORK_H_
#define _DRM_VBLANK_WORK_H_

#include <linux/kthread.h>

struct drm_crtc;

/**
 * struct drm_vblank_work - A delayed work item which delays until a target
 * vblank passes, and then executes at realtime priority outside of IRQ
 * context.
 *
 * See also:
 * drm_vblank_work_schedule()
 * drm_vblank_work_init()
 * drm_vblank_work_cancel_sync()
 * drm_vblank_work_flush()
 */
struct drm_vblank_work {
	/**
	 * @base: The base &kthread_work item which will be executed by
	 * &drm_vblank_crtc.worker. Drivers should not interact with this
	 * directly, and instead rely on drm_vblank_work_init() to initialize
	 * this.
	 */
	struct kthread_work base;

	/**
	 * @vblank: A pointer to &drm_vblank_crtc this work item belongs to.
	 */
	struct drm_vblank_crtc *vblank;

	/**
	 * @count: The target vblank this work will execute on. Drivers should
	 * not modify this value directly, and instead use
	 * drm_vblank_work_schedule()
	 */
	u64 count;

	/**
	 * @cancelling: The number of drm_vblank_work_cancel_sync() calls that
	 * are currently running. A work item cannot be rescheduled until all
	 * calls have finished.
	 */
	int cancelling;

	/**
	 * @node: The position of this work item in
	 * &drm_vblank_crtc.pending_work.
	 */
	struct list_head node;
};

/**
 * to_drm_vblank_work - Retrieve the respective &drm_vblank_work item from a
 * &kthread_work
 * @_work: The &kthread_work embedded inside a &drm_vblank_work
 */
#define to_drm_vblank_work(_work) \
	container_of((_work), struct drm_vblank_work, base)

int drm_vblank_work_schedule(struct drm_vblank_work *work,
			     u64 count, bool nextonmiss);
void drm_vblank_work_init(struct drm_vblank_work *work, struct drm_crtc *crtc,
			  void (*func)(struct kthread_work *work));
bool drm_vblank_work_cancel_sync(struct drm_vblank_work *work);
void drm_vblank_work_flush(struct drm_vblank_work *work);

#endif /* !_DRM_VBLANK_WORK_H_ */
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY