From Ben Katz mbed-dev library. Removed unnecessary target files to reduce the overall size by a factor of 10 to make it easier to import into the online IDE.

Dependents:   motor_driver motor_driver_screaming_fix

Committer:
saloutos
Date:
Thu Nov 26 04:08:56 2020 +0000
Revision:
0:083111ae2a11
first commit of leaned mbed dev lib

Who changed what in which revision?

UserRevisionLine numberNew contents of line
saloutos 0:083111ae2a11 1 /*
saloutos 0:083111ae2a11 2 * PackageLicenseDeclared: Apache-2.0
saloutos 0:083111ae2a11 3 * Copyright (c) 2017 ARM Limited
saloutos 0:083111ae2a11 4 *
saloutos 0:083111ae2a11 5 * Licensed under the Apache License, Version 2.0 (the "License");
saloutos 0:083111ae2a11 6 * you may not use this file except in compliance with the License.
saloutos 0:083111ae2a11 7 * You may obtain a copy of the License at
saloutos 0:083111ae2a11 8 *
saloutos 0:083111ae2a11 9 * http://www.apache.org/licenses/LICENSE-2.0
saloutos 0:083111ae2a11 10 *
saloutos 0:083111ae2a11 11 * Unless required by applicable law or agreed to in writing, software
saloutos 0:083111ae2a11 12 * distributed under the License is distributed on an "AS IS" BASIS,
saloutos 0:083111ae2a11 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
saloutos 0:083111ae2a11 14 * See the License for the specific language governing permissions and
saloutos 0:083111ae2a11 15 * limitations under the License.
saloutos 0:083111ae2a11 16 */
saloutos 0:083111ae2a11 17
saloutos 0:083111ae2a11 18 #ifndef MBED_CRITICALSECTIONLOCK_H
saloutos 0:083111ae2a11 19 #define MBED_CRITICALSECTIONLOCK_H
saloutos 0:083111ae2a11 20
saloutos 0:083111ae2a11 21 #include "platform/mbed_critical.h"
saloutos 0:083111ae2a11 22
saloutos 0:083111ae2a11 23 namespace mbed {
saloutos 0:083111ae2a11 24
saloutos 0:083111ae2a11 25 /** RAII object for disabling, then restoring, interrupt state
saloutos 0:083111ae2a11 26 * Usage:
saloutos 0:083111ae2a11 27 * @code
saloutos 0:083111ae2a11 28 *
saloutos 0:083111ae2a11 29 * void f() {
saloutos 0:083111ae2a11 30 * // some code here
saloutos 0:083111ae2a11 31 * {
saloutos 0:083111ae2a11 32 * CriticalSectionLock lock;
saloutos 0:083111ae2a11 33 * // Code in this block will run with interrupts disabled
saloutos 0:083111ae2a11 34 * }
saloutos 0:083111ae2a11 35 * // interrupts will be restored to their previous state
saloutos 0:083111ae2a11 36 * }
saloutos 0:083111ae2a11 37 * @endcode
saloutos 0:083111ae2a11 38 */
saloutos 0:083111ae2a11 39 class CriticalSectionLock {
saloutos 0:083111ae2a11 40 public:
saloutos 0:083111ae2a11 41 CriticalSectionLock()
saloutos 0:083111ae2a11 42 {
saloutos 0:083111ae2a11 43 core_util_critical_section_enter();
saloutos 0:083111ae2a11 44 }
saloutos 0:083111ae2a11 45
saloutos 0:083111ae2a11 46 ~CriticalSectionLock()
saloutos 0:083111ae2a11 47 {
saloutos 0:083111ae2a11 48 core_util_critical_section_exit();
saloutos 0:083111ae2a11 49 }
saloutos 0:083111ae2a11 50
saloutos 0:083111ae2a11 51 /** Mark the start of a critical section
saloutos 0:083111ae2a11 52 *
saloutos 0:083111ae2a11 53 */
saloutos 0:083111ae2a11 54 void lock()
saloutos 0:083111ae2a11 55 {
saloutos 0:083111ae2a11 56 core_util_critical_section_enter();
saloutos 0:083111ae2a11 57 }
saloutos 0:083111ae2a11 58
saloutos 0:083111ae2a11 59 /** Mark the end of a critical section
saloutos 0:083111ae2a11 60 *
saloutos 0:083111ae2a11 61 */
saloutos 0:083111ae2a11 62 void unlock()
saloutos 0:083111ae2a11 63 {
saloutos 0:083111ae2a11 64 core_util_critical_section_exit();
saloutos 0:083111ae2a11 65 }
saloutos 0:083111ae2a11 66 };
saloutos 0:083111ae2a11 67
saloutos 0:083111ae2a11 68
saloutos 0:083111ae2a11 69 } // namespace mbed
saloutos 0:083111ae2a11 70
saloutos 0:083111ae2a11 71 #endif