Added .gitignore
[comos.git] / include / chardev.h
blob167e4eb2036c384eb5954cc6d21b361c8910ac12
1 #ifndef CHARDEV_H
2 #define CHARDEV_H
4 // Character device management
6 #include "stdint.h"
8 enum {
9 MAX_CHARDEV_MAJOR = 255,
12 struct chardev;
14 struct chardev_functab {
15 ssize_t (* read)(struct chardev *, void *buf, size_t len);
16 ssize_t (* write)(struct chardev *, const void *buf, size_t len);
19 struct chardev {
20 struct chardev *prev, *next;
21 struct chardev_functab *functab;
22 char major, minor; // major/minor device numbers
25 // initialize the character device manager
26 void chardev_init(void);
28 ssize_t chardev_read(struct chardev *, void *buf, size_t len);
29 ssize_t chardev_write(struct chardev *, const void *buf, size_t len);
31 // character device registration - after registration,
32 // the device can be referenced by its major/minor device numbers.
33 int chardev_register(struct chardev *cdev);
34 int chardev_unregister(struct chardev *cdev);
36 // get a character device by its major/minor device numbers
37 struct chardev *chardev_get(int major, int minor);
39 #endif