summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-08-22 15:20:06 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-08-23 12:54:03 +0200
commit07332ae4db821ad8a11b1eda6fbb5b453ef069ef (patch)
tree7397f3276cc6fb06170919854c91852bc0fb75b1 /cpukit/score/src
parentFilesystem: Remove superfluous free() (diff)
downloadrtems-07332ae4db821ad8a11b1eda6fbb5b453ef069ef.tar.bz2
score: _Thread_queue_Enqueue_with_handler()
Add thread parameter to _Thread_queue_Enqueue_with_handler() to avoid access to global _Thread_Executing.
Diffstat (limited to 'cpukit/score/src')
-rw-r--r--cpukit/score/src/corebarrierwait.c2
-rw-r--r--cpukit/score/src/coremsgseize.c2
-rw-r--r--cpukit/score/src/coremsgsubmit.c6
-rw-r--r--cpukit/score/src/coremutexseize.c2
-rw-r--r--cpukit/score/src/corerwlockobtainread.c1
-rw-r--r--cpukit/score/src/corerwlockobtainwrite.c1
-rw-r--r--cpukit/score/src/coresemseize.c2
-rw-r--r--cpukit/score/src/mpci.c22
-rw-r--r--cpukit/score/src/threadqenqueue.c4
9 files changed, 26 insertions, 16 deletions
diff --git a/cpukit/score/src/corebarrierwait.c b/cpukit/score/src/corebarrierwait.c
index aa9face886..97edf132ed 100644
--- a/cpukit/score/src/corebarrierwait.c
+++ b/cpukit/score/src/corebarrierwait.c
@@ -51,5 +51,5 @@ void _CORE_barrier_Wait(
executing->Wait.id = id;
_ISR_Enable( level );
- _Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout );
+ _Thread_queue_Enqueue( &the_barrier->Wait_queue, executing, timeout );
}
diff --git a/cpukit/score/src/coremsgseize.c b/cpukit/score/src/coremsgseize.c
index b3280bf755..11d83ee2e6 100644
--- a/cpukit/score/src/coremsgseize.c
+++ b/cpukit/score/src/coremsgseize.c
@@ -121,5 +121,5 @@ void _CORE_message_queue_Seize(
/* Wait.count will be filled in with the message priority */
_ISR_Enable( level );
- _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
+ _Thread_queue_Enqueue( &the_message_queue->Wait_queue, executing, timeout );
}
diff --git a/cpukit/score/src/coremsgsubmit.c b/cpukit/score/src/coremsgsubmit.c
index b0b4833640..3fc4f4ccd6 100644
--- a/cpukit/score/src/coremsgsubmit.c
+++ b/cpukit/score/src/coremsgsubmit.c
@@ -130,7 +130,11 @@ CORE_message_queue_Status _CORE_message_queue_Submit(
executing->Wait.count = submit_type;
_ISR_Enable( level );
- _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
+ _Thread_queue_Enqueue(
+ &the_message_queue->Wait_queue,
+ executing,
+ timeout
+ );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
diff --git a/cpukit/score/src/coremutexseize.c b/cpukit/score/src/coremutexseize.c
index 2cab59e961..283029d100 100644
--- a/cpukit/score/src/coremutexseize.c
+++ b/cpukit/score/src/coremutexseize.c
@@ -65,7 +65,7 @@ void _CORE_mutex_Seize_interrupt_blocking(
}
the_mutex->blocked_count++;
- _Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
+ _Thread_queue_Enqueue( &the_mutex->Wait_queue, executing, timeout );
_Thread_Enable_dispatch();
}
diff --git a/cpukit/score/src/corerwlockobtainread.c b/cpukit/score/src/corerwlockobtainread.c
index ca9a214627..cfba5cfbf3 100644
--- a/cpukit/score/src/corerwlockobtainread.c
+++ b/cpukit/score/src/corerwlockobtainread.c
@@ -86,6 +86,7 @@ void _CORE_RWLock_Obtain_for_reading(
_Thread_queue_Enqueue_with_handler(
&the_rwlock->Wait_queue,
+ executing,
timeout,
_CORE_RWLock_Timeout
);
diff --git a/cpukit/score/src/corerwlockobtainwrite.c b/cpukit/score/src/corerwlockobtainwrite.c
index e5f3e73029..54c41d91f3 100644
--- a/cpukit/score/src/corerwlockobtainwrite.c
+++ b/cpukit/score/src/corerwlockobtainwrite.c
@@ -76,6 +76,7 @@ void _CORE_RWLock_Obtain_for_writing(
_Thread_queue_Enqueue_with_handler(
&the_rwlock->Wait_queue,
+ executing,
timeout,
_CORE_RWLock_Timeout
);
diff --git a/cpukit/score/src/coresemseize.c b/cpukit/score/src/coresemseize.c
index cde444bfce..2cbfb47344 100644
--- a/cpukit/score/src/coresemseize.c
+++ b/cpukit/score/src/coresemseize.c
@@ -63,6 +63,6 @@ void _CORE_semaphore_Seize(
executing->Wait.queue = &the_semaphore->Wait_queue;
executing->Wait.id = id;
_ISR_Enable( level );
- _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout );
+ _Thread_queue_Enqueue( &the_semaphore->Wait_queue, executing, timeout );
}
#endif
diff --git a/cpukit/score/src/mpci.c b/cpukit/score/src/mpci.c
index c8cf6bd70b..bc289943f3 100644
--- a/cpukit/score/src/mpci.c
+++ b/cpukit/score/src/mpci.c
@@ -190,14 +190,16 @@ uint32_t _MPCI_Send_request_packet (
States_Control extra_state
)
{
- the_packet->source_tid = _Thread_Executing->Object.id;
- the_packet->source_priority = _Thread_Executing->current_priority;
+ Thread_Control *executing = _Thread_Executing;
+
+ the_packet->source_tid = executing->Object.id;
+ the_packet->source_priority = executing->current_priority;
the_packet->to_convert =
( the_packet->to_convert - sizeof(MP_packet_Prefix) ) / sizeof(uint32_t);
- _Thread_Executing->Wait.id = the_packet->id;
+ executing->Wait.id = the_packet->id;
- _Thread_Executing->Wait.queue = &_MPCI_Remote_blocked_threads;
+ executing->Wait.queue = &_MPCI_Remote_blocked_threads;
_Thread_Disable_dispatch();
@@ -212,14 +214,18 @@ uint32_t _MPCI_Send_request_packet (
if (the_packet->timeout == MPCI_DEFAULT_TIMEOUT)
the_packet->timeout = _MPCI_table->default_timeout;
- _Thread_queue_Enqueue( &_MPCI_Remote_blocked_threads, the_packet->timeout );
+ _Thread_queue_Enqueue(
+ &_MPCI_Remote_blocked_threads,
+ executing,
+ the_packet->timeout
+ );
- _Thread_Executing->current_state =
- _States_Set( extra_state, _Thread_Executing->current_state );
+ executing->current_state =
+ _States_Set( extra_state, executing->current_state );
_Thread_Enable_dispatch();
- return _Thread_Executing->Wait.return_code;
+ return executing->Wait.return_code;
}
void _MPCI_Send_response_packet (
diff --git a/cpukit/score/src/threadqenqueue.c b/cpukit/score/src/threadqenqueue.c
index 92d5546608..54f85f8075 100644
--- a/cpukit/score/src/threadqenqueue.c
+++ b/cpukit/score/src/threadqenqueue.c
@@ -28,11 +28,11 @@
void _Thread_queue_Enqueue_with_handler(
Thread_queue_Control *the_thread_queue,
+ Thread_Control *the_thread,
Watchdog_Interval timeout,
Thread_queue_Timeout_callout handler
)
{
- Thread_Control *the_thread;
ISR_Level level;
Thread_blocking_operation_States sync_state;
Thread_blocking_operation_States (*enqueue_p)(
@@ -41,8 +41,6 @@ void _Thread_queue_Enqueue_with_handler(
ISR_Level *
);
- the_thread = _Thread_Executing;
-
#if defined(RTEMS_MULTIPROCESSING)
if ( _Thread_MP_Is_receive( the_thread ) && the_thread->receive_packet )
the_thread = _Thread_MP_Allocate_proxy( the_thread_queue->state );