Esempio n. 1
0
File: serial.c Progetto: candraw/fOS
void serial_write(char c, uint16_t port)
{
    while (!serial_send_ready(port))
        ;

    outb(port, c);
}
Esempio n. 2
0
static void serial_send_buffer(serial_port* p, bool wait)
{
    while (true)
    {
        while (serial_send_ready(p) && p->send_buf_len != 0)
        {
            outb(p->io_port, (uint8)p->send_buf[p->send_buf_head++]);
            p->send_buf_len--;

            if (p->send_buf_head >= p->send_buf_maxlen) p->send_buf_head -= p->send_buf_maxlen;
        }

        if (wait && p->send_buf_len > 0)
        {
            while (!serial_send_ready(p)) asm volatile ("pause");
        }
        else
        {
            break;
        }
    }