Changeset 607c5f9 in mainline for generic/src
- Timestamp:
- 2005-11-23T00:16:03Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- a83a802
- Parents:
- 2677758
- Location:
- generic/src/console
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
generic/src/console/chardev.c
r2677758 r607c5f9 28 28 29 29 #include <console/chardev.h> 30 #include <putchar.h> 30 31 #include <synch/waitq.h> 31 32 #include <synch/spinlock.h> 32 33 33 /** Initialize character device. */ 34 void chardev_initialize(chardev_t *chardev, ready_func_t r) 34 /** Initialize character device. 35 * 36 * @param chardev Character device. 37 * @param op Implementation of character device operations. 38 */ 39 void chardev_initialize(chardev_t *chardev, chardev_operations_t *op) 35 40 { 36 41 waitq_initialize(&chardev->wq); … … 38 43 chardev->counter = 0; 39 44 chardev->index = 0; 40 chardev-> ready_func = r;45 chardev->op = op; 41 46 } 47 48 /** Push character read from input character device. 49 * 50 * @param chardev Character device. 51 * @param ch Character being pushed. 52 */ 53 void chardev_push_character(chardev_t *chardev, __u8 ch) 54 { 55 spinlock_lock(&chardev->lock); 56 chardev->counter++; 57 if (chardev->counter == CHARDEV_BUFLEN - 1) { 58 /* buffer full => disable device interrupt */ 59 chardev->op->suspend(); 60 } 61 62 putchar(ch); 63 chardev->buffer[chardev->index++] = ch; 64 chardev->index = chardev->index % CHARDEV_BUFLEN; /* index modulo size of buffer */ 65 waitq_wakeup(&chardev->wq, WAKEUP_FIRST); 66 spinlock_unlock(&chardev->lock); 67 } -
generic/src/console/console.c
r2677758 r607c5f9 83 83 interrupts_restore(ipl); 84 84 85 chardev-> ready_func();85 chardev->op->resume(); 86 86 87 87 return ch;
Note:
See TracChangeset
for help on using the changeset viewer.