-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
The patch I submitted accidently had parts of another patch in it, which I
just removed. Also, I fixed the few remaiming // I overlook (thanks neal).
Sorry about that.
Index: Makefrag.am
===================================================================
RCS file: /sources/hurd/gnumach/Attic/Makefrag.am,v
retrieving revision 1.1.2.12
diff -u -r1.1.2.12 Makefrag.am
- --- Makefrag.am 2 Jun 2007 13:23:21 -0000 1.1.2.12
+++ Makefrag.am 5 Aug 2007 09:39:08 -0000
@@ -292,6 +292,14 @@
device/kmsg.h
endif
+#
+# kernel entrophy generator device
+
+if enable_entropy
+libkernel_a_SOURCES += \
+ device/entropy.c
+ device/entropy.h
+endif
#
# Version number.
Index: configfrag.ac
===================================================================
RCS file: /sources/hurd/gnumach/Attic/configfrag.ac,v
retrieving revision 1.1.2.7
diff -u -r1.1.2.7 configfrag.ac
- --- configfrag.ac 4 Aug 2007 18:50:19 -0000 1.1.2.7
+++ configfrag.ac 5 Aug 2007 09:39:08 -0000
@@ -98,7 +98,7 @@
AC_DEFINE([SIMPLE_CLOCK], [0], [SIMPLE_CLOCK])
# Use statistical timing.
- -AC_DEFINE([STAT_TIME], [1], [STAT_TIME])
+AC_DEFINE([STAT_TIME], [0], [STAT_TIME])
# Kernel tracing.
AC_DEFINE([XPR_DEBUG], [1], [XPR_DEBUG])
@@ -128,7 +128,18 @@
[else]
AM_CONDITIONAL([enable_kmsg], [false])
[fi]
- -
+
+
+AC_ARG_ENABLE([entropy],
+ AS_HELP_STRING([--disable-entropy], [disable use of entropy device]))
+[if [ x"$enable_entropy" != xno ]; then]
+ AC_DEFINE([MACH_ENTROPY], [], [enable use of entropy device])
+ AM_CONDITIONAL([enable_entropy], [true])
+[else]
+ AM_CONDITIONAL([enable_entropy], [false])
+[fi]
+
+
#
# Set up `SYSTYPE/SYSTYPE' and `SYSTYPE/include/mach/SYSTYPE' links.
#
@@ -138,7 +149,7 @@
# <http://lists.gnu.org/archive/html/bug-automake/2006-11/msg00027.html>.
AC_CONFIG_LINKS([machine:$systype/$systype
mach/machine:$systype/include/mach/$systype])
- -
+
dnl Local Variables:
dnl mode: autoconf
dnl End:
Index: device/blkio.c
===================================================================
RCS file: /sources/hurd/gnumach/device/Attic/blkio.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 blkio.c
- --- device/blkio.c 25 Feb 1997 21:28:13 -0000 1.1.1.1
+++ device/blkio.c 5 Aug 2007 09:39:08 -0000
@@ -36,7 +36,9 @@
#include <device/io_req.h>
#include <device/ds_routines.h>
- -
+#ifdef MACH_ENTROPY
+#include <device/entropy.h>
+#endif
io_return_t block_io(strat, max_count, ior)
void (*strat)();
@@ -149,6 +151,10 @@
do {
prev = next;
next = prev->io_next;
+#ifdef MACH_ENTROPY
+ /* Let's grab the cylinder numbers for entropy */
+ entropy_putdata (prev, sizeof(io_req_t));
+#endif
} while (next != 0 && prev->io_cylinder == next->io_cylinder);
if (next == 0) {
Index: device/cons.c
===================================================================
RCS file: /sources/hurd/gnumach/device/Attic/cons.c,v
retrieving revision 1.2.4.6
diff -u -r1.2.4.6 cons.c
- --- device/cons.c 13 Nov 2006 21:30:36 -0000 1.2.4.6
+++ device/cons.c 5 Aug 2007 09:39:09 -0000
@@ -44,6 +44,10 @@
#include <device/kmsg.h>
#endif
+#ifdef MACH_ENTROPY
+#include <device/entropy.h>
+#endif
+
static int cn_inited = 0;
static struct consdev *cn_tab = 0; /* physical console device info */
#ifndef MACH_KERNEL
@@ -230,8 +234,16 @@
cngetc()
{
if (cn_tab)
- - return ((*cn_tab->cn_getc)(cn_tab->cn_dev, 1));
+#if defined(MACH_KERNEL) && defined(MACH_ENTROPY)
+ entropy_putchar (cn_tab->cn_dev);
+#endif /* MACH_ENTROPY and MACH_ENTROPY */
+ return ((*cn_tab->cn_getc)(cn_tab->cn_dev, 1));
if (romgetc)
+#ifdef MACH_KERNEL
+#ifdef MACH_ENTROPY
+ entropy_putchar(*romgetc);
+#endif /* MACH_KERNEL */
+#endif /* MACH_ENTROPY */
return ((*romgetc)(1));
return (0);
}
Index: i386/i386at/conf.c
===================================================================
RCS file: /sources/hurd/gnumach/i386/i386at/Attic/conf.c,v
retrieving revision 1.4.2.15
diff -u -r1.4.2.15 conf.c
- --- i386/i386at/conf.c 1 Apr 2007 22:10:40 -0000 1.4.2.15
+++ i386/i386at/conf.c 5 Aug 2007 09:39:09 -0000
@@ -61,6 +61,11 @@
extern int kmsgopen(), kmsgclose(), kmsgread(), kmsggetstat();
#define kmsgname "kmsg"
+#ifdef MACH_ENTROPY
+#define entropyname "entropy"
+extern int entropyopen(), entropyclose(), entropyread(), entropygetstat();
+#endif
+
/*
* List of devices - console must be at slot 0
*/
@@ -120,6 +125,12 @@
nodev },
#endif
+#ifdef MACH_ENTROPY
+ { entropyname, entropyopen, entropyclose, entropyread,
+ nodev, entropygetstat, nodev, nomap,
+ nodev, nulldev, nulldev, 0,
+ nodev },
+#endif
};
int dev_name_count = sizeof(dev_name_list)/sizeof(dev_name_list[0]);
Index: i386/i386at/kd.c
===================================================================
RCS file: /sources/hurd/gnumach/i386/i386at/Attic/kd.c,v
retrieving revision 1.5.2.13
diff -u -r1.5.2.13 kd.c
- --- i386/i386at/kd.c 7 May 2007 22:04:53 -0000 1.5.2.13
+++ i386/i386at/kd.c 5 Aug 2007 09:39:10 -0000
@@ -85,6 +85,11 @@
#include <device/io_req.h>
#include <device/buf.h> /* for struct uio (!) */
#include <vm/vm_kern.h>
+
+#if defined (MACH_KERNEL) && defined(MACH_ENTROPY)
+#include <device/entropy.h>
+#endif /* MACH_KERNEL and MACH _ENTROPY */
+
#include <i386/vm_param.h>
#include <i386/machspl.h>
#include <i386/pio.h>
@@ -811,6 +816,16 @@
up = TRUE;
scancode &= ~K_UP;
}
+
+#ifdef MACH_KERNEL
+#ifdef MACH_ENTROPY
+ /* Sune Kirkeby's entropy patch (which was a port of the
+ * linux entropy drivers for GNU mach) placed the keyboard
+ * entropy source here. I looked at that for an idea of
+ * where how to do write this driver. */
+ entropy_putchar(scancode | (up ? 0200 : 0));
+#endif /* MACH_ENTROPY */
+#endif /* MACH_KERNEL */
if (scancode < NUMKEYS) {
/* Lookup in map, then process. */
char_idx = kdstate2idx(kd_state, kd_extended);
Index: i386/i386at/kd_mouse.c
===================================================================
RCS file: /sources/hurd/gnumach/i386/i386at/Attic/kd_mouse.c,v
retrieving revision 1.3.2.8
diff -u -r1.3.2.8 kd_mouse.c
- --- i386/i386at/kd_mouse.c 13 Nov 2006 21:30:36 -0000 1.3.2.8
+++ i386/i386at/kd_mouse.c 5 Aug 2007 09:39:11 -0000
@@ -70,6 +70,9 @@
#ifdef MACH_KERNEL
#include <device/errno.h>
#include <device/io_req.h>
+#ifdef MACH_ENTROPY
+#include <device/entropy.h>
+#endif /* MACH_ENTROPY */
#else /* MACH_KERNEL */
#include <sys/file.h>
#include <sys/errno.h>
@@ -677,6 +680,11 @@
moved.mm_deltaX = (char)mousebuf[1] + (char)mousebuf[3];
moved.mm_deltaY = (char)mousebuf[2] + (char)mousebuf[4];
+#ifdef MACH_ENTROPY
+ /* Kick some mouse data to the entropy driver */
+ entropy_putchar((buttonchanges + moved.mm_deltaX
+ + moved.mm_deltaY));
+#endif
if (moved.mm_deltaX != 0 || moved.mm_deltaY != 0)
mouse_moved(moved);
Index: linux/configfrag.ac
===================================================================
RCS file: /sources/hurd/gnumach/linux/Attic/configfrag.ac,v
retrieving revision 1.1.2.6
diff -u -r1.1.2.6 configfrag.ac
- --- linux/configfrag.ac 4 Aug 2007 18:50:19 -0000 1.1.2.6
+++ linux/configfrag.ac 5 Aug 2007 09:39:11 -0000
@@ -604,6 +604,15 @@
linux/dev/include/asm:linux/dev/include/asm-$systype])
[else] AM_CONDITIONAL([CODE_linux], [false])
[fi]
+
+AC_ARG_ENABLE([entropy],
+ AS_HELP_STRING([--disable-entropy], [disable use of entropy
device]))
+ [if [ x"$enable_entropy" != xno ]; then]
+ AC_DEFINE([MACH_ENTROPY], [], [enable use of entropy device])
+ AM_CONDITIONAL([enable_entropy], [true])
+ [else]
+ AM_CONDITIONAL([enable_entropy], [false])
+[fi]
dnl Local Variables:
dnl mode: autoconf
Index: linux/dev/glue/misc.c
===================================================================
RCS file: /sources/hurd/gnumach/linux/dev/glue/Attic/misc.c,v
retrieving revision 1.2
diff -u -r1.2 misc.c
- --- linux/dev/glue/misc.c 18 Sep 2001 21:14:19 -0000 1.2
+++ linux/dev/glue/misc.c 5 Aug 2007 09:39:12 -0000
@@ -67,6 +67,10 @@
#include <linux/proc_fs.h>
#include <linux/kernel_stat.h>
+#ifdef MACH_ENTROPY
+#include <device/entropy.h>
+#endif
+
extern boolean_t vm_map_lookup_entry (register vm_map_t, register vm_offset_t,
vm_map_entry_t *);
extern int printf (const char *, ...);
@@ -224,6 +228,18 @@
void
add_blkdev_randomness (int major)
{
+#ifdef MACH_ENTROPY
+ /* Linux provides a nice way to get random bits, so lets use it
+ * This generates a LOT of Ctrl-Cs for some reason. No idea whats
+ * going on here
+ *
+ * THe problem is that mach only has 1 block device, floppy (major 3
+ * corresponds to Ctrl C) so this is useless for entropic sources. If we
+ * ever get more block devices this should be uncommented for additional
+ * entropy. */
+
+ /*entropy_putchar(major); */
+#endif
}
void
Index: linux/dev/glue/net.c
===================================================================
RCS file: /sources/hurd/gnumach/linux/dev/glue/Attic/net.c,v
retrieving revision 1.1.4.7
diff -u -r1.1.4.7 net.c
- --- linux/dev/glue/net.c 27 Mar 2007 22:47:11 -0000 1.1.4.7
+++ linux/dev/glue/net.c 5 Aug 2007 09:39:12 -0000
@@ -97,6 +97,11 @@
#include <linux/etherdevice.h>
#include <linux/wireless.h>
+#ifdef MACH_KERNEL
+#ifdef MACH_ENTROPY
+#include <device/entropy.h>
+#endif /* MACH_KERNEL */
+#endif /* MACH_ENTROPY */
extern int linux_intr_pri;
/* One of these is associated with each instance of a device. */
@@ -299,6 +304,11 @@
ph->length = (skb->len - sizeof (struct ether_header)
+ sizeof (struct packet_header));
+#ifdef MACH_ENTROPY
+ /* Grab the packet for entropy purposes */
+ entropy_putdata(ph + 1, skb->len - sizeof(struct ether_header));
+#endif
+
dev_kfree_skb (skb, FREE_READ);
net_kmsg(kmsg)->sent = FALSE; /* Mark packet as received. */
Index: linux/dev/include/linux/blk.h
===================================================================
RCS file: /sources/hurd/gnumach/linux/dev/include/linux/Attic/blk.h,v
retrieving revision 1.2
diff -u -r1.2 blk.h
- --- linux/dev/include/linux/blk.h 5 Apr 2001 06:39:21 -0000 1.2
+++ linux/dev/include/linux/blk.h 5 Aug 2007 09:39:12 -0000
@@ -90,7 +90,7 @@
#endif /* CONFIG_BLK_DEV_MD */
extern void set_device_ro(kdev_t dev,int flag);
- -void add_blkdev_randomness(int major);
+extern void add_blkdev_randomness(int major);
extern int floppy_init(void);
extern void rd_load(void);
@@ -136,7 +136,11 @@
#define DEVICE_NR(device) (MINOR(device))
#define DEVICE_ON(device)
#define DEVICE_OFF(device)
+
+/* HACK */
+#ifndef MACH_ENTROPY
#define DEVICE_NO_RANDOM
+#endif
#elif (MAJOR_NR == FLOPPY_MAJOR)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU)
iD8DBQFGtWMjV/FBeJ6jsZQRAvUiAJ9AlL+44e5azVfi4jf/VFvfm3ZyOQCeKkX1
Ly8DreSoRma9BTJn8VOvcSc=
=7Oy8
-----END PGP SIGNATURE-----
_______________________________________________
Bug-hurd mailing list
Bug-hurd@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-hurd