diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-02-03 10:49:13 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-02-03 10:49:13 +0100 |
commit | 85ed95ec4808d021be50a1ab1f476476a09c5a22 (patch) | |
tree | 8ed250bca465fd3394d7c5f273efc51f761d69f9 /cpukit/libcsupport | |
parent | score: Move _Thread_Scheduler_ask_for_help() (diff) | |
download | rtems-85ed95ec4808d021be50a1ab1f476476a09c5a22.tar.bz2 |
termios: Fix static device initalization
This enables early printk() support.
Update #2838.
Diffstat (limited to 'cpukit/libcsupport')
-rw-r--r-- | cpukit/libcsupport/include/rtems/termiostypes.h | 18 | ||||
-rw-r--r-- | cpukit/libcsupport/src/termios.c | 12 |
2 files changed, 23 insertions, 7 deletions
diff --git a/cpukit/libcsupport/include/rtems/termiostypes.h b/cpukit/libcsupport/include/rtems/termiostypes.h index ffe172c439..3cf6bebe19 100644 --- a/cpukit/libcsupport/include/rtems/termiostypes.h +++ b/cpukit/libcsupport/include/rtems/termiostypes.h @@ -90,6 +90,16 @@ typedef struct rtems_termios_device_context { ); } rtems_termios_device_context; +void rtems_termios_device_lock_acquire_default( + rtems_termios_device_context *ctx, + rtems_interrupt_lock_context *lock_context +); + +void rtems_termios_device_lock_release_default( + rtems_termios_device_context *ctx, + rtems_interrupt_lock_context *lock_context +); + /** * @brief Initializes a device context. * @@ -104,6 +114,8 @@ RTEMS_INLINE_ROUTINE void rtems_termios_device_context_initialize( ) { rtems_interrupt_lock_initialize( &context->lock.interrupt, name ); + context->lock_acquire = rtems_termios_device_lock_acquire_default; + context->lock_release = rtems_termios_device_lock_release_default; } /** @@ -113,7 +125,11 @@ RTEMS_INLINE_ROUTINE void rtems_termios_device_context_initialize( * is only used if profiling is enabled. */ #define RTEMS_TERMIOS_DEVICE_CONTEXT_INITIALIZER( name ) \ - { { RTEMS_INTERRUPT_LOCK_INITIALIZER( name ) } } + { \ + { RTEMS_INTERRUPT_LOCK_INITIALIZER( name ) }, \ + rtems_termios_device_lock_acquire_default, \ + rtems_termios_device_lock_release_default \ + } /** * @brief Termios device handler. diff --git a/cpukit/libcsupport/src/termios.c b/cpukit/libcsupport/src/termios.c index d3757df0d4..c44abbe810 100644 --- a/cpukit/libcsupport/src/termios.c +++ b/cpukit/libcsupport/src/termios.c @@ -363,8 +363,8 @@ deviceReleaseMutex( (void) sc; } -static void -deviceAcquireInterrupt( +void +rtems_termios_device_lock_acquire_default( rtems_termios_device_context *ctx, rtems_interrupt_lock_context *lock_context ) @@ -372,8 +372,8 @@ deviceAcquireInterrupt( rtems_interrupt_lock_acquire (&ctx->lock.interrupt, lock_context); } -static void -deviceReleaseInterrupt( +void +rtems_termios_device_lock_release_default( rtems_termios_device_context *ctx, rtems_interrupt_lock_context *lock_context ) @@ -530,8 +530,8 @@ rtems_termios_open_tty( ctx->lock_acquire = deviceAcquireMutex; ctx->lock_release = deviceReleaseMutex; } else { - ctx->lock_acquire = deviceAcquireInterrupt; - ctx->lock_release = deviceReleaseInterrupt; + ctx->lock_acquire = rtems_termios_device_lock_acquire_default; + ctx->lock_release = rtems_termios_device_lock_release_default; } /* |