fix lwp_free tty switch to foreground error (#7945)

This commit is contained in:
geniusgogo 2023-08-12 10:50:45 +08:00 committed by GitHub
parent 1b5ed06d38
commit a6959a9ef8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 3 deletions

View File

@ -469,13 +469,18 @@ void lwp_free(struct rt_lwp* lwp)
if (lwp->tty != RT_NULL) if (lwp->tty != RT_NULL)
{ {
rt_mutex_take(&lwp->tty->lock, RT_WAITING_FOREVER); rt_mutex_take(&lwp->tty->lock, RT_WAITING_FOREVER);
old_lwp = tty_pop(&lwp->tty->head, RT_NULL);
rt_mutex_release(&lwp->tty->lock);
if (lwp->tty->foreground == lwp) if (lwp->tty->foreground == lwp)
{ {
old_lwp = tty_pop(&lwp->tty->head, RT_NULL);
lwp->tty->foreground = old_lwp; lwp->tty->foreground = old_lwp;
lwp->tty = RT_NULL;
} }
else
{
tty_pop(&lwp->tty->head, lwp);
}
rt_mutex_release(&lwp->tty->lock);
lwp->tty = RT_NULL;
} }
} }
else else