Re: [PATCH 4/4] printk: Add a device attribute for the per-console loglevel

From: Sergey Senozhatsky
Date: Mon Mar 04 2019 - 03:06:38 EST


On (03/01/19 16:48), Calvin Owens wrote:
> +static ssize_t loglevel_store(struct device *dev, struct device_attribute *attr,
> + const char *buf, size_t count)
> +{
> + struct console *con = container_of(dev, struct console, dev);
> + ssize_t ret;
> + int tmp;
> +
> + ret = kstrtoint(buf, 10, &tmp);
> + if (ret < 0)
> + return ret;
> +
> + if (tmp < LOGLEVEL_EMERG)
> + return -ERANGE;
> +
> + /*
> + * Mimic the behavior of /dev/kmsg with respect to minimum_loglevel.
> + */
> + if (tmp < minimum_console_loglevel)
> + tmp = minimum_console_loglevel;
> +
> + con->level = tmp;
> + return ret;
> +}
> +
> +static DEVICE_ATTR_RW(loglevel);
> +
> +static struct attribute *console_sysfs_attrs[] = {
> + &dev_attr_loglevel.attr,
> + NULL,
> +};
> +ATTRIBUTE_GROUPS(console_sysfs);
> +
> static struct bus_type console_subsys = {
> .name = "console",
> + .dev_groups = console_sysfs_groups,
> };

Do we really need to change this dynamically? Console options are
traditionally static (boot param or DT). Can we also be happy with
the static per-console loglevel?

-ss