mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-21 09:17:29 +08:00
score: Optimize _Objects_Get_local()
Make the interrupt lock context the second parameter to avoid register moves.
This commit is contained in:
@@ -84,8 +84,8 @@ RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Get (
|
||||
{
|
||||
return (POSIX_Barrier_Control *) _Objects_Get_local(
|
||||
(Objects_Id) *barrier,
|
||||
&_POSIX_Barrier_Information,
|
||||
lock_context
|
||||
lock_context,
|
||||
&_POSIX_Barrier_Information
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control *_POSIX_Message_queue_Get(
|
||||
)
|
||||
{
|
||||
return (POSIX_Message_queue_Control *)
|
||||
_Objects_Get_local( id, &_POSIX_Message_queue_Information, lock_context );
|
||||
_Objects_Get_local( id, lock_context, &_POSIX_Message_queue_Information );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -163,19 +163,6 @@ RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Namespace_remove (
|
||||
&_POSIX_Message_queue_Information, &the_mq->Object );
|
||||
}
|
||||
|
||||
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control *
|
||||
_POSIX_Message_queue_Get_interrupt_disable(
|
||||
mqd_t id,
|
||||
ISR_lock_Context *lock_context
|
||||
)
|
||||
{
|
||||
return (POSIX_Message_queue_Control *) _Objects_Get_local(
|
||||
(Objects_Id) id,
|
||||
&_POSIX_Message_queue_Information,
|
||||
lock_context
|
||||
);
|
||||
}
|
||||
|
||||
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control *
|
||||
_POSIX_Message_queue_Get_by_name(
|
||||
const char *name,
|
||||
|
||||
@@ -67,8 +67,8 @@ RTEMS_INLINE_ROUTINE POSIX_Semaphore_Control *_POSIX_Semaphore_Get(
|
||||
{
|
||||
return (POSIX_Semaphore_Control *) _Objects_Get_local(
|
||||
(Objects_Id) *id,
|
||||
&_POSIX_Semaphore_Information,
|
||||
lock_context
|
||||
lock_context,
|
||||
&_POSIX_Semaphore_Information
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -86,8 +86,8 @@ RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Get(
|
||||
|
||||
return (POSIX_Spinlock_Control *) _Objects_Get_local(
|
||||
*spinlock,
|
||||
&_POSIX_Spinlock_Information,
|
||||
lock_context
|
||||
lock_context,
|
||||
&_POSIX_Spinlock_Information
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -99,8 +99,8 @@ RTEMS_INLINE_ROUTINE POSIX_Timer_Control *_POSIX_Timer_Get (
|
||||
{
|
||||
return (POSIX_Timer_Control *) _Objects_Get_local(
|
||||
(Objects_Id) id,
|
||||
&_POSIX_Timer_Information,
|
||||
lock_context
|
||||
lock_context,
|
||||
&_POSIX_Timer_Information
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ POSIX_Condition_variables_Control *_POSIX_Condition_variables_Get(
|
||||
|
||||
return (POSIX_Condition_variables_Control *) _Objects_Get_local(
|
||||
(Objects_Id) *cond,
|
||||
&_POSIX_Condition_variables_Information,
|
||||
lock_context
|
||||
lock_context,
|
||||
&_POSIX_Condition_variables_Information
|
||||
);
|
||||
}
|
||||
|
||||
@@ -63,8 +63,8 @@ POSIX_RWLock_Control *_POSIX_RWLock_Get(
|
||||
|
||||
return (POSIX_RWLock_Control *) _Objects_Get_local(
|
||||
*rwlock,
|
||||
&_POSIX_RWLock_Information,
|
||||
lock_context
|
||||
lock_context,
|
||||
&_POSIX_RWLock_Information
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ RTEMS_INLINE_ROUTINE Barrier_Control *_Barrier_Get(
|
||||
)
|
||||
{
|
||||
return (Barrier_Control *)
|
||||
_Objects_Get_local( id, &_Barrier_Information, lock_context );
|
||||
_Objects_Get_local( id, lock_context, &_Barrier_Information );
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -72,7 +72,7 @@ RTEMS_INLINE_ROUTINE Dual_ported_memory_Control *_Dual_ported_memory_Get(
|
||||
)
|
||||
{
|
||||
return (Dual_ported_memory_Control *)
|
||||
_Objects_Get_local( id, &_Dual_ported_memory_Information, lock_context );
|
||||
_Objects_Get_local( id, lock_context, &_Dual_ported_memory_Information );
|
||||
}
|
||||
|
||||
/**@}*/
|
||||
|
||||
@@ -90,7 +90,7 @@ RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Get(
|
||||
)
|
||||
{
|
||||
return (Rate_monotonic_Control *)
|
||||
_Objects_Get_local( id, &_Rate_monotonic_Information, lock_context );
|
||||
_Objects_Get_local( id, lock_context, &_Rate_monotonic_Information );
|
||||
}
|
||||
|
||||
void _Rate_monotonic_Timeout( Watchdog_Control *watchdog );
|
||||
|
||||
@@ -89,8 +89,8 @@ RTEMS_INLINE_ROUTINE Timer_Control *_Timer_Get(
|
||||
{
|
||||
return (Timer_Control *) _Objects_Get_local(
|
||||
id,
|
||||
&_Timer_Information,
|
||||
lock_context
|
||||
lock_context,
|
||||
&_Timer_Information
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -630,8 +630,10 @@ Objects_Control *_Objects_Get_isr_disable(
|
||||
*
|
||||
* @param id The object identifier. This is the first parameter since usual
|
||||
* callers get the object identifier as the first parameter themself.
|
||||
* @param lock_context The interrupt lock context. This is the second
|
||||
* parameter since usual callers get the interrupt lock context as the second
|
||||
* parameter themself.
|
||||
* @param information The object class information block.
|
||||
* @param lock_context The interrupt lock context.
|
||||
*
|
||||
* @retval NULL No associated object exists.
|
||||
* @retval other The pointer to the associated object control block.
|
||||
@@ -640,8 +642,8 @@ Objects_Control *_Objects_Get_isr_disable(
|
||||
*/
|
||||
Objects_Control *_Objects_Get_local(
|
||||
Objects_Id id,
|
||||
const Objects_Information *information,
|
||||
ISR_lock_Context *lock_context
|
||||
ISR_lock_Context *lock_context,
|
||||
const Objects_Information *information
|
||||
);
|
||||
|
||||
/**
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
|
||||
Objects_Control *_Objects_Get_local(
|
||||
Objects_Id id,
|
||||
const Objects_Information *information,
|
||||
ISR_lock_Context *lock_context
|
||||
ISR_lock_Context *lock_context,
|
||||
const Objects_Information *information
|
||||
)
|
||||
{
|
||||
uint32_t index;
|
||||
|
||||
@@ -56,7 +56,7 @@ char *_Objects_Get_name_as_string(
|
||||
if ( !information )
|
||||
return NULL;
|
||||
|
||||
the_object = _Objects_Get_local( tmpId, information, &lock_context );
|
||||
the_object = _Objects_Get_local( tmpId, &lock_context, information );
|
||||
if ( the_object == NULL ) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user