Re: [PATCH 1/2] lib: Add module to simulate atomic sections for testing {preempt,irqs}off tracers

From: Andy Shevchenko
Date: Fri May 18 2018 - 16:13:44 EST


On Fri, May 18, 2018 at 4:59 AM, Joel Fernandes <joelaf@xxxxxxxxxx> wrote:
> From: "Joel Fernandes (Google)" <joel@xxxxxxxxxxxxxxxxx>
>
> In this patch we introduce a test module for simulating a long atomic
> section in the kernel which the preemptoff or irqsoff tracers can
> detect. This module is to be used only for test purposes and is default
> disabled.
>
> Following is the expected output (only briefly shown) that can be parsed
> to verify that the tracers are working correctly. We will use this from
> the kselftests in future patches.

> +config TEST_ATOMIC_SECTIONS
> + tristate "Simulate atomic sections for tracers to detect"

> + default n

n _is_ default default.

> +/*

SPDX?

> + */

> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/ktime.h>
> +#include <linux/irq.h>
> +#include <linux/printk.h>
> +#include <linux/interrupt.h>
> +#include <linux/delay.h>
> +#include <linux/string.h>
> +#include <linux/kthread.h>

Perhaps keep in order?

> +
> +static int atomic_time = 100;
> +static char atomic_mode[10] = "irq";
> +
> +module_param_named(atomic_time, atomic_time, int, S_IRUGO);
> +module_param_string(atomic_mode, atomic_mode, 10, S_IRUGO);
> +MODULE_PARM_DESC(atomic_time, "Period in microseconds (100 uS default)");
> +MODULE_PARM_DESC(atomic_mode, "Mode of the test such as preempt or irq (default irq)");

> +
> +

Extra blank line.

> +static int __init atomic_sect_init(void)
> +{
> + char task_name[50];
> + struct task_struct *test_task;
> +

> + sprintf(task_name, "%s dis test", atomic_mode);

Just to be protective from dumb user.

snprintf();

> +
> + test_task = kthread_run((void*)atomic_sect_run, NULL, task_name);
> + if (IS_ERR(test_task)) {

> + return -1;

return PTR_ERR() ?

> + }
> +
> + return 0;
> +}



--
With Best Regards,
Andy Shevchenko