On Tue, Mar 14, 2017 at 05:18:52PM +0900, Byungchul Park wrote:
> +/*
> + * Only access local task's data, so irq disable is only required.
> + */
> +static int same_context_xhlock(struct hist_lock *xhlock)
> +{
> +     struct task_struct *curr = current;
> +
> +     /* In the case of hardirq context */
> +     if (curr->hardirq_context) {
> +             if (xhlock->hlock.irq_context & 2) /* 2: bitmask for hardirq */
> +                     return 1;
> +     /* In the case of softriq context */
> +     } else if (curr->softirq_context) {
> +             if (xhlock->hlock.irq_context & 1) /* 1: bitmask for softirq */
> +                     return 1;
> +     /* In the case of process context */
> +     } else {
> +             if (xhlock->work_id == curr->work_id)
> +                     return 1;
> +     }
> +     return 0;
> +}

static bool same_context_xhlock(struct hist_lock *xhlock)
{
        return xhlock->hlock.irq_context == task_irq_context(current) &&
               xhlock->work_id == current->work_id;
}

Reply via email to