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 */