summaryrefslogtreecommitdiffstats
path: root/cpukit/rtems/src/systemeventsend.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-03 09:59:50 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-04 07:24:31 +0200
commita0dee7c7bfff0305e9f5efc83b97b35d25d4ad19 (patch)
treec1c2be7e0a3f487dd42a32c279c40dd7675c5b5f /cpukit/rtems/src/systemeventsend.c
parentrtems: Return status in _Event_Surrender() (diff)
downloadrtems-a0dee7c7bfff0305e9f5efc83b97b35d25d4ad19.tar.bz2
score: Simplify _Thread_Get_interrupt_disable()
Remove the object location parameter.
Diffstat (limited to 'cpukit/rtems/src/systemeventsend.c')
-rw-r--r--cpukit/rtems/src/systemeventsend.c46
1 files changed, 20 insertions, 26 deletions
diff --git a/cpukit/rtems/src/systemeventsend.c b/cpukit/rtems/src/systemeventsend.c
index 5b2116c403..97bcabd488 100644
--- a/cpukit/rtems/src/systemeventsend.c
+++ b/cpukit/rtems/src/systemeventsend.c
@@ -7,10 +7,10 @@
*/
/*
- * Copyright (c) 2012 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2012, 2016 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
- * Obere Lagerstr. 30
+ * Dornierstr. 4
* 82178 Puchheim
* Germany
* <rtems@embedded-brains.de>
@@ -33,34 +33,28 @@ rtems_status_code rtems_event_system_send(
rtems_event_set event_in
)
{
- rtems_status_code sc;
- Thread_Control *thread;
- Objects_Locations location;
+ Thread_Control *the_thread;
RTEMS_API_Control *api;
ISR_lock_Context lock_context;
- thread = _Thread_Get_interrupt_disable( id, &location, &lock_context );
- switch ( location ) {
- case OBJECTS_LOCAL:
- api = thread->API_Extensions[ THREAD_API_RTEMS ];
- sc = _Event_Surrender(
- thread,
- event_in,
- &api->System_event,
- THREAD_WAIT_CLASS_SYSTEM_EVENT,
- &lock_context
- );
- break;
-#ifdef RTEMS_MULTIPROCESSING
- case OBJECTS_REMOTE:
- _Thread_Dispatch();
- sc = RTEMS_ILLEGAL_ON_REMOTE_OBJECT;
- break;
+ the_thread = _Thread_Get_interrupt_disable( id, &lock_context );
+
+ if ( the_thread == NULL ) {
+#if defined(RTEMS_MULTIPROCESSING)
+ if ( _Thread_MP_Is_remote( id ) ) {
+ return RTEMS_ILLEGAL_ON_REMOTE_OBJECT;
+ }
#endif
- default:
- sc = RTEMS_INVALID_ID;
- break;
+
+ return RTEMS_INVALID_ID;
}
- return sc;
+ api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
+ return _Event_Surrender(
+ the_thread,
+ event_in,
+ &api->System_event,
+ THREAD_WAIT_CLASS_SYSTEM_EVENT,
+ &lock_context
+ );
}