Rev 4347 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4347 | Rev 4348 | ||
---|---|---|---|
Line 44... | Line 44... | ||
44 | struct indev; |
44 | struct indev; |
45 | 45 | ||
46 | /* Input character device operations interface. */ |
46 | /* Input character device operations interface. */ |
47 | typedef struct { |
47 | typedef struct { |
48 | /** Read character directly from device, assume interrupts disabled. */ |
48 | /** Read character directly from device, assume interrupts disabled. */ |
49 | char (* poll)(struct indev *); |
49 | wchar_t (* poll)(struct indev *); |
50 | } indev_operations_t; |
50 | } indev_operations_t; |
51 | 51 | ||
52 | /** Character input device. */ |
52 | /** Character input device. */ |
53 | typedef struct indev { |
53 | typedef struct indev { |
54 | char *name; |
54 | char *name; |
55 | waitq_t wq; |
55 | waitq_t wq; |
56 | 56 | ||
57 | /** Protects everything below. */ |
57 | /** Protects everything below. */ |
58 | SPINLOCK_DECLARE(lock); |
58 | SPINLOCK_DECLARE(lock); |
59 | uint8_t buffer[INDEV_BUFLEN]; |
59 | wchar_t buffer[INDEV_BUFLEN]; |
60 | count_t counter; |
60 | count_t counter; |
61 | 61 | ||
62 | /** Implementation of indev operations. */ |
62 | /** Implementation of indev operations. */ |
63 | indev_operations_t *op; |
63 | indev_operations_t *op; |
64 | index_t index; |
64 | index_t index; |
Line 69... | Line 69... | ||
69 | struct outdev; |
69 | struct outdev; |
70 | 70 | ||
71 | /* Output character device operations interface. */ |
71 | /* Output character device operations interface. */ |
72 | typedef struct { |
72 | typedef struct { |
73 | /** Write character to output. */ |
73 | /** Write character to output. */ |
74 | void (* write)(struct outdev *, wchar_t c, bool silent); |
74 | void (* write)(struct outdev *, wchar_t, bool); |
75 | } outdev_operations_t; |
75 | } outdev_operations_t; |
76 | 76 | ||
77 | /** Character input device. */ |
77 | /** Character input device. */ |
78 | typedef struct outdev { |
78 | typedef struct outdev { |
79 | char *name; |
79 | char *name; |
Line 86... | Line 86... | ||
86 | void *data; |
86 | void *data; |
87 | } outdev_t; |
87 | } outdev_t; |
88 | 88 | ||
89 | extern void indev_initialize(char *name, indev_t *indev, |
89 | extern void indev_initialize(char *name, indev_t *indev, |
90 | indev_operations_t *op); |
90 | indev_operations_t *op); |
91 | extern void indev_push_character(indev_t *indev, uint8_t ch); |
91 | extern void indev_push_character(indev_t *indev, wchar_t ch); |
- | 92 | extern wchar_t indev_pop_character(indev_t *indev); |
|
92 | 93 | ||
93 | extern void outdev_initialize(char *name, outdev_t *outdev, |
94 | extern void outdev_initialize(char *name, outdev_t *outdev, |
94 | outdev_operations_t *op); |
95 | outdev_operations_t *op); |
95 | 96 | ||
- | 97 | extern bool check_poll(indev_t *indev); |
|
- | 98 | ||
96 | #endif /* KERN_CHARDEV_H_ */ |
99 | #endif /* KERN_CHARDEV_H_ */ |
97 | 100 | ||
98 | /** @} |
101 | /** @} |
99 | */ |
102 | */ |