feat: (vfs) write_page and read_page file operations
[lunaix-os.git] / lunaix-os / kernel / tty / lxconsole.c
index ae5701b5002f8f752032d3e3d6eee6712f610032..80a7be6de25fd2b3140a54ff95da5eba0295f0d4 100644 (file)
@@ -119,10 +119,28 @@ lxconsole_init()
     fifo_init(&lx_console.input, valloc(4096), 4096, 0);
 
     lx_console.flush_timer = NULL;
+}
 
+int
+__tty_write_pg(struct device* dev, void* buf, size_t offset)
+{
+    return __tty_write(dev, buf, offset, PG_SIZE);
+}
+
+int
+__tty_read_pg(struct device* dev, void* buf, size_t offset)
+{
+    return __tty_read(dev, buf, offset, PG_SIZE);
+}
+
+void
+lxconsole_spawn_ttydev()
+{
     struct device* tty_dev = device_addseq(NULL, &lx_console, "tty");
     tty_dev->write = __tty_write;
+    tty_dev->write_page = __tty_write_pg;
     tty_dev->read = __tty_read;
+    tty_dev->read_page = __tty_read_pg;
     tty_dev->exec_cmd = __tty_exec_cmd;
 
     waitq_init(&lx_reader);
@@ -294,6 +312,10 @@ console_write(struct console* console, uint8_t* data, size_t size)
     console->wnd_start = rd_ptr;
     fbuf->flags |= FIFO_DIRTY;
     mutex_unlock(&fbuf->lock);
+
+    if (!lx_console.flush_timer) {
+        console_flush();
+    }
 }
 
 void