> Date: Sat, 1 Jun 2013 06:35:24 -0700
> From: Mike Larkin <mlar...@azathoth.net>
> 
> 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");
> 
> 

Reply via email to