X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/8fce4520de1f257819b16f9253fa28dcdae743f4..6f6da1abb22dff69dbb710bd2fd9d95f083f2b43:/lunaix-os/hal/char/serial.c?ds=sidebyside diff --git a/lunaix-os/hal/char/serial.c b/lunaix-os/hal/char/serial.c index 2c4a272..9297136 100644 --- a/lunaix-os/hal/char/serial.c +++ b/lunaix-os/hal/char/serial.c @@ -158,10 +158,11 @@ __serial_exec_command(struct device* dev, u32_t req, va_list args) #define RXBUF_SIZE 512 struct serial_dev* -serial_create() +serial_create(struct devclass* class) { 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; @@ -171,6 +172,8 @@ serial_create() 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);