feat: fstat now handle symbolic link
[lunaix-os.git] / lunaix-os / hal / char / serial.c
index 2c4a272a39f216dd9942c021aac1cc0730ecb176..9297136a5b02a580862de8ef4c46effce27c7a07 100644 (file)
@@ -158,10 +158,11 @@ __serial_exec_command(struct device* dev, u32_t req, va_list args)
 #define RXBUF_SIZE 512
 
 struct serial_dev*
 #define RXBUF_SIZE 512
 
 struct serial_dev*
-serial_create()
+serial_create(struct devclass* class)
 {
     struct serial_dev* sdev = valloc(sizeof(struct serial_dev));
 {
     struct serial_dev* sdev = valloc(sizeof(struct serial_dev));
-    struct device* dev = device_addseq(NULL, sdev, "ttyS%d", serial_idx++);
+    struct device* dev =
+      device_addseq(NULL, class, sdev, "ttyS%d", serial_idx++);
     dev->ops.read = __serial_read;
     dev->ops.read_page = __serial_read_page;
     dev->ops.write = __serial_write;
     dev->ops.read = __serial_read;
     dev->ops.read_page = __serial_read_page;
     dev->ops.write = __serial_write;
@@ -171,6 +172,8 @@ serial_create()
     sdev->dev = dev;
     dev->underlay = sdev;
 
     sdev->dev = dev;
     dev->underlay = sdev;
 
+    waitq_init(&sdev->wq_rxdone);
+    waitq_init(&sdev->wq_txdone);
     fifo_init(&sdev->rxbuf, valloc(RXBUF_SIZE), RXBUF_SIZE, 0);
     llist_append(&serial_devs, &sdev->sdev_list);
     // llist_init_head(&sdev->cmds);
     fifo_init(&sdev->rxbuf, valloc(RXBUF_SIZE), RXBUF_SIZE, 0);
     llist_append(&serial_devs, &sdev->sdev_list);
     // llist_init_head(&sdev->cmds);