cvs commit: src/sys/dev/acpica acpi.c
Nate Lawson
nate at root.org
Tue Mar 30 11:43:25 PST 2004
On Sat, 27 Mar 2004, Takanori Watanabe wrote:
> Modified files:
> sys/dev/acpica acpi.c
> Log:
> Add ACPI PnP string. This affects devinfo(8) output with -v option.
>
> Revision Changes Path
> 1.129 +46 -0 src/sys/dev/acpica/acpi.c
Excellent, thanks for this work.
> --- src/sys/dev/acpica/acpi.c:1.128 Thu Mar 18 23:05:01 2004
> +++ src/sys/dev/acpica/acpi.c Sat Mar 27 08:26:00 2004
> @@ -140,6 +140,50 @@
> static int acpi_supported_sleep_state_sysctl(SYSCTL_HANDLER_ARGS);
> static int acpi_sleep_state_sysctl(SYSCTL_HANDLER_ARGS);
> static int acpi_pm_func(u_long cmd, void *arg, ...);
> +static int acpi_child_location_str_method(device_t acdev, device_t child,
> + char *buf, size_t buflen);
> +static int acpi_child_pnpinfo_str_method(device_t acdev, device_t child,
> + char *buf, size_t buflen);
> +
> +int
> +acpi_child_location_str_method(device_t cbdev, device_t child, char *buf,
> + size_t buflen)
> +{
> + struct acpi_device *dinfo= device_get_ivars(child);
style -- space before '='. You should remove this initialization anyway
since it is duplicated below.
> +
> + dinfo = device_get_ivars(child);
> + if(dinfo->ad_handle)
style -- space after "if"
> + snprintf(buf, buflen, "path=%s", acpi_name(dinfo->ad_handle));
> + else
> + snprintf(buf, buflen, "magic=unknown");
> + return (0);
> +}
style -- use 4 spaces instead of a tab, tabs for 8-space indents. This
applies to the whole commit. See other parts of this file.
> +int
> +acpi_child_pnpinfo_str_method(device_t cbdev, device_t child, char *buf,
> + size_t buflen)
> +{
> + struct acpi_device *dinfo = device_get_ivars(child);
Duplicate initialization.
> + ACPI_DEVICE_INFO adinfo;
> + ACPI_BUFFER adbuf = {sizeof(adinfo), &adinfo};
Please dynamically allocate buffer elements as done elsewhere. Our kernel
stack is restricted.
> + char * end;
style -- space after *.
> + int error;
> +
> + dinfo = device_get_ivars(child);
> + error = AcpiGetObjectInfo(dinfo->ad_handle, &adbuf);
> +
> + if(error)
style -- space needed after "if"
> + snprintf(buf, buflen, "Unknown");
> + else
> + snprintf(buf, buflen, "_HID=%s _UID=%u",
> + (adinfo.Valid & ACPI_VALID_HID)?
> + adinfo.HardwareId.Value : "UNKNOWN",
> + (unsigned int)((adinfo.Valid & ACPI_VALID_UID)?
> + strtoul(adinfo.UniqueId.Value, &end, 10):0 ));
> +
> + return (0);
> +}
How about adding first _CID value if it's valid?
Instead of cast, just use "%ul" as the format. This would simplify the
statement to:
> (adinfo.Valid & ACPI_VALID_UID) ?
> strtoul(adinfo.UniqueId.Value, &end, 10) : 0);
Also note spaces added above.
Thanks,
Nate
More information about the cvs-src
mailing list