summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/mpci.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* score: Add Thread_ConfigurationSebastian Huber2020-02-121-20/+17
| | | | | | | | | 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.
* config: Add _MPCI_ConfigurationSebastian Huber2019-12-131-23/+3
| | | | | | | Replace the user MPCI configuration table with a system provided _MPCI_Configuration. Update #3735.
* doxygen: Rename Score* groups in RTEMSScore*Sebastian Huber2019-04-041-1/+1
| | | | Update #3706
* score: Static Objects_Information initializationSebastian Huber2018-12-141-1/+1
| | | | | | | | | | | 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.
* mpci: Fix _MPCI_Enqueue_callout()Sebastian Huber2018-03-221-1/+2
| | | | | Update #3117. Update #3182.
* mpci: Update due to thread queue API changesSebastian Huber2018-03-221-6/+7
| | | | | Update #3117. Update #3182.
* score: Introduce _Internal_error()Sebastian Huber2016-12-121-7/+4
|
* score: Remove fatal is internal indicatorSebastian Huber2016-12-091-16/+3
| | | | | | | | | 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.
* score: Optimize _Thread_queue_Enqueue()Sebastian Huber2016-11-241-1/+4
| | | | | | | | | 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.
* score: Rename _Thread_queue_Enqueue_critical()Sebastian Huber2016-11-231-1/+1
| | | | | Delete unused _Thread_queue_Enqueue() and rename _Thread_queue_Enqueue_critical() to _Thread_queue_Enqueue().
* score: Add thread queue enqueue calloutSebastian Huber2016-11-231-27/+39
| | | | | | | 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.
* mpci: Use the first scheduler for MPCISebastian Huber2016-11-091-1/+1
| | | | Avoid use of processor index 0 which may have no scheduler assigned.
* score: Introduce _Thread_Get_priority()Sebastian Huber2016-09-081-1/+1
| | | | Avoid direct access to thread internal data fields.
* score: Introduce Thread_queue_Lock_contextSebastian Huber2016-09-081-2/+2
| | | | | | 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.
* cpukit: Add and use Watchdog_Discipline.Gedare Bloom2016-07-251-1/+2
| | | | | | | | | 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
* score: Add semaphore variantsSebastian Huber2016-05-301-2/+9
|
* score: _CORE_mutex_Check_dispatch_for_seize()Sebastian Huber2016-05-301-1/+2
| | | | | | | | | | | 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().
* score: Add _Thread_queue_Context_set_MP_callout()Sebastian Huber2016-05-301-1/+1
| | | | | | 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.
* score: Add Status_Control for all APIsSebastian Huber2016-05-261-8/+6
| | | | | | | | | | | 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.
* Fix semaphore post overflow statusSebastian Huber2016-05-261-1/+1
| | | | Close #2720.
* score: Move thread queue MP callout to contextSebastian Huber2016-05-251-9/+10
| | | | | | | | 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.
* score: Get rid of mp_id parameterSebastian Huber2016-05-251-1/+1
| | | | | Get rid of the mp_id parameter used for some thread queue methods. Use THREAD_QUEUE_QUEUE_TO_OBJECT() instead.
* score: _CORE_semaphore_Seize()Sebastian Huber2016-05-201-1/+0
| | | | Delete unused parameter.
* Replace *_Get_interrupt_disable() with *_Get()Sebastian Huber2016-05-201-1/+1
| | | | | Uniformly use *_Get() to get an object by identifier with a lock context.
* score: Avoid Giant lock for _Thread_Start()Sebastian Huber2016-05-201-2/+4
| | | | Update #2555.
* mpci: Avoid Giant lock in _MPCI_Process_response()Sebastian Huber2016-05-041-17/+15
| | | | | Update #2555. Update #2703.
* score: Delete Thread_Wait_information::idSebastian Huber2016-04-061-1/+1
| | | | | | | | | | | 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.
* score: Allow MPCI packet receive function to blockSebastian Huber2016-03-291-0/+2
|
* score: Use constant for maximum count of CORE semaSebastian Huber2016-03-291-1/+0
|
* score: Remove Thread_queue_Queue::operations fieldSebastian Huber2016-03-291-10/+5
| | | | | | | | | 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.
* mpci: Avoid Giant lockSebastian Huber2016-03-181-8/+11
| | | | Update #2555.
* score: Avoid SCORE_EXTERNSebastian Huber2016-02-171-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Use linker set for MPCI initializationSebastian Huber2016-02-031-5/+72
| | | | Update #2408.
* mpci: Fix warningSebastian Huber2016-01-261-2/+0
| | | | Assignment is superfluous due to later call to _Thread_queue_Enqueue().
* mpci: Update due to API changesSebastian Huber2016-01-261-13/+12
| | | | | | | Update due to API changes introduced by ccd54344d904b657123e4e4ba795a32212382be2. Update #2514.
* score: Delete _CORE_semaphore_Seize()Sebastian Huber2015-05-191-3/+4
| | | | Rename _CORE_semaphore_Seize_isr_disable() to _CORE_semaphore_Seize().
* score: Fine grained locking for semaphoresSebastian Huber2015-05-191-3/+4
| | | | Update #2273.
* score: Delete Thread_queue_Control::timeout_statusSebastian Huber2015-05-191-4/+5
| | | | | Use a parameter for _Thread_queue_Enqueue() instead to reduce memory usage.
* score: Add Thread_queue_Control::LockSebastian Huber2015-05-191-2/+0
| | | | | | | | | | | 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.
* score: _Thread_queue_Extract()Sebastian Huber2015-05-191-1/+1
| | | | | Remove thread queue parameter from _Thread_queue_Extract() since the current thread queue is stored in the thread control block.
* score: Delete Thread_queue_Control::stateSebastian Huber2015-04-231-4/+1
| | | | | Use a parameter for _Thread_queue_Enqueue() instead to reduce memory usage.
* score: Add and use PRIORITY_PSEUDO_ISRSebastian Huber2015-03-051-1/+1
|
* mpci.c: Now compiles againJoel Sherrill2014-04-221-1/+3
|
* Change all references of rtems.com to rtems.org.Chris Johns2014-03-211-1/+1
|
* score: Rename _Internal_error_Occurred()Sebastian Huber2014-02-211-4/+4
| | | | Rename _Internal_error_Occurred() into _Terminate().
* score: _Thread_queue_Enqueue_with_handler()Sebastian Huber2013-08-231-8/+14
| | | | | Add thread parameter to _Thread_queue_Enqueue_with_handler() to avoid access to global _Thread_Executing.
* score: Create mpci implementation headerSebastian Huber2013-07-261-12/+4
| | | | | Move implementation specific parts of mpci.h into new header file mpciimpl.h. The mpci.h contains now only the application visible API.
* score: Create threadq implementation headerSebastian Huber2013-07-261-2/+2
| | | | | | | | Move implementation specific parts of tqdata.h, threadq.h and threadq.inl into new header file threadqimpl.h. The threadq.h contains now only the application visible API. Delete tqdata.h.
* score: Create states implementation headerSebastian Huber2013-07-261-1/+0
| | | | | | Move implementation specific parts of states.h and states.inl into new header file statesimpl.h. The states.h contains now only the application visible API.
* score: Create thread implementation headerSebastian Huber2013-07-261-1/+1
| | | | | | | | Move implementation specific parts of thread.h and thread.inl into new header file threadimpl.h. The thread.h contains now only the application visible API. Remove superfluous header file includes from various files.