summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/mutex.c
diff options
context:
space:
mode:
authorGedare Bloom <gedare@rtems.org>2016-06-09 11:33:15 -0400
committerGedare Bloom <gedare@rtems.org>2016-07-25 12:44:47 -0400
commitf23d4706169d68d3c4e90b297650f89c272716f4 (patch)
tree333bdc4b4be2ec4ad7ee80ee03229759ec60602a /cpukit/score/src/mutex.c
parentscore: Fix for RTEMS_DEBUG (diff)
downloadrtems-f23d4706169d68d3c4e90b297650f89c272716f4.tar.bz2
cpukit: Add and use Watchdog_Discipline.
Clock disciplines may be WATCHDOG_RELATIVE, WATCHDOG_ABSOLUTE, or WATCHDOG_NO_TIMEOUT. A discipline of WATCHDOG_RELATIVE with a timeout of WATCHDOG_NO_TIMEOUT is equivalent to a discipline of WATCHDOG_NO_TIMEOUT. updates #2732
Diffstat (limited to 'cpukit/score/src/mutex.c')
-rw-r--r--cpukit/score/src/mutex.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/cpukit/score/src/mutex.c b/cpukit/score/src/mutex.c
index ed374a0768..ed600b3ec2 100644
--- a/cpukit/score/src/mutex.c
+++ b/cpukit/score/src/mutex.c
@@ -104,7 +104,6 @@ static void _Mutex_Acquire_slow(
Mutex_Control *mutex,
Thread_Control *owner,
Thread_Control *executing,
- Watchdog_Interval timeout,
Thread_queue_Context *queue_context
)
{
@@ -115,7 +114,6 @@ static void _Mutex_Acquire_slow(
MUTEX_TQ_OPERATIONS,
executing,
STATES_WAITING_FOR_SYS_LOCK_MUTEX,
- timeout,
queue_context
);
}
@@ -219,7 +217,8 @@ void _Mutex_Acquire( struct _Mutex_Control *_mutex )
++executing->resource_count;
_Mutex_Queue_release( mutex, &queue_context );
} else {
- _Mutex_Acquire_slow( mutex, owner, executing, 0, &queue_context );
+ _Thread_queue_Context_set_no_timeout( &queue_context );
+ _Mutex_Acquire_slow( mutex, owner, executing, &queue_context );
}
}
@@ -260,7 +259,8 @@ int _Mutex_Acquire_timed(
break;
}
- _Mutex_Acquire_slow( mutex, owner, executing, ticks, &queue_context );
+ _Thread_queue_Context_set_relative_timeout( &queue_context, ticks );
+ _Mutex_Acquire_slow( mutex, owner, executing, &queue_context );
return STATUS_GET_POSIX( _Thread_Wait_get_status( executing ) );
}
@@ -336,7 +336,8 @@ void _Mutex_recursive_Acquire( struct _Mutex_recursive_Control *_mutex )
++mutex->nest_level;
_Mutex_Queue_release( &mutex->Mutex, &queue_context );
} else {
- _Mutex_Acquire_slow( &mutex->Mutex, owner, executing, 0, &queue_context );
+ _Thread_queue_Context_set_no_timeout( &queue_context );
+ _Mutex_Acquire_slow( &mutex->Mutex, owner, executing, &queue_context );
}
}
@@ -382,13 +383,8 @@ int _Mutex_recursive_Acquire_timed(
break;
}
- _Mutex_Acquire_slow(
- &mutex->Mutex,
- owner,
- executing,
- ticks,
- &queue_context
- );
+ _Thread_queue_Context_set_relative_timeout( &queue_context, ticks );
+ _Mutex_Acquire_slow( &mutex->Mutex, owner, executing, &queue_context );
return STATUS_GET_POSIX( _Thread_Wait_get_status( executing ) );
}