From tty.h I removed the ifdef and the include for luna88k, I
guess this was an architecture that is no longer supported as I can not
find the refrenced code in the gnumach source tree. From chario.c I 
removed forward declarations that have prototypes in tty.h. Next, I 
qualified all the constants with the const keyword, in this way there 
will be a warning from the compiler if their values get changed later 
in the code. I also removed the _PR calculation and broke it into two 
calculations (_PR_T and _PR_WM) that I wrote in tty.h, in this way they 
can be used by other parts of the code and we get rid of the confusing 
undef and redefinition in the chario_init(). Finaly, I dropped the 
register keyword as I can see that the newer functions, even in the 
same file by the same author, do not use it.
* device/tty.h [luna88k]: Remove ifdef and include for nonexistent header files.
New _PR_T calculation.
New _PR_WM calculation.
* device/chario.c (tty_flush): Remove forward declaration (prototype is in tty.h).
(ttstart): Likewise.
Qualify constants as constants.
(chario_init): Remove _PR calculation and the associated undef and break it in two in tty.h.
Drop the register keyword.



From 93dd68cc7c96dadde44fcd452e4aaf22cea7aecc Mon Sep 17 00:00:00 2001
From: Marin Ramesa <m...@hi.t-com.hr>
Date: Sun, 8 Sep 2013 16:30:27 +0200
Subject: [PATCH 2/2] Cleanup of the TTY I/O.

---
 device/chario.c | 122 +++++++++++++++++++++++++++-----------------------------
 device/tty.h    |   7 ++--
 2 files changed, 61 insertions(+), 68 deletions(-)

diff --git a/device/chario.c b/device/chario.c
index d7c092e..efc024e 100644
--- a/device/chario.c
+++ b/device/chario.c
@@ -68,11 +68,9 @@ short	ttlowat[NSPEEDS] =
 void	queue_delayed_reply(
 	queue_t, io_req_t, boolean_t (*)(io_req_t));
 void	tty_output(struct tty *);
-void	tty_flush(struct tty *, int);
 boolean_t char_open_done(io_req_t);
 boolean_t char_read_done(io_req_t);
 boolean_t char_write_done(io_req_t);
-void	ttstart(struct tty *tp);
 
 /*
  * Fake 'line discipline' switch for the benefit of old code
@@ -91,9 +89,9 @@ struct ldisc_switch	linesw[] = {
 /*
  * Sizes for input and output circular buffers.
  */
-int	tty_inq_size = 4096;	/* big nuf */
-int	tty_outq_size = 2048;	/* Must be bigger that tthiwat */
-int	pdma_default = 1;       /* turn pseudo dma on by default */
+const int	tty_inq_size = 4096;	/* big nuf */
+const int	tty_outq_size = 2048;	/* Must be bigger that tthiwat */
+const int	pdma_default = 1;       /* turn pseudo dma on by default */
 
 /*
  * compute pseudo-dma tables
@@ -109,24 +107,23 @@ void chario_init(void)
      time for a character to show up if data is coming in at full data rate
      plus a little slack. 2 ticks is considered slack
      Below 300 baud we just glob a character at a time */
-#define _PR(x) ((hz/x) + 2)
 
   int i;
 
   for (i = B0; i < B300; i++)
     pdma_timeouts[i] = 0;
 
-  pdma_timeouts[B300] = _PR(30);
-  pdma_timeouts[B600] = _PR(60);
-  pdma_timeouts[B1200] = _PR(120);
-  pdma_timeouts[B1800] = _PR(180);
-  pdma_timeouts[B2400] = _PR(240);
-  pdma_timeouts[B4800] = _PR(480);
-  pdma_timeouts[B9600] = _PR(960);
-  pdma_timeouts[EXTA]  = _PR(1440); /* >14400 baud */
-  pdma_timeouts[EXTB]  = _PR(1920); /* >19200 baud */
-  pdma_timeouts[B57600] = _PR(5760);
-  pdma_timeouts[B115200] = _PR(11520);
+  pdma_timeouts[B300] = _PR_T(30);
+  pdma_timeouts[B600] = _PR_T(60);
+  pdma_timeouts[B1200] = _PR_T(120);
+  pdma_timeouts[B1800] = _PR_T(180);
+  pdma_timeouts[B2400] = _PR_T(240);
+  pdma_timeouts[B4800] = _PR_T(480);
+  pdma_timeouts[B9600] = _PR_T(960);
+  pdma_timeouts[EXTA]  = _PR_T(1440); /* >14400 baud */
+  pdma_timeouts[EXTB]  = _PR_T(1920); /* >19200 baud */
+  pdma_timeouts[B57600] = _PR_T(5760);
+  pdma_timeouts[B115200] = _PR_T(11520);
 
   for (i = B0; i < B300; i++)
     pdma_water_mark[i] = 0;
@@ -135,15 +132,12 @@ void chario_init(void)
      (20% of the character rate). For the faster lines,
      we try to buffer 1/2 the input queue size */
 
-#undef _PR
-#define _PR(x) (0.20 * x)
-
-  pdma_water_mark[B300] = _PR(120);
-  pdma_water_mark[B600] = _PR(120);
-  pdma_water_mark[B1200] = _PR(120);
-  pdma_water_mark[B1800] = _PR(180);
-  pdma_water_mark[B2400] = _PR(240);
-  pdma_water_mark[B4800] = _PR(480);
+  pdma_water_mark[B300] = _PR_WM(120);
+  pdma_water_mark[B600] = _PR_WM(120);
+  pdma_water_mark[B1200] = _PR_WM(120);
+  pdma_water_mark[B1800] = _PR_WM(180);
+  pdma_water_mark[B2400] = _PR_WM(240);
+  pdma_water_mark[B4800] = _PR_WM(480);
   i = tty_inq_size/2;
   pdma_water_mark[B9600] = i;
   pdma_water_mark[EXTA]  = i; /* >14400 baud */
@@ -216,7 +210,7 @@ out:
 boolean_t char_open_done(
 	io_req_t	ior)
 {
-	register struct tty *tp = (struct tty *)ior->io_dev_ptr;
+	struct tty *tp = (struct tty *)ior->io_dev_ptr;
 	spl_t s = spltty();
 
 	simple_lock(&tp->t_lock);
@@ -256,12 +250,12 @@ boolean_t tty_close_open_reply(
  * device needs to run on master.
  */
 io_return_t char_write(
-	register struct tty *	tp,
-	register io_req_t	ior)
+	struct tty *	tp,
+	io_req_t	ior)
 {
 	spl_t		s;
-	register int	count;
-	register char	*data;
+	int	        count;
+	char	        *data;
 	vm_offset_t	addr;
 	io_return_t	rc = D_SUCCESS;
 
@@ -347,10 +341,10 @@ out:
  * May run on any CPU.
  */
 boolean_t char_write_done(
-	register io_req_t	ior)
+	io_req_t	ior)
 {
-	register struct tty *tp = (struct tty *)ior->io_dev_ptr;
-	register spl_t s = spltty();
+	struct tty *tp = (struct tty *)ior->io_dev_ptr;
+	spl_t s = spltty();
 
 	simple_lock(&tp->t_lock);
 	if (tp->t_outq.c_cc > TTHIWAT(tp) ||
@@ -378,7 +372,7 @@ boolean_t char_write_done(
 }
 
 boolean_t tty_close_write_reply(
-	register io_req_t	ior)
+	io_req_t	ior)
 {
 	ior->io_residual = ior->io_count;
 	ior->io_error = D_DEVICE_DOWN;
@@ -392,8 +386,8 @@ boolean_t tty_close_write_reply(
  * May run on any CPU - does not talk to device driver.
  */
 io_return_t char_read(
-	register struct tty *tp,
-	register io_req_t ior)
+	struct tty *tp,
+	io_req_t ior)
 {
 	spl_t		s;
 	kern_return_t	rc;
@@ -453,10 +447,10 @@ io_return_t char_read(
  * May run on any CPU - does not talk to device driver.
  */
 boolean_t char_read_done(
-	register io_req_t	ior)
+	io_req_t	ior)
 {
-	register struct tty *tp = (struct tty *)ior->io_dev_ptr;
-	register spl_t s = spltty();
+	struct tty *tp = (struct tty *)ior->io_dev_ptr;
+	spl_t s = spltty();
 
 	simple_lock(&tp->t_lock);
 
@@ -485,7 +479,7 @@ boolean_t char_read_done(
 }
 
 boolean_t tty_close_read_reply(
-	register io_req_t	ior)
+	io_req_t	ior)
 {
 	ior->io_residual = ior->io_count;
 	ior->io_error = D_DEVICE_DOWN;
@@ -499,9 +493,9 @@ boolean_t tty_close_read_reply(
  * Iff modem control should run on master.
  */
 void ttyclose(
-	register struct tty *tp)
+	struct tty *tp)
 {
-	register io_req_t	ior;
+	io_req_t	ior;
 
 	/*
 	 * Flush the read and write queues.  Signal
@@ -541,7 +535,7 @@ tty_queue_clean(
 	ipc_port_t	port,
 	boolean_t	(*routine)(io_req_t) )
 {
-	register io_req_t	ior;
+	io_req_t	ior;
 
 	ior = (io_req_t)queue_first(q);
 	while (!queue_end(q, (queue_entry_t)ior)) {
@@ -566,8 +560,8 @@ tty_portdeath(
 	struct tty *	tp,
 	ipc_port_t	port)
 {
-	register spl_t	spl = spltty();
-	register boolean_t	result;
+	spl_t	spl = spltty();
+	boolean_t	result;
 
 	simple_lock(&tp->t_lock);
 
@@ -598,9 +592,9 @@ tty_portdeath(
  * May run on any CPU.
  */
 io_return_t tty_get_status(
-	register struct tty *tp,
+	struct tty *tp,
 	dev_flavor_t	flavor,
-	int *		data,		/* pointer to OUT array */
+	int		*data,		/* pointer to OUT array */
 	natural_t	*count)		/* out */
 {
 	spl_t		s;
@@ -608,7 +602,7 @@ io_return_t tty_get_status(
 	switch (flavor) {
 	    case TTY_STATUS:
 	    {
-		register struct tty_status *tsp =
+		struct tty_status *tsp =
 			(struct tty_status *) data;
 
                if (*count < TTY_STATUS_COUNT)
@@ -644,9 +638,9 @@ io_return_t tty_get_status(
  * device needs to run on master.
  */
 io_return_t tty_set_status(
-	register struct tty *tp,
+	struct tty *tp,
 	dev_flavor_t	flavor,
-	int *		data,
+	int 		*data,
 	natural_t	count)
 {
 	int	s;
@@ -654,7 +648,7 @@ io_return_t tty_set_status(
 	switch (flavor) {
 	    case TTY_FLUSH:
 	    {
-		register int	flags;
+		int	flags;
 		if (count < TTY_FLUSH_COUNT)
 		    return D_INVALID_OPERATION;
 
@@ -697,7 +691,7 @@ io_return_t tty_set_status(
 	    case TTY_STATUS:
 		/* set special characters and speed */
 	    {
-		register struct tty_status *tsp;
+		struct tty_status *tsp;
 
 		if (count < TTY_STATUS_COUNT)
 		    return D_INVALID_OPERATION;
@@ -752,9 +746,9 @@ void queue_delayed_reply(
  * TTY containing queue must be locked (at spltty).
  */
 void tty_queue_completion(
-	register queue_t	qh)
+	queue_t	qh)
 {
-	register io_req_t	ior;
+	io_req_t	ior;
 
 	while ((ior = (io_req_t)dequeue_head(qh)) != 0) {
 	    iodone(ior);
@@ -767,7 +761,7 @@ void tty_queue_completion(
  * we can initialize the queues here.
  */
 void ttychars(
-	register struct tty *tp)
+	struct tty *tp)
 {
 	if ((tp->t_flags & TS_INIT) == 0) {
 	    /*
@@ -804,7 +798,7 @@ void ttychars(
  * device needs to run on master.
  */
 void tty_flush(
-	register struct tty *tp,
+	struct tty *tp,
 	int	rw)
 {
 	if (rw & D_READ) {
@@ -827,9 +821,9 @@ void tty_flush(
  *	What if device runs on a different CPU?
  */
 void ttrstrt(
-	register struct tty *tp)
+	struct tty *tp)
 {
-	register spl_t	s;
+	spl_t	s;
 
 	s = spltty();
 	simple_lock(&tp->t_lock);
@@ -851,7 +845,7 @@ void ttrstrt(
  * Must be on master CPU if device runs on master.
  */
 void ttstart(tp)
-	register struct tty *tp;
+	struct tty *tp;
 {
 	if ((tp->t_state & (TS_TIMEOUT|TS_TTSTOP|TS_BUSY)) == 0) {
 	    /*
@@ -875,7 +869,7 @@ void ttstart(tp)
  * Must be on master CPU if device runs on master.
  */
 void tty_output(
-	register struct tty *tp)
+	struct tty *tp)
 {
 	if ((tp->t_state & (TS_TIMEOUT|TS_TTSTOP|TS_BUSY)) == 0) {
 	    /*
@@ -897,9 +891,9 @@ void tty_output(
 void ttypush(
 	void * _tp)
 {
-	register struct tty	*tp = _tp;
+	struct tty	*tp = _tp;
 	spl_t	s = spltty();
-	register int	state;
+	int	state;
 
 	simple_lock(&tp->t_lock);
 
@@ -985,7 +979,7 @@ void ttyinput(
 	 * into the future, but this involves making a timeout/untimeout
 	 * call on every character.
 	 */
-	register int ptime = pdma_timeouts[tp->t_ispeed];
+	int ptime = pdma_timeouts[tp->t_ispeed];
 	if (ptime > 0)
 	  {
 	    if ((tp->t_state & TS_MIN_TO) == 0)
diff --git a/device/tty.h b/device/tty.h
index be28708..6b2fe3c 100644
--- a/device/tty.h
+++ b/device/tty.h
@@ -42,10 +42,6 @@
 #include <device/cirbuf.h>
 #include <device/io_req.h>
 
-#ifdef	luna88k
-#include <luna88k/jtermio.h>
-#endif
-
 struct tty {
 	decl_simple_lock_data(,t_lock)
 	struct cirbuf	t_inq;		/* input buffer */
@@ -240,4 +236,7 @@ extern struct ldisc_switch	linesw[];
 
 extern void chario_init(void);
 
+#define _PR_T(x) ((hz/x) + 2)
+#define _PR_WM(x) (0.20 * x)
+
 #endif	/* _DEVICE_TTY_H_ */
-- 
1.8.1.4

Reply via email to