Deleted Added
full compact
33c33
< __FBSDID("$FreeBSD: head/sys/kern/tty_pty.c 154170 2006-01-10 09:19:10Z phk $");
---
> __FBSDID("$FreeBSD: head/sys/kern/tty_pty.c 154833 2006-01-26 01:30:34Z cognet $");
109a110
> int pt_devs_open, pt_devc_open;
135d135
< struct cdev *devs;
145a146,148
> /*
> * Initially do not create a slave endpoint.
> */
147,148d149
< pt->devs = devs = make_dev_cred(&pts_cdevsw, n, td->td_ucred,
< UID_ROOT, GID_WHEEL, 0666, "tty%c%r", names[n / 32], n % 32);
153,155c154,155
< devs->si_drv1 = devc->si_drv1 = pt;
< devs->si_tty = devc->si_tty = pt->pt_tty;
< pt->pt_tty->t_dev = devs;
---
> devc->si_drv1 = pt;
> devc->si_tty = pt->pt_tty;
158a159,186
> static void
> pty_create_slave(struct ucred *cred, struct ptsc *pt, int n)
> {
>
> pt->devs = make_dev_cred(&pts_cdevsw, n, cred, UID_ROOT, GID_WHEEL,
> 0666, "tty%c%r", names[n / 32], n % 32);
> pt->devs->si_drv1 = pt;
> pt->devs->si_tty = pt->pt_tty;
> pt->pt_tty->t_dev = pt->devs;
> }
>
> static void
> pty_destroy_slave(struct ptsc *pt)
> {
>
> pt->pt_tty->t_dev = NULL;
> destroy_dev(pt->devs);
> pt->devs = NULL;
> }
>
> static void
> pty_maybe_destroy_slave(struct ptsc *pt)
> {
>
> if (pt->pt_devc_open == 0 && pt->pt_devs_open == 0)
> pty_destroy_slave(pt);
> }
>
188c216
< if (error == 0)
---
> if (error == 0) {
189a218,220
> pt->pt_devs_open = 1;
> } else
> pty_maybe_destroy_slave(pt);
195a227
> struct ptsc *pti;
199a232,235
> pti = dev->si_drv1;
>
> KASSERT(dev == pti->devs, ("ptsclose: dev != pti->devs"));
>
201a238,241
>
> pti->pt_devs_open = 0;
> pty_maybe_destroy_slave(pti);
>
288a329,332
>
> pty_create_slave(td->td_ucred, pt, minor(dev));
> pt->pt_devc_open = 1;
>
294a339
> struct ptsc *pti = dev->si_drv1;
314a360,361
> pti->pt_devc_open = 0;
> pty_maybe_destroy_slave(pti);