c-user: Fix interrupt lock documentation

Close #3075.
This commit is contained in:
Sebastian Huber
2017-07-14 07:52:21 +02:00
parent e9b193a5fa
commit eecec5f9d8

View File

@@ -494,14 +494,16 @@ CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
void rtems_interrupt_lock_initialize( void rtems_interrupt_lock_initialize(
rtems_interrupt_lock *lock rtems_interrupt_lock *lock,
const char *name
); );
DIRECTIVE STATUS CODES: DIRECTIVE STATUS CODES:
NONE NONE
DESCRIPTION: DESCRIPTION:
Initializes an interrupt lock. Initializes an interrupt lock. The name must be persistent throughout the
lifetime of the lock.
NOTES: NOTES:
Concurrent initialization leads to unpredictable results. Concurrent initialization leads to unpredictable results.
@@ -520,8 +522,8 @@ CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
void rtems_interrupt_lock_acquire( void rtems_interrupt_lock_acquire(
rtems_interrupt_lock *lock, rtems_interrupt_lock *lock,
rtems_interrupt_level level rtems_interrupt_lock_context *lock_context
); );
DIRECTIVE STATUS CODES: DIRECTIVE STATUS CODES:
@@ -532,6 +534,12 @@ DESCRIPTION:
a SMP lock. a SMP lock.
NOTES: NOTES:
A separate lock context must be provided for each acquire/release pair, for
example an automatic variable.
An attempt to recursively acquire the lock may result in an infinite loop
with interrupts disabled.
This directive will not cause the calling thread to be preempted. This This directive will not cause the calling thread to be preempted. This
directive can be used in thread and interrupt context. directive can be used in thread and interrupt context.
@@ -549,8 +557,8 @@ CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
void rtems_interrupt_lock_release( void rtems_interrupt_lock_release(
rtems_interrupt_lock *lock, rtems_interrupt_lock *lock,
rtems_interrupt_level level rtems_interrupt_lock_context *lock_context
); );
DIRECTIVE STATUS CODES: DIRECTIVE STATUS CODES:
@@ -561,6 +569,9 @@ DESCRIPTION:
directive releases a SMP lock. directive releases a SMP lock.
NOTES: NOTES:
The lock context must be the one used to acquire the lock, otherwise the
result is unpredictable.
This directive will not cause the calling thread to be preempted. This This directive will not cause the calling thread to be preempted. This
directive can be used in thread and interrupt context. directive can be used in thread and interrupt context.
@@ -578,8 +589,8 @@ CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
void rtems_interrupt_lock_acquire_isr( void rtems_interrupt_lock_acquire_isr(
rtems_interrupt_lock *lock, rtems_interrupt_lock *lock,
rtems_interrupt_level level rtems_interrupt_lock_context *lock_context
); );
DIRECTIVE STATUS CODES: DIRECTIVE STATUS CODES:
@@ -589,14 +600,19 @@ DESCRIPTION:
The interrupt status will remain unchanged. On SMP configurations this The interrupt status will remain unchanged. On SMP configurations this
directive acquires a SMP lock. directive acquires a SMP lock.
NOTES:
A separate lock context must be provided for each acquire/release pair, for
example an automatic variable.
An attempt to recursively acquire the lock may result in an infinite loop.
This directive is intended for device drivers and should be called from the
corresponding interrupt service routine.
In case the corresponding interrupt service routine can be interrupted by In case the corresponding interrupt service routine can be interrupted by
higher priority interrupts and these interrupts enter the critical section higher priority interrupts and these interrupts enter the critical section
protected by this lock, then the result is unpredictable. protected by this lock, then the result is unpredictable.
NOTES:
This directive should be called from the corresponding interrupt service
routine.
.. raw:: latex .. raw:: latex
\clearpage \clearpage
@@ -611,21 +627,23 @@ CALLING SEQUENCE:
.. code-block:: c .. code-block:: c
void rtems_interrupt_lock_release_isr( void rtems_interrupt_lock_release_isr(
rtems_interrupt_lock *lock, rtems_interrupt_lock *lock,
rtems_interrupt_level level rtems_interrupt_lock_context *lock_context
); );
DIRECTIVE STATUS CODES: DIRECTIVE STATUS CODES:
NONE NONE
DESCRIPTION: DESCRIPTION:
The interrupt status will remain unchanged. In SMP configurations, this
The interrupt status will remain unchanged. On SMP configurations this directive releases an SMP lock.
directive releases a SMP lock.
NOTES: NOTES:
This directive should be called from the corresponding interrupt service The lock context must be the one used to acquire the lock, otherwise the
routine. result is unpredictable.
This directive is intended for device drivers and should be called from the
corresponding interrupt service routine.
.. raw:: latex .. raw:: latex