summaryrefslogtreecommitdiff
path: root/cpukit/score/src/mpci.c (follow)
AgeCommit message (Collapse)Author
2020-04-28doxygen: Switch @brief and @ingroupSebastian Huber
This order change fixes the Latex documentation build via Doxygen.
2020-04-16Canonicalize config.h includeSebastian Huber
Use the following variant which was already used by most source files: #ifdef HAVE_CONFIG_H #include "config.h" #endif
2020-02-12score: Statically allocate idle/MPCI stacksSebastian Huber
Place idle and MPCI stacks into extra linker sections. This can be optionally used by applications to control the placement of the stacks. Update #3835.
2020-02-12score: Move thread stack allocationSebastian Huber
Move thread stack allocation to caller side of _Thread_Initialize(). Update #3835.
2020-02-12score: Add Thread_ConfigurationSebastian Huber
Add the Thread_Configuration structure to reduce the parameter count of _Thread_Initialize(). This makes it easier to add more parameters in the future. It simplifies the code generation since most architectures do not have that many registers available for function parameters. Update #3835.
2019-12-13config: Add _MPCI_ConfigurationSebastian Huber
Replace the user MPCI configuration table with a system provided _MPCI_Configuration. Update #3735.
2019-04-04doxygen: Rename Score* groups in RTEMSScore*Sebastian Huber
Update #3706
2018-12-14score: Static Objects_Information initializationSebastian Huber
Statically allocate the objects information together with the initial set of objects either via <rtems/confdefs.h>. Provide default object informations with zero objects via librtemscpu.a. This greatly simplifies the workspace size estimate. RTEMS applications which do not use the unlimited objects option are easier to debug since all objects reside now in statically allocated objects of the right types. Close #3621.
2018-03-22mpci: Fix _MPCI_Enqueue_callout()Sebastian Huber
Update #3117. Update #3182.
2018-03-22mpci: Update due to thread queue API changesSebastian Huber
Update #3117. Update #3182.
2016-12-12score: Introduce _Internal_error()Sebastian Huber
2016-12-09score: Remove fatal is internal indicatorSebastian Huber
The fatal is internal indicator is redundant since the fatal source and error code uniquely identify a fatal error. Keep the fatal user extension is internal parameter for backward compatibility and set it to false always. Update #2825.
2016-11-24score: Optimize _Thread_queue_Enqueue()Sebastian Huber
Move thread state for _Thread_queue_Enqueue() to the thread queue context. This reduces the parameter count of _Thread_queue_Enqueue() from five to four (ARM for example has only four function parameter registers). Since the thread state is used after several function calls inside _Thread_queue_Enqueue() this parameter was saved on the stack previously.
2016-11-23score: Rename _Thread_queue_Enqueue_critical()Sebastian Huber
Delete unused _Thread_queue_Enqueue() and rename _Thread_queue_Enqueue_critical() to _Thread_queue_Enqueue().
2016-11-23score: Add thread queue enqueue calloutSebastian Huber
Replace the expected thread dispatch disable level with a thread queue enqueue callout. This enables the use of _Thread_Dispatch_direct() in the thread queue enqueue procedure. This avoids impossible exection paths, e.g. Per_CPU_Control::dispatch_necessary is always true.
2016-11-09mpci: Use the first scheduler for MPCISebastian Huber
Avoid use of processor index 0 which may have no scheduler assigned.
2016-09-08score: Introduce _Thread_Get_priority()Sebastian Huber
Avoid direct access to thread internal data fields.
2016-09-08score: Introduce Thread_queue_Lock_contextSebastian Huber
Introduce Thread_queue_Lock_context to contain the context necessary for thread queue lock and thread wait lock acquire/release operations to reduce the Thread_Control size.
2016-07-25cpukit: Add and use Watchdog_Discipline.Gedare Bloom
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
2016-05-30score: Add semaphore variantsSebastian Huber
2016-05-30score: _CORE_mutex_Check_dispatch_for_seize()Sebastian Huber
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().
2016-05-30score: Add _Thread_queue_Context_set_MP_callout()Sebastian Huber
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.
2016-05-26score: Add Status_Control for all APIsSebastian Huber
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.
2016-05-26Fix semaphore post overflow statusSebastian Huber
Close #2720.
2016-05-25score: Move thread queue MP callout to contextSebastian Huber
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.
2016-05-25score: Get rid of mp_id parameterSebastian Huber
Get rid of the mp_id parameter used for some thread queue methods. Use THREAD_QUEUE_QUEUE_TO_OBJECT() instead.
2016-05-20score: _CORE_semaphore_Seize()Sebastian Huber
Delete unused parameter.
2016-05-20Replace *_Get_interrupt_disable() with *_Get()Sebastian Huber
Uniformly use *_Get() to get an object by identifier with a lock context.
2016-05-20score: Avoid Giant lock for _Thread_Start()Sebastian Huber
Update #2555.
2016-05-04mpci: Avoid Giant lock in _MPCI_Process_response()Sebastian Huber
Update #2555. Update #2703.
2016-04-06score: Delete Thread_Wait_information::idSebastian Huber
This field was only by the monitor in non-multiprocessing configurations. Add new field Thread_Wait_information::remote_id in multiprocessing configurations and use it for the remote procedure call thread queue. Add _Thread_Wait_get_id() to obtain the object identifier for debug and system information tools. Ensure the object layout via static asserts. Add test cases to sptests/spthreadq01.
2016-03-29score: Allow MPCI packet receive function to blockSebastian Huber
2016-03-29score: Use constant for maximum count of CORE semaSebastian Huber
2016-03-29score: Remove Thread_queue_Queue::operations fieldSebastian Huber
Remove the Thread_queue_Queue::operations field to reduce the size of this structure. Add a thread queue operations parameter to the _Thread_queue_First(), _Thread_queue_First_locked(), _Thread_queue_Enqueue(), _Thread_queue_Dequeue() and _Thread_queue_Flush() functions. This is a preparation patch to reduce the size of several synchronization objects.
2016-03-18mpci: Avoid Giant lockSebastian Huber
Update #2555.
2016-02-17score: Avoid SCORE_EXTERNSebastian Huber
Delete SCORE_INIT. This finally removes the some.h: #ifndef SOME_XYZ_EXTERN #define SOME_XYZ_EXTERN extern #endif SOME_XYZ_EXTERN type xyz; some_xyz.c: #define SOME_XYZ_EXTERN #include <some.h> pattern in favour of some.h: extern type xyz; some_xyz.c #include <some.h> type xyz; Update #2559.
2016-02-03Use linker set for MPCI initializationSebastian Huber
Update #2408.
2016-01-26mpci: Fix warningSebastian Huber
Assignment is superfluous due to later call to _Thread_queue_Enqueue().
2016-01-26mpci: Update due to API changesSebastian Huber
Update due to API changes introduced by ccd54344d904b657123e4e4ba795a32212382be2. Update #2514.
2015-05-19score: Delete _CORE_semaphore_Seize()Sebastian Huber
Rename _CORE_semaphore_Seize_isr_disable() to _CORE_semaphore_Seize().
2015-05-19score: Fine grained locking for semaphoresSebastian Huber
Update #2273.
2015-05-19score: Delete Thread_queue_Control::timeout_statusSebastian Huber
Use a parameter for _Thread_queue_Enqueue() instead to reduce memory usage.
2015-05-19score: Add Thread_queue_Control::LockSebastian Huber
Move the complete thread queue enqueue procedure into _Thread_queue_Enqueue_critical(). It is possible to use the thread queue lock to protect state of the object embedding the thread queue. This enables per object fine grained locking in the future. Delete _Thread_queue_Enter_critical_section(). Update #2273.
2015-05-19score: _Thread_queue_Extract()Sebastian Huber
Remove thread queue parameter from _Thread_queue_Extract() since the current thread queue is stored in the thread control block.
2015-04-23score: Delete Thread_queue_Control::stateSebastian Huber
Use a parameter for _Thread_queue_Enqueue() instead to reduce memory usage.
2015-03-05score: Add and use PRIORITY_PSEUDO_ISRSebastian Huber
2014-04-22mpci.c: Now compiles againJoel Sherrill
2014-03-21Change all references of rtems.com to rtems.org.Chris Johns
2014-02-21score: Rename _Internal_error_Occurred()Sebastian Huber
Rename _Internal_error_Occurred() into _Terminate().
2013-08-23score: _Thread_queue_Enqueue_with_handler()Sebastian Huber
Add thread parameter to _Thread_queue_Enqueue_with_handler() to avoid access to global _Thread_Executing.