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

Reply via email to