summaryrefslogtreecommitdiffstats
path: root/spec/rtems/intr/if/lock-release-isr.yml
blob: 16374018f211b68bc73d5939e067f64ef57992be (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
brief: |
  Releases the ISR lock from within an ISR.
copyrights:
- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
definition:
  default:
    attributes: null
    body: do { (void) ${.:/params[1]/name}; } while ( 0 )
    params:
    - ${lock:/name} *${.:/params[0]/name}
    - ${lock-context:/name} *${.:/params[1]/name}
    return: void
  variants:
  - definition:
      attributes: null
      body: |
        ${/score/smp/if/lock-release:/name}(
          &( ${.:/params[0]/name} )->Lock,
          &( ${.:/params[1]/name} )->Lock_context
        )
      params:
      - ${lock:/name} *${.:/params[0]/name}
      - ${lock-context:/name} *${.:/params[1]/name}
      return: void
    enabled-by: defined(${/build-options/if/smp:/name})
description: |
  This directive releases the ISR lock specified by ${.:/params[0]/name} using
  the lock context provided by ${.:/params[1]/name}.  The interrupt level will
  remain unchanged.
enabled-by: true
index-entries: []
interface-type: macro
links:
- role: interface-placement
  uid: header
- role: interface-ingroup
  uid: group
- role: constraint
  uid: /constraint/directive-ctx-any
- role: constraint
  uid: /constraint/directive-no-preempt
name: rtems_interrupt_lock_release_isr
notes: |
  The lock context shall be the one used to acquire the lock, otherwise the
  result is unpredictable.

  Where the system was built with SMP support enabled, this directive releases
  an SMP lock.
params:
- description: |
    is the ISR lock to release within an ISR.
  dir: inout
  name: _lock
- description: |
    is the ISR lock context.  This lock context shall have been used to acquire
    the lock by calling ${lock-acquire-isr:/name}.
  dir: inout
  name: _lock_context
return: null
type: interface