1 1.1 riastrad /* $NetBSD: igt_atomic.c,v 1.2 2021/12/18 23:45:31 riastradh Exp $ */ 2 1.1 riastrad 3 1.1 riastrad // SPDX-License-Identifier: MIT 4 1.1 riastrad /* 5 1.1 riastrad * Copyright 2018 Intel Corporation 6 1.1 riastrad */ 7 1.1 riastrad 8 1.1 riastrad #include <sys/cdefs.h> 9 1.1 riastrad __KERNEL_RCSID(0, "$NetBSD: igt_atomic.c,v 1.2 2021/12/18 23:45:31 riastradh Exp $"); 10 1.1 riastrad 11 1.1 riastrad #include <linux/preempt.h> 12 1.1 riastrad #include <linux/bottom_half.h> 13 1.1 riastrad #include <linux/irqflags.h> 14 1.1 riastrad 15 1.1 riastrad #include "igt_atomic.h" 16 1.1 riastrad 17 1.1 riastrad static void __preempt_begin(void) 18 1.1 riastrad { 19 1.1 riastrad preempt_disable(); 20 1.1 riastrad } 21 1.1 riastrad 22 1.1 riastrad static void __preempt_end(void) 23 1.1 riastrad { 24 1.1 riastrad preempt_enable(); 25 1.1 riastrad } 26 1.1 riastrad 27 1.1 riastrad static void __softirq_begin(void) 28 1.1 riastrad { 29 1.1 riastrad local_bh_disable(); 30 1.1 riastrad } 31 1.1 riastrad 32 1.1 riastrad static void __softirq_end(void) 33 1.1 riastrad { 34 1.1 riastrad local_bh_enable(); 35 1.1 riastrad } 36 1.1 riastrad 37 1.1 riastrad static void __hardirq_begin(void) 38 1.1 riastrad { 39 1.1 riastrad local_irq_disable(); 40 1.1 riastrad } 41 1.1 riastrad 42 1.1 riastrad static void __hardirq_end(void) 43 1.1 riastrad { 44 1.1 riastrad local_irq_enable(); 45 1.1 riastrad } 46 1.1 riastrad 47 1.1 riastrad const struct igt_atomic_section igt_atomic_phases[] = { 48 1.1 riastrad { "preempt", __preempt_begin, __preempt_end }, 49 1.1 riastrad { "softirq", __softirq_begin, __softirq_end }, 50 1.1 riastrad { "hardirq", __hardirq_begin, __hardirq_end }, 51 1.1 riastrad { } 52 1.1 riastrad }; 53