Changeset 607c5f9 in mainline for generic/src


Ignore:
Timestamp:
2005-11-23T00:16:03Z (20 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
a83a802
Parents:
2677758
Message:

Enable dummy kconsole for ia32 and amd64 (UP mode works).

Location:
generic/src/console
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • generic/src/console/chardev.c

    r2677758 r607c5f9  
    2828
    2929#include <console/chardev.h>
     30#include <putchar.h>
    3031#include <synch/waitq.h>
    3132#include <synch/spinlock.h>
    3233
    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 */
     39void chardev_initialize(chardev_t *chardev, chardev_operations_t *op)
    3540{
    3641        waitq_initialize(&chardev->wq);
     
    3843        chardev->counter = 0;
    3944        chardev->index = 0;
    40         chardev->ready_func = r;
     45        chardev->op = op;
    4146}
     47
     48/** Push character read from input character device.
     49 *
     50 * @param chardev Character device.
     51 * @param ch Character being pushed.
     52 */
     53void 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  
    8383        interrupts_restore(ipl);
    8484
    85         chardev->ready_func();
     85        chardev->op->resume();
    8686
    8787        return ch;
Note: See TracChangeset for help on using the changeset viewer.