4 // Character device management
9 MAX_CHARDEV_MAJOR
= 255,
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
);
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
);