drivers/gpu/drm/nouveau/nouveau_ioc32.c

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/nouveau/nouveau_ioc32.c

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/nouveau/nouveau_ioc32.c
Extension
.c
Size
2240 bytes
Lines
71
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

#include <linux/compat.h>

#include <drm/drm.h>
#include <drm/drm_ioctl.h>

#include "nouveau_ioctl.h"

/*
 * Called whenever a 32-bit process running under a 64-bit kernel
 * performs an ioctl on /dev/dri/card<n>.
 *
 * \param filp file pointer.
 * \param cmd command.
 * \param arg user argument.
 * \return zero on success or negative number on failure.
 */
long nouveau_compat_ioctl(struct file *filp, unsigned int cmd,
			 unsigned long arg)
{
	unsigned int nr = DRM_IOCTL_NR(cmd);
	drm_ioctl_compat_t *fn = NULL;
	int ret;

	if (nr < DRM_COMMAND_BASE)
		return drm_compat_ioctl(filp, cmd, arg);

#if 0
	if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(mga_compat_ioctls))
		fn = nouveau_compat_ioctls[nr - DRM_COMMAND_BASE];
#endif
	if (fn != NULL)
		ret = (*fn)(filp, cmd, arg);
	else
		ret = nouveau_drm_ioctl(filp, cmd, arg);

	return ret;
}

Annotation

Implementation Notes