void serial_write(char c, uint16_t port) { while (!serial_send_ready(port)) ; outb(port, c); }
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; } }