xref: /linux-6.15/include/linux/cdev.h (revision 9d64fc08)
1 #ifndef _LINUX_CDEV_H
2 #define _LINUX_CDEV_H
3 
4 #include <linux/kobject.h>
5 #include <linux/kdev_t.h>
6 #include <linux/list.h>
7 #include <linux/device.h>
8 
9 struct file_operations;
10 struct inode;
11 struct module;
12 
13 struct cdev {
14 	struct kobject kobj;
15 	struct module *owner;
16 	const struct file_operations *ops;
17 	struct list_head list;
18 	dev_t dev;
19 	unsigned int count;
20 } __randomize_layout;
21 
22 void cdev_init(struct cdev *, const struct file_operations *);
23 
24 struct cdev *cdev_alloc(void);
25 
26 void cdev_put(struct cdev *p);
27 
28 int cdev_add(struct cdev *, dev_t, unsigned);
29 
30 void cdev_set_parent(struct cdev *p, struct kobject *kobj);
31 int cdev_device_add(struct cdev *cdev, struct device *dev);
32 void cdev_device_del(struct cdev *cdev, struct device *dev);
33 
34 void cdev_del(struct cdev *);
35 
36 void cd_forget(struct inode *);
37 
38 #endif
39