version 1.18, 2020/02/26 13:53:58 |
version 1.19, 2020/04/24 11:33:28 |
|
|
void dev_sio_run(void *); |
void dev_sio_run(void *); |
void dev_sio_hup(void *); |
void dev_sio_hup(void *); |
|
|
|
extern struct fileops dev_sioctl_ops; |
|
|
struct fileops dev_sio_ops = { |
struct fileops dev_sio_ops = { |
"sio", |
"sio", |
dev_sio_pollfd, |
dev_sio_pollfd, |
|
|
d->mode &= ~MODE_REC; |
d->mode &= ~MODE_REC; |
sio_onmove(d->sio.hdl, dev_sio_onmove, d); |
sio_onmove(d->sio.hdl, dev_sio_onmove, d); |
d->sio.file = file_new(&dev_sio_ops, d, "dev", sio_nfds(d->sio.hdl)); |
d->sio.file = file_new(&dev_sio_ops, d, "dev", sio_nfds(d->sio.hdl)); |
|
if (d->sioctl.hdl) { |
|
d->sioctl.file = file_new(&dev_sioctl_ops, d, "mix", |
|
sioctl_nfds(d->sioctl.hdl)); |
|
} |
timo_set(&d->sio.watchdog, dev_sio_timeout, d); |
timo_set(&d->sio.watchdog, dev_sio_timeout, d); |
dev_sioctl_open(d); |
dev_sioctl_open(d); |
return 1; |
return 1; |
|
|
timo_del(&d->sio.watchdog); |
timo_del(&d->sio.watchdog); |
file_del(d->sio.file); |
file_del(d->sio.file); |
sio_close(d->sio.hdl); |
sio_close(d->sio.hdl); |
dev_sioctl_close(d); |
|
if (d->sioctl.hdl) { |
if (d->sioctl.hdl) { |
|
file_del(d->sioctl.file); |
sioctl_close(d->sioctl.hdl); |
sioctl_close(d->sioctl.hdl); |
d->sioctl.hdl = NULL; |
d->sioctl.hdl = NULL; |
} |
} |
|
|
d->sio.hdl = hdl; |
d->sio.hdl = hdl; |
d->sioctl.hdl = ctlhdl; |
d->sioctl.hdl = ctlhdl; |
d->sio.file = file_new(&dev_sio_ops, d, "dev", sio_nfds(hdl)); |
d->sio.file = file_new(&dev_sio_ops, d, "dev", sio_nfds(hdl)); |
|
if (d->sioctl.hdl) { |
|
d->sioctl.file = file_new(&dev_sioctl_ops, d, "mix", |
|
sioctl_nfds(ctlhdl)); |
|
} |
sio_onmove(hdl, dev_sio_onmove, d); |
sio_onmove(hdl, dev_sio_onmove, d); |
return 1; |
return 1; |
bad_close: |
bad_close: |
|
|
file_del(d->sio.file); |
file_del(d->sio.file); |
sio_close(d->sio.hdl); |
sio_close(d->sio.hdl); |
if (d->sioctl.hdl) { |
if (d->sioctl.hdl) { |
|
file_del(d->sioctl.file); |
sioctl_close(d->sioctl.hdl); |
sioctl_close(d->sioctl.hdl); |
d->sioctl.hdl = NULL; |
d->sioctl.hdl = NULL; |
} |
} |