drivers/video/fbdev/core/fb_chrdev.c

Source file repositories/reference/linux-study-clean/drivers/video/fbdev/core/fb_chrdev.c

File Facts

System
Linux kernel
Corpus path
drivers/video/fbdev/core/fb_chrdev.c
Extension
.c
Size
9973 bytes
Lines
439
Domain
Driver Families
Bucket
drivers/video
Inferred role
Driver Families: operation-table or driver-model contract
Status
pattern 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

static const struct file_operations fb_fops = {
	.owner = THIS_MODULE,
	.read = fb_read,
	.write = fb_write,
	.unlocked_ioctl = fb_ioctl,
#ifdef CONFIG_COMPAT
	.compat_ioctl = fb_compat_ioctl,
#endif
	.mmap = fb_mmap,
	.open = fb_open,
	.release = fb_release,
#if defined(HAVE_ARCH_FB_UNMAPPED_AREA) || \
	(defined(CONFIG_FB_PROVIDE_GET_FB_UNMAPPED_AREA) && \
	 !defined(CONFIG_MMU))
	.get_unmapped_area = get_fb_unmapped_area,
#endif
#ifdef CONFIG_FB_DEFERRED_IO
	.fsync = fb_deferred_io_fsync,
#endif
	.llseek = default_llseek,
};

int fb_register_chrdev(void)
{
	int ret;

	ret = register_chrdev(FB_MAJOR, "fb", &fb_fops);
	if (ret) {
		pr_err("Unable to get major %d for fb devs\n", FB_MAJOR);
		return ret;
	}

	return ret;
}

void fb_unregister_chrdev(void)
{
	unregister_chrdev(FB_MAJOR, "fb");
}

Annotation

Implementation Notes