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