> Date: Sat, 1 Jun 2013 06:35:24 -0700
> From: Mike Larkin <[email protected]>
>
> Some machines (eg VMs running in VMware) display hundreds of wakeup devices,
> polluting dmesg output with many lines of output. One VM dmesg I was shown
> indicated 816 wakeup devices.
>
> Since it is unlikely that any real machines have more than 16 wakeup devices,
> truncate the count at 16, and after that print '[...]' indicating there are
> more. On a standard i386/amd64 console, this is about 1.5 - 2 lines of
> dmesg output.
>
> This was requested by reyk@ and I put this diff together at the hackathon,
> but I'm not particularly attached to it one way or the other. If enough
> people think it's a good idea, I can commit it.
Why not stop printing them alltogether?
> Index: dev/acpi/acpi.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/acpi/acpi.c,v
> retrieving revision 1.243
> diff -a -u -r1.243 acpi.c
> --- dev/acpi/acpi.c 18 Apr 2013 18:30:41 -0000 1.243
> +++ dev/acpi/acpi.c 31 May 2013 20:33:20 -0000
> @@ -629,7 +629,7 @@
> struct acpi_rsdp *rsdp;
> struct acpi_q *entry;
> struct acpi_dsdt *p_dsdt;
> - int idx;
> + int idx, wakeup_dev_ct;
> #ifndef SMALL_KERNEL
> struct acpi_wakeq *wentry;
> struct device *dev;
> @@ -796,10 +796,15 @@
>
> #ifndef SMALL_KERNEL
> /* Display wakeup devices and lowest S-state */
> + wakeup_dev_ct = 0;
> printf("%s: wakeup devices", DEVNAME(sc));
> SIMPLEQ_FOREACH(wentry, &sc->sc_wakedevs, q_next) {
> - printf(" %.4s(S%d)", wentry->q_node->name,
> - wentry->q_state);
> + if (wakeup_dev_ct < 16)
> + printf(" %.4s(S%d)", wentry->q_node->name,
> + wentry->q_state);
> + else if (wakeup_dev_ct == 16)
> + printf(" [...]");
> + wakeup_dev_ct ++;
> }
> printf("\n");
>
>