Module Name: src
Committed By: pgoyette
Date: Tue Sep 4 02:21:59 UTC 2018
Modified Files:
src/sys/compat/common [pgoyette-compat]: tty_60.c
src/sys/compat/sys [pgoyette-compat]: ttycom.h
src/sys/kern [pgoyette-compat]: tty.c tty_ptm.c
src/sys/sys [pgoyette-compat]: tty.h
Log Message:
Separate COMPAT_BSDPTY stuff from tty COMPAT_60 stuff. Enables
building of COMPAT_60 module whether or not COMPAT_BSDPTY is
defined in the kernel.
To generate a diff of this commit:
cvs rdiff -u -r1.4.16.3 -r1.4.16.4 src/sys/compat/common/tty_60.c
cvs rdiff -u -r1.2 -r1.2.40.1 src/sys/compat/sys/ttycom.h
cvs rdiff -u -r1.275.2.2 -r1.275.2.3 src/sys/kern/tty.c
cvs rdiff -u -r1.37 -r1.37.16.1 src/sys/kern/tty_ptm.c
cvs rdiff -u -r1.94.2.1 -r1.94.2.2 src/sys/sys/tty.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/compat/common/tty_60.c
diff -u src/sys/compat/common/tty_60.c:1.4.16.3 src/sys/compat/common/tty_60.c:1.4.16.4
--- src/sys/compat/common/tty_60.c:1.4.16.3 Sun Mar 18 23:34:25 2018
+++ src/sys/compat/common/tty_60.c Tue Sep 4 02:21:58 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tty_60.c,v 1.4.16.3 2018/03/18 23:34:25 pgoyette Exp $ */
+/* $NetBSD: tty_60.c,v 1.4.16.4 2018/09/04 02:21:58 pgoyette Exp $ */
/*-
* Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tty_60.c,v 1.4.16.3 2018/03/18 23:34:25 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tty_60.c,v 1.4.16.4 2018/09/04 02:21:58 pgoyette Exp $");
#if defined(_KERNEL_OPT)
#include "opt_compat_netbsd.h"
@@ -92,14 +92,14 @@ compat_60_ptmget_ioctl(dev_t dev, u_long
* COMPAT_60 versions of ttioctl and ptmioctl.
*/
int
-compat_60_ttioctl(struct tty *tp, u_long cmd, void *data, int flag,
+compat_60_ttioctl(dev_t dev, u_long cmd, void *data, int flag,
struct lwp *l)
{
switch (cmd) {
case COMPAT_60_TIOCPTMGET:
case COMPAT_60_TIOCPTSNAME:
- return compat_60_ptmget_ioctl(tp->t_dev, cmd, data, flag, l);
+ return compat_60_ptmget_ioctl(dev, cmd, data, flag, l);
default:
return EPASSTHROUGH;
}
@@ -122,12 +122,12 @@ kern_tty_60_init(void)
{
vec_compat_ttioctl_60 = compat_60_ttioctl;
-/* vec_compat_ptmioctl_60 = compat_60_ptmioctl; XXX NOT-YET */
+ vec_compat_ptmioctl_60 = compat_60_ptmioctl;
}
void
kern_tty_60_fini(void)
{
vec_compat_ttioctl_60 = NULL;
-/* vec_compat_ptmioctl_60 = NULL; XXX NOT-YET */
+ vec_compat_ptmioctl_60 = stub_compat_ptmioctl_60;
}
Index: src/sys/compat/sys/ttycom.h
diff -u src/sys/compat/sys/ttycom.h:1.2 src/sys/compat/sys/ttycom.h:1.2.40.1
--- src/sys/compat/sys/ttycom.h:1.2 Fri Oct 19 17:16:55 2012
+++ src/sys/compat/sys/ttycom.h Tue Sep 4 02:21:58 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ttycom.h,v 1.2 2012/10/19 17:16:55 apb Exp $ */
+/* $NetBSD: ttycom.h,v 1.2.40.1 2018/09/04 02:21:58 pgoyette Exp $ */
/*-
* Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -57,7 +57,7 @@ struct compat_60_ptmget {
#define COMPAT_60_TIOCPTSNAME _IOR('t', 72, struct compat_60_ptmget)
#ifdef _KERNEL
-int compat_60_ttioctl(struct tty *, u_long, void *, int, struct lwp *);
+int compat_60_ttioctl(dev_t, u_long, void *, int, struct lwp *);
int compat_60_ptmioctl(dev_t, u_long, void *, int, struct lwp *);
#endif
Index: src/sys/kern/tty.c
diff -u src/sys/kern/tty.c:1.275.2.2 src/sys/kern/tty.c:1.275.2.3
--- src/sys/kern/tty.c:1.275.2.2 Sat Apr 7 04:12:19 2018
+++ src/sys/kern/tty.c Tue Sep 4 02:21:58 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tty.c,v 1.275.2.2 2018/04/07 04:12:19 pgoyette Exp $ */
+/* $NetBSD: tty.c,v 1.275.2.3 2018/09/04 02:21:58 pgoyette Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -63,7 +63,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tty.c,v 1.275.2.2 2018/04/07 04:12:19 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tty.c,v 1.275.2.3 2018/09/04 02:21:58 pgoyette Exp $");
#ifdef _KERNEL_OPT
#include "opt_compat_netbsd.h"
@@ -209,7 +209,11 @@ struct ttylist_head ttylist = TAILQ_HEAD
int tty_count;
kmutex_t tty_lock;
krwlock_t ttcompat_lock;
-int (*vec_compat_ttioctl_60)(struct tty *, u_long, void *, int, struct lwp *);
+int (*vec_compat_ttioctl_60)(dev_t, u_long, void *, int, struct lwp *) = NULL;
+int (*vec_compat_ptmioctl_60)(dev_t, u_long, void *, int, struct lwp *) =
+ stub_compat_ptmioctl_60;
+
+struct ptm_pty *ptm = NULL;
uint64_t tk_cancc;
uint64_t tk_nin;
@@ -1420,7 +1424,7 @@ ttioctl(struct tty *tp, u_long cmd, void
return EPASSTHROUGH;
}
}
- error = (*vec_compat_ttioctl_60)(tp, cmd, data, flag, l);
+ error = (*vec_compat_ttioctl_60)(tp->t_dev, cmd, data, flag, l);
rw_exit(&ttcompat_lock);
return error;
}
@@ -3064,3 +3068,11 @@ tty_try_xonxoff(struct tty *tp, unsigned
}
return EAGAIN;
}
+
+int
+stub_compat_ptmioctl_60(dev_t dev, u_long cmd, void *data, int flag,
+ struct lwp *l)
+{
+
+ return EPASSTHROUGH;
+}
Index: src/sys/kern/tty_ptm.c
diff -u src/sys/kern/tty_ptm.c:1.37 src/sys/kern/tty_ptm.c:1.37.16.1
--- src/sys/kern/tty_ptm.c:1.37 Mon Aug 24 22:50:32 2015
+++ src/sys/kern/tty_ptm.c Tue Sep 4 02:21:58 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tty_ptm.c,v 1.37 2015/08/24 22:50:32 pooka Exp $ */
+/* $NetBSD: tty_ptm.c,v 1.37.16.1 2018/09/04 02:21:58 pgoyette Exp $ */
/*-
* Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tty_ptm.c,v 1.37 2015/08/24 22:50:32 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tty_ptm.c,v 1.37.16.1 2018/09/04 02:21:58 pgoyette Exp $");
#ifdef _KERNEL_OPT
#include "opt_compat_netbsd.h"
@@ -56,9 +56,7 @@ __KERNEL_RCSID(0, "$NetBSD: tty_ptm.c,v
#include <miscfs/specfs/specdev.h>
-#ifdef COMPAT_60
#include <compat/sys/ttycom.h>
-#endif /* COMPAT_60 */
#include "ioconf.h"
@@ -85,7 +83,6 @@ const struct cdevsw ptm_cdevsw = {
};
#else
-static struct ptm_pty *ptm;
int pts_major, ptc_major;
static dev_t pty_getfree(void);
@@ -405,11 +402,9 @@ ptmioctl(dev_t dev, u_long cmd, void *da
goto bad2;
return 0;
default:
-#ifdef COMPAT_60
- error = compat_60_ptmioctl(dev, cmd, data, flag, l);
+ error = (*vec_compat_ptmioctl_60)(dev, cmd, data, flag, l);
if (error != EPASSTHROUGH)
return error;
-#endif /* COMPAT_60 */
DPRINTF(("ptmioctl EINVAL\n"));
return EINVAL;
}
Index: src/sys/sys/tty.h
diff -u src/sys/sys/tty.h:1.94.2.1 src/sys/sys/tty.h:1.94.2.2
--- src/sys/sys/tty.h:1.94.2.1 Sun Mar 18 12:07:00 2018
+++ src/sys/sys/tty.h Tue Sep 4 02:21:58 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tty.h,v 1.94.2.1 2018/03/18 12:07:00 pgoyette Exp $ */
+/* $NetBSD: tty.h,v 1.94.2.2 2018/09/04 02:21:58 pgoyette Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -313,8 +313,16 @@ bool ttypull(struct tty *);
int clalloc(struct clist *, int, int);
void clfree(struct clist *);
-extern int (*vec_compat_ttioctl_60)(struct tty *, u_long, void *, int,
+extern int (*vec_compat_ttioctl_60)(dev_t, u_long, void *, int,
struct lwp *);
+extern int (*vec_compat_ptmioctl_60)(dev_t, u_long, void *, int,
+ struct lwp *);
+int stub_compat_ptmioctl_60(dev_t, u_long, void *, int, struct lwp *);
+
+/* overwritten to be non-null if ptm(4) is present */
+
+struct ptm_pty;
+extern struct ptm_pty *ptm;
unsigned char tty_getctrlchar(struct tty *, unsigned /*which*/);
void tty_setctrlchar(struct tty *, unsigned /*which*/, unsigned char /*val*/);