mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-11-11 16:09:31 +03:00
vere: cleans up i/o driver shutdown
This commit is contained in:
parent
37cf2135bc
commit
9816434890
@ -58,6 +58,7 @@ _fore_io_kick(u3_auto* car_u, u3_noun wir, u3_noun cad)
|
|||||||
static void
|
static void
|
||||||
_fore_io_exit(u3_auto* car_u)
|
_fore_io_exit(u3_auto* car_u)
|
||||||
{
|
{
|
||||||
|
c3_free(car_u);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* u3_fore_io_init(): initialize fore
|
/* u3_fore_io_init(): initialize fore
|
||||||
|
@ -261,10 +261,7 @@ u3_term_log_init(void)
|
|||||||
void
|
void
|
||||||
u3_term_log_exit(void)
|
u3_term_log_exit(void)
|
||||||
{
|
{
|
||||||
if ( c3y == u3_Host.ops_u.tem ) {
|
if ( c3n == u3_Host.ops_u.tem ) {
|
||||||
uv_close((uv_handle_t*)&u3_Host.uty_u->pop_u, 0);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
u3_utty* uty_u;
|
u3_utty* uty_u;
|
||||||
|
|
||||||
for ( uty_u = u3_Host.uty_u; uty_u; uty_u = uty_u->nex_u ) {
|
for ( uty_u = u3_Host.uty_u; uty_u; uty_u = uty_u->nex_u ) {
|
||||||
@ -276,13 +273,12 @@ u3_term_log_exit(void)
|
|||||||
c3_assert(!"exit-fcntl");
|
c3_assert(!"exit-fcntl");
|
||||||
}
|
}
|
||||||
_write(uty_u->fid_i, "\r\n", 2);
|
_write(uty_u->fid_i, "\r\n", 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
uv_close((uv_handle_t*)&uty_u->tat_u.sun_u.tim_u, 0);
|
uv_close((uv_handle_t*)&u3_Host.uty_u->pop_u, 0);
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* _term_tcsetattr(): tcsetattr w/retry on EINTR.
|
/* _term_tcsetattr(): tcsetattr w/retry on EINTR.
|
||||||
*/
|
*/
|
||||||
static c3_i
|
static c3_i
|
||||||
@ -1402,17 +1398,33 @@ _term_io_kick(u3_auto* car_u, u3_noun wir, u3_noun cad)
|
|||||||
return ret_o;
|
return ret_o;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_term_io_exit_cb(uv_handle_t* han_u)
|
||||||
|
{
|
||||||
|
u3_auto* car_u = han_u->data;
|
||||||
|
c3_free(car_u);
|
||||||
|
}
|
||||||
|
|
||||||
/* _term_io_exit(): clean up terminal.
|
/* _term_io_exit(): clean up terminal.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
_term_io_exit(u3_auto* car_u)
|
_term_io_exit(u3_auto* car_u)
|
||||||
{
|
{
|
||||||
if ( c3n == u3_Host.ops_u.tem ) {
|
|
||||||
u3_utty* uty_u = _term_main();
|
u3_utty* uty_u = _term_main();
|
||||||
uv_read_stop((uv_stream_t*)&(uty_u->pop_u));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// NB, closed in u3_term_log_exit()
|
||||||
|
//
|
||||||
|
uv_read_stop((uv_stream_t*)&(uty_u->pop_u));
|
||||||
|
|
||||||
|
if ( c3n == u3_Host.ops_u.tem ) {
|
||||||
|
uv_timer_t* han_u = &(uty_u->tat_u.sun_u.tim_u);
|
||||||
|
han_u->data = car_u;
|
||||||
|
|
||||||
|
uv_close((uv_handle_t*)han_u, _term_io_exit_cb);
|
||||||
|
}
|
||||||
|
else {
|
||||||
c3_free(car_u);
|
c3_free(car_u);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* u3_term_io_init(): initialize terminal
|
/* u3_term_io_init(): initialize terminal
|
||||||
|
Loading…
Reference in New Issue
Block a user