Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
 1/* SPDX-License-Identifier: MIT */
 2/*
 3 * Copyright © 2018 Intel Corporation
 4 */
 5
 6#ifndef IGT_ATOMIC_H
 7#define IGT_ATOMIC_H
 8
 9#include <linux/preempt.h>
10#include <linux/bottom_half.h>
11#include <linux/irqflags.h>
12
13static void __preempt_begin(void)
14{
15	preempt_disable();
16}
17
18static void __preempt_end(void)
19{
20	preempt_enable();
21}
22
23static void __softirq_begin(void)
24{
25	local_bh_disable();
26}
27
28static void __softirq_end(void)
29{
30	local_bh_enable();
31}
32
33static void __hardirq_begin(void)
34{
35	local_irq_disable();
36}
37
38static void __hardirq_end(void)
39{
40	local_irq_enable();
41}
42
43struct igt_atomic_section {
44	const char *name;
45	void (*critical_section_begin)(void);
46	void (*critical_section_end)(void);
47};
48
49static const struct igt_atomic_section igt_atomic_phases[] = {
50	{ "preempt", __preempt_begin, __preempt_end },
51	{ "softirq", __softirq_begin, __softirq_end },
52	{ "hardirq", __hardirq_begin, __hardirq_end },
53	{ }
54};
55
56#endif /* IGT_ATOMIC_H */