Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

/*	$NetBSD: igt_atomic.c,v 1.2 2021/12/18 23:45:31 riastradh Exp $	*/

// SPDX-License-Identifier: MIT
/*
 * Copyright © 2018 Intel Corporation
 */

#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: igt_atomic.c,v 1.2 2021/12/18 23:45:31 riastradh Exp $");

#include <linux/preempt.h>
#include <linux/bottom_half.h>
#include <linux/irqflags.h>

#include "igt_atomic.h"

static void __preempt_begin(void)
{
	preempt_disable();
}

static void __preempt_end(void)
{
	preempt_enable();
}

static void __softirq_begin(void)
{
	local_bh_disable();
}

static void __softirq_end(void)
{
	local_bh_enable();
}

static void __hardirq_begin(void)
{
	local_irq_disable();
}

static void __hardirq_end(void)
{
	local_irq_enable();
}

const struct igt_atomic_section igt_atomic_phases[] = {
	{ "preempt", __preempt_begin, __preempt_end },
	{ "softirq", __softirq_begin, __softirq_end },
	{ "hardirq", __hardirq_begin, __hardirq_end },
	{ }
};