Module Name:    src
Committed By:   tsutsui
Date:           Sat Jun 25 01:54:37 UTC 2022

Modified Files:
        src/sys/arch/luna68k/dev: lunaws.c

Log Message:
Add rnd(9) entropy source from keyboard and mouse.


To generate a diff of this commit:
cvs rdiff -u -r1.40 -r1.41 src/sys/arch/luna68k/dev/lunaws.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/luna68k/dev/lunaws.c
diff -u src/sys/arch/luna68k/dev/lunaws.c:1.40 src/sys/arch/luna68k/dev/lunaws.c:1.41
--- src/sys/arch/luna68k/dev/lunaws.c:1.40	Sat Oct  9 20:59:47 2021
+++ src/sys/arch/luna68k/dev/lunaws.c	Sat Jun 25 01:54:37 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: lunaws.c,v 1.40 2021/10/09 20:59:47 tsutsui Exp $ */
+/* $NetBSD: lunaws.c,v 1.41 2022/06/25 01:54:37 tsutsui Exp $ */
 
 /*-
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: lunaws.c,v 1.40 2021/10/09 20:59:47 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lunaws.c,v 1.41 2022/06/25 01:54:37 tsutsui Exp $");
 
 #include "opt_wsdisplay_compat.h"
 #include "wsmouse.h"
@@ -40,6 +40,7 @@ __KERNEL_RCSID(0, "$NetBSD: lunaws.c,v 1
 #include <sys/systm.h>
 #include <sys/conf.h>
 #include <sys/device.h>
+#include <sys/rndsource.h>
 
 #include <dev/wscons/wsconsio.h>
 #include <dev/wscons/wskbdvar.h>
@@ -130,6 +131,7 @@ struct ws_softc {
 	int		sc_rawkbd;
 
 	struct ws_conscookie *sc_conscookie;
+	krndsource_t	sc_rndsource;
 };
 
 static void omkbd_input(struct ws_softc *, int);
@@ -241,6 +243,8 @@ wsattach(device_t parent, device_t self,
 	sc->sc_tx_done = false;
 
 	sc->sc_si = softint_establish(SOFTINT_SERIAL, wssoftintr, sc);
+	rnd_attach_source(&sc->sc_rndsource, device_xname(self),
+	    RND_TYPE_TTY, RND_FLAG_DEFAULT);
 
 	/* enable interrupt */
 	setsioreg(sc->sc_ctl, WR1, sc->sc_wr[WR1]);
@@ -274,11 +278,12 @@ wsintr(void *arg)
 {
 	struct ws_softc *sc = arg;
 	struct sioreg *sio = sc->sc_ctl;
-	uint8_t code;
-	uint16_t rr;
+	uint8_t code = 0;
+	uint16_t rr, rndcsr = 0;
 	bool handled = false;
 
 	rr = getsiocsr(sio);
+	rndcsr = rr;
 	if ((rr & RR_RXRDY) != 0) {
 		do {
 			code = sio->sio_data;
@@ -299,8 +304,10 @@ wsintr(void *arg)
 			handled = true;
 		}
 	}
-	if (handled)
+	if (handled) {
 		softint_schedule(sc->sc_si);
+		rnd_add_uint32(&sc->sc_rndsource, (rndcsr << 8) | code);
+	}
 }
 
 static void

Reply via email to