xref: /linux-6.15/include/linux/cdev.h (revision 5ec68b2e)
11da177e4SLinus Torvalds #ifndef _LINUX_CDEV_H
21da177e4SLinus Torvalds #define _LINUX_CDEV_H
31da177e4SLinus Torvalds #ifdef __KERNEL__
41da177e4SLinus Torvalds 
5*5ec68b2eSJan Engelhardt #include <linux/kobject.h>
6*5ec68b2eSJan Engelhardt #include <linux/kdev_t.h>
7*5ec68b2eSJan Engelhardt #include <linux/list.h>
8*5ec68b2eSJan Engelhardt 
91da177e4SLinus Torvalds struct cdev {
101da177e4SLinus Torvalds 	struct kobject kobj;
111da177e4SLinus Torvalds 	struct module *owner;
1299ac48f5SArjan van de Ven 	const struct file_operations *ops;
131da177e4SLinus Torvalds 	struct list_head list;
141da177e4SLinus Torvalds 	dev_t dev;
151da177e4SLinus Torvalds 	unsigned int count;
161da177e4SLinus Torvalds };
171da177e4SLinus Torvalds 
1899ac48f5SArjan van de Ven void cdev_init(struct cdev *, const struct file_operations *);
191da177e4SLinus Torvalds 
201da177e4SLinus Torvalds struct cdev *cdev_alloc(void);
211da177e4SLinus Torvalds 
221da177e4SLinus Torvalds void cdev_put(struct cdev *p);
231da177e4SLinus Torvalds 
241da177e4SLinus Torvalds int cdev_add(struct cdev *, dev_t, unsigned);
251da177e4SLinus Torvalds 
261da177e4SLinus Torvalds void cdev_del(struct cdev *);
271da177e4SLinus Torvalds 
281da177e4SLinus Torvalds void cd_forget(struct inode *);
291da177e4SLinus Torvalds 
305da6185bSDavid Howells extern struct backing_dev_info directly_mappable_cdev_bdi;
315da6185bSDavid Howells 
321da177e4SLinus Torvalds #endif
331da177e4SLinus Torvalds #endif
34