| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Provide dedicated seize and surrender methods for inherit priority
mutexes. This eliminates CORE_mutex_Attributes.
|
|
|
|
|
| |
Rework seize and surrender methods to use CORE_ceiling_mutex_Control.
This eliminates CORE_mutex_Disciplines.
|
|
|
|
|
|
|
|
| |
Add CORE_recursive_mutex_Control and CORE_ceiling_mutex_Control to avoid
the run-time evaluation of attributes to figure out how a particular
mutex methods should behave. Start with the no protocol variants. This
eliminates the CORE_MUTEX_DISCIPLINES_FIFO and
CORE_MUTEX_DISCIPLINES_PRIORITY disciplines.
|
|
|
|
|
| |
Remove superfluous support for simple binary semaphores. With this we
can get rid of the CORE_MUTEX_NESTING_BLOCKS variant.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Move the safety check performed by
_CORE_mutex_Check_dispatch_for_seize() out of the performance critical
path and generalize it. Blocking on a thread queue with an unexpected
thread dispatch disabled level is illegal in all system states.
Add the expected thread dispatch disable level (which may be 1 or 2
depending on the operation) to Thread_queue_Context and use it in
_Thread_queue_Enqueue_critical().
|
|
|
|
|
|
| |
Add _Thread_queue_Context_set_MP_callout() to simplify
_Thread_queue_Context_initialize(). This makes it possible to more
easily add additional fields to Thread_queue_Context.
|
|
|
|
|
|
| |
Adjust thread queue layout according to Newlib. This makes it possible
to use the same implementation for <sys/lock.h> and CORE mutexes in the
future.
|
|
|
|
| |
Close #2695.
|
|
|
|
|
|
|
|
|
|
|
| |
Unify the status codes of the Classic and POSIX API to use the new enum
Status_Control. This eliminates the Thread_Control::Wait::timeout_code
field and the timeout parameter of _Thread_queue_Enqueue_critical() and
_MPCI_Send_request_packet(). It gets rid of the status code translation
tables and instead uses simple bit operations to get the status for a
particular API. This enables translation of status code constants at
compile time. Add _Thread_Wait_get_status() to avoid direct access of
thread internal data structures.
|
|
|
|
| |
Close #2720.
|
|
|
|
| |
Close #2719.
|
|
|
|
|
|
|
|
| |
Drop the multiprocessing (MP) dependent callout parameter from the
thread queue extract, dequeue, flush and unblock methods. Merge this
parameter with the lock context into new structure Thread_queue_Context.
This helps to gets rid of the conditionally compiled method call
helpers.
|
|
|
|
|
| |
Get rid of the mp_id parameter used for some thread queue methods. Use
THREAD_QUEUE_QUEUE_TO_OBJECT() instead.
|
| |
|
|
|
|
|
|
|
| |
We must call the MP callout for proxies if we unblock them after a
thread queue extraction. This was missing in
_Thread_queue_Flush_critical(). Move thread remove timer and unblock
code to new function _Thread_Remove_timer_and_unblock().
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change adds rtems_printf and related functions and wraps the
RTEMS print plugin support into a user API. All references to the
plugin are removed and replaced with the rtems_printer interface.
Printk and related functions are made to return a valid number of
characters formatted and output.
The function attribute to check printf functions has been added
to rtems_printf and printk. No changes to remove warrnings are part
of this patch set.
The testsuite has been moved over to the rtems_printer. The testsuite
has a mix of rtems_printer access and direct print control via the
tmacros.h header file. The support for begink/endk has been removed
as it served no purpose and only confused the code base. The testsuite
has not been refactored to use rtems_printf. This is future work.
|
|
|
|
| |
Close #2718.
|
|
|
|
| |
Delete unused parameter.
|
|
|
|
| |
Delete unused parameter.
|
|
|
|
|
| |
Uniformly use *_Get() to get an object by identifier with a lock
context.
|
|
|
|
|
|
| |
Rename _Objects_Get_local() into _Objects_Get(). Confusions with the
previous _Objects_Get() function are avoided since the Objects_Locations
parameter is gone.
|
|
|
|
| |
Delete now unused Objects_Locations.
|
| |
|
|
|
|
|
|
| |
Use _RBTree_Insert_inline() for priority thread queues.
Update #2556.
|
|
|
|
| |
Update #2555.
|
|
|
|
|
|
|
|
|
| |
Rename _ISR_Disable() into _ISR_Local_disable(). Rename _ISR_Enable()
into _ISR_Local_enable(). Remove _Debug_Is_owner_of_giant().
This is a preparation to remove the Giant lock.
Update #2555.
|
|
|
|
|
|
|
|
|
| |
Rename _ISR_Disable_without_giant() into _ISR_Local_disable(). Rename
_ISR_Enable_without_giant() into _ISR_Local_enable().
This is a preparation to remove the Giant lock.
Update #2555.
|
|
|
|
|
|
|
| |
Avoid Giant lock for _Objects_Extend_information().
Update #2280.
Update #2555.
|
|
|
|
| |
Update #2555.
|
|
|
|
| |
Update #2555.
|
|
|
|
|
|
|
|
| |
Add Thread_Life_state::THREAD_LIFE_CHANGE_DEFERRED and rework the POSIX
thread cancellation to use the thread life states.
Update #2555.
Update #2626.
|
|
|
|
| |
Update #2555.
|
|
|
|
|
|
|
|
|
| |
Rework pthread_join() to use _Thread_Join().
Close #2402.
Update #2555.
Update #2626.
Close #2714.
|
|
|
|
|
|
|
|
| |
Use _Thread_Change_life_locked() to avoid duplicated code. Avoid Giant
lock in _Thread_Life_action_handler().
Update #2555.
Update #2626.
|
|
|
|
|
|
|
| |
Rework _Thread_Cancel() to use _Thread_Change_life_locked().
Update #2555.
Update #2626.
|
|
|
|
|
|
|
|
|
| |
Rework _Thread_Restart_other() to use _Thread_Change_life_locked().
Cope with concurrent change requests by means of a pending request
counter.
Update #2555.
Update #2626.
|
|
|
|
|
|
|
|
|
|
|
| |
Split _Thread_Restart() into _Thread_Restart_self() and
_Thread_Restart_other(). Move content of existing
_Thread_Restart_self() into new _Thread_Restart_self(). Avoid Giant
lock for thread restart. _Thread_Restart_self() is a no-return function
and used by _Thread_Global_construction().
Update #2555.
Update #2626.
|
|
|
|
|
|
|
|
| |
This makes it possible to do thread state and thread life changes
together under protection of the thread state lock.
Update #2555.
Update #2626.
|
|
|
|
|
|
|
|
| |
This makes it possible to do thread state and thread life changes
together under protection of the thread state lock.
Update #2555.
Update #2626.
|
|
|
|
|
|
|
|
| |
Split _Thread_Close() into _Thread_Join() and _Thread_Cancel() to
prepare for a re-use in pthread_join() and pthread_cancel().
Update #2555.
Update #2626.
|
|
|
|
|
|
|
| |
Rework _Thread_Exit() to use _Thread_Change_life_locked().
Update #2555.
Update #2626.
|
|
|
|
|
| |
Update #2555.
Update #2626.
|
|
|
|
|
|
|
|
|
| |
Add _Thread_Change_life_locked() as a general function to alter the
thread life state. Use it to implement _Thread_Set_life_protection() as
a first step.
Update #2555.
Update #2626.
|
|
|
|
|
| |
Update #2555.
Update #2626.
|
|
|
|
|
|
|
|
| |
Disable thread dispatching is enough to prevent deletion of the
executing thread. There is no need for an additional life protection.
Update #2555.
Update #2626.
|
|
|
|
|
|
|
|
| |
The goal is to make _Thread_Exit() a no-return function in follow up
patches.
Update #2555.
Update #2626.
|
| |
|
|
|
|
| |
Update #2555.
|
|
|
|
| |
Update #2555.
|