summaryrefslogtreecommitdiffstats
path: root/cpukit/sapi (follow)
Commit message (Collapse)AuthorAgeFilesLines
* score: Statically initialize _ISR_Vector_tableSebastian Huber2014-04-291-28/+0
|
* sapi: Report profiling only if enabled for testsSebastian Huber2014-04-291-0/+2
|
* sapi: Add profiling done messageSebastian Huber2014-04-281-0/+6
|
* sapi: Add arithmetic means to XML profiling reportSebastian Huber2014-04-281-9/+62
|
* rtems: Account for the network semaphore.Chris Johns2014-04-271-1/+8
|
* sapi: Fix condef.h compile error for disabled network configuration.Jennifer Averett2014-04-251-0/+2
| | | | Added define for CONFIGURE_SEMAPHORES_FOR_NFS when networking disabled.
* rtems: Account for file system semaphores.Chris Johns2014-04-251-2/+32
| | | | Add support to account for the semaphores used by the file systems.
* sapi: Fix CONFIGURE_UNLIMITED_OBJECTSSebastian Huber2014-04-171-6/+8
| | | | POSIX keys and key value pairs support now the unlimited option.
* sapi: Error case for CONFIGURE_UNLIMITED_OBJECTSSebastian Huber2014-04-171-0/+6
|
* score: Add clustered/partitioned schedulingSebastian Huber2014-04-152-0/+136
| | | | | | | | | | | | | | | Clustered/partitioned scheduling helps to control the worst-case latencies in the system. The goal is to reduce the amount of shared state in the system and thus prevention of lock contention. Modern multi-processor systems tend to have several layers of data and instruction caches. With clustered/partitioned scheduling it is possible to honour the cache topology of a system and thus avoid expensive cache synchronization traffic. We have clustered scheduling in case the set of processors of a system is partitioned into non-empty pairwise-disjoint subsets. These subsets are called clusters. Clusters with a cardinality of one are partitions. Each cluster is owned by exactly one scheduler instance.
* score: Add scheduler nameSebastian Huber2014-04-152-22/+65
|
* score: Simplify thread control initializationSebastian Huber2014-04-151-86/+74
| | | | | | | | | | | The thread control block contains fields that point to application configuration dependent memory areas, like the scheduler information, the API control blocks, the user extension context table, the RTEMS notepads and the Newlib re-entrancy support. Account for these areas in the configuration and avoid extra workspace allocations for these areas. This helps also to avoid heap fragementation and reduces the per thread memory due to a reduced heap allocation overhead.
* score: Static scheduler configurationSebastian Huber2014-04-154-58/+236
| | | | | | Do not allocate the scheduler control structures from the workspace. This is a preparation step for configuration of clustered/partitioned schedulers on SMP.
* rtems: Rename rtems_smp_get_current_processor()Sebastian Huber2014-04-111-1/+1
| | | | | | | Rename rtems_smp_get_current_processor() in rtems_get_current_processor(). Make rtems_get_current_processor() a function in uni-processor configurations to enable ABI compatibility with SMP configurations.
* rtems: Rename rtems_smp_get_processor_count()Sebastian Huber2014-04-111-1/+1
| | | | | | Rename rtems_smp_get_processor_count() in rtems_get_processor_count(). Make rtems_get_processor_count() a function in uni-processor configurations to enable ABI compatibility with SMP configurations.
* score: Statically initialize IO managerSebastian Huber2014-04-105-106/+16
| | | | | | | | | | | | This simplifies the RTEMS initialization and helps to avoid a memory overhead. The workspace demands of the IO manager were not included in the <rtems/confdefs.h> workspace size estimate. This is also fixed as a side-effect. Update documentation and move "Specifying Application Defined Device Driver Table" to the section end. This sub-section is not that important for the user. Mentioning this at the beginning may lead to confusion.
* score: Fix POSIX threads size estimateSebastian Huber2014-04-071-12/+12
| | | | | The POSIX threads are separate objects. Account for the object administration overhead.
* score: Fix workspace size estimateSebastian Huber2014-04-071-7/+11
|
* Disable per task variables when SMP is enabledJoel Sherrill2014-04-041-6/+16
| | | | | | Per task variables are inherently unsafe in SMP systems. This patch disables them from the build and adds warnings in the appropriate documentation and configuration sections.
* score: Add and use Scheduler_simple_ControlSebastian Huber2014-04-041-1/+1
|
* score: Add and use Scheduler_EDF_ControlSebastian Huber2014-04-041-3/+6
|
* sapi: Add priority affinity smp scheduler.Jennifer Averett2014-04-031-0/+22
|
* score: Move priority bit map to scheduler instanceSebastian Huber2014-04-031-3/+4
| | | | | | Delete global variables _Priority_Major_bit_map and _Priority_Bit_map. This makes it possible to use multiple priority scheduler instances for example with clustered/partitioned scheduling on SMP.
* score: PR788: Add INTERNAL_ERROR_RESOURCE_IN_USESebastian Huber2014-04-031-1/+2
| | | | | | | | | | | | | | | Issue a fatal error in case a thread is deleted which still owns resources (e.g. a binary semaphore with priority inheritance or ceiling protocol). The resource count must be checked quite late since RTEMS task variable destructors, POSIX key destructors, POSIX cleanup handler, the Newlib thread termination extension or other thread termination extensions may release resources. In this context it would be quite difficult to return an error status to the caller. An alternative would be to place threads with a non-zero resource count not on the zombie chain. Thus we have a resource leak instead of a fatal error. The terminator thread can see this error if we return an RTEMS_RESOURCE_IN_USE status for the rtems_task_delete() for example.
* score: PR2152: Use allocator mutex for objectsSebastian Huber2014-03-312-5/+9
| | | | | Use allocator mutex for objects allocate/free. This prevents that the thread dispatch latency depends on the workspace/heap fragmentation.
* privateenv: Use POSIX keys instead of task variables.Christian Mauderer2014-03-271-11/+18
|
* score: PR2174: Add workaroundSebastian Huber2014-03-251-0/+6
| | | | | Add _Scheduler_FIXME_thread_priority_queues_are_broken to prevent thread priority queues in case an EDF scheduler is used.
* sapi: Add profiling report for testsSebastian Huber2014-03-251-0/+11
|
* Change all references of rtems.com to rtems.org.Chris Johns2014-03-2155-55/+55
|
* posix: Use interal mutex for once implementationSebastian Huber2014-03-193-14/+5
| | | | | | Enable pthread_once() for all configurations. The pthread_once() function is one means to initialize POSIX keys. Another use case is the C++ support.
* sapi: Add <rtems/test.h>Sebastian Huber2014-03-175-0/+205
| | | | | | Provide support functions to print the begin/end of test message. Provide a test fatal extension to print out profiling reports in the future.
* score: Add SMP lock profiling supportSebastian Huber2014-03-142-1/+63
|
* score: Add per-CPU profilingSebastian Huber2014-03-141-0/+61
| | | | | | | Add per-CPU profiling stats API. Implement the thread dispatch disable level profiling. The interrupt profiling must be implemented in CPU port specific parts (mostly assembler code). Add a support function _Profiling_Outer_most_interrupt_entry_and_exit() for this purpose.
* sapi: Add SMP lock profiling app. level dataSebastian Huber2014-03-142-1/+176
|
* sapi: Add per-CPU profiling application level dataSebastian Huber2014-03-142-0/+190
|
* sapi: Add profiling application level supportSebastian Huber2014-03-145-0/+277
|
* sapi: TyposSebastian Huber2014-03-131-3/+3
|
* score: Add local context to SMP lock APISebastian Huber2014-03-111-28/+28
| | | | | | | | | | | Add a local context structure to the SMP lock API for acquire and release pairs. This context can be used to store the ISR level and profiling information. It may be later used to enable more sophisticated lock algorithms, e.g. MCS locks. There is only one lock that cannot be used with a local context. This is the per-CPU lock since here we would have to transfer the local context through a context switch which is very complicated.
* sapi: Use one SMP lock for all chainsSebastian Huber2014-03-112-124/+78
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This partially reverts commit 1215fd4d9426a59d568560e9a485628560363133. In order to support profiling of SMP locks and provide a future compatible SMP locks API it is necessary to add an SMP lock destroy function. Since the commit above adds an SMP lock to each chain control we would have to add a rtems_chain_destroy() function as well. This complicates the chain usage dramatically. Thus revert the patch above. A global SMP lock for all chains is used to implement the protected chain operations. Advantages: * The SAPI chain API is now identical on SMP and non-SMP configurations. * The size of the chain control is reduced and is then equal to the Score chains. * The protected chain operations work correctly on SMP. Disadvantage: * Applications using many different chains and the protected operations may notice lock contention. The chain control size drop is a huge benefit (SAPI chain controls are 66% larger than the Score chain controls). The only disadvantage is not really a problem since these applications can use specific interrupt locks and unprotected chain operations to avoid this issue.
* POSIX keys now enabled in all configurations.Joel Sherrill2014-03-074-63/+89
| | | | | | | Formerly POSIX keys were only enabled when POSIX threads were enabled. Because they are a truly safe alternative to per-task variables in an SMP system, they are being enabled in all configurations.
* sapi: Moved smp initialization and added cpuset initilization.Jennifer Averett2014-03-071-2/+5
| | | | | | | SMP must be initialized in order to know the current set of cores available. Without this, you cannot initialize the default cpu_set_t associated with Classic API tasks and POSIX threads.
* score: SMP initialization and shutdown changesSebastian Huber2014-03-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Rename _SMP_Request_other_cores_to_perform_first_context_switch() into _SMP_Request_start_multitasking() since this requests now a multitasking start on all configured and available processors. The name corresponds _Thread_Start_multitasking() and _SMP_Start_multitasking_on_secondary_processor() actions issued in response to this request. Move in source file to right place. Rename PER_CPU_STATE_READY_TO_BEGIN_MULTITASKING into PER_CPU_STATE_READY_TO_START_MULTITASKING. Rename PER_CPU_STATE_BEGIN_MULTITASKING into PER_CPU_STATE_REQUEST_START_MULTITASKING. Rename _SMP_Request_other_cores_to_shutdown() into _SMP_Request_shutdown(). Add a per-CPU state lock to protect all changes. This was necessary to offer a controlled shutdown of the system (atomic read/writes alone are not sufficient for this kind of synchronization). Add documentation for Per_CPU_State. Delete debug output. New tests smptests/smpfatal01 and smptests/smpfatal02.
* score: Rename _Internal_error_Occurred()Sebastian Huber2014-02-215-6/+6
| | | | Rename _Internal_error_Occurred() into _Terminate().
* score: Add and use <rtems/score/smpimpl.h>Sebastian Huber2014-02-191-10/+2
| | | | | Collect SMP implementation specific parts in the <rtems/score/smpimpl.h> header file.
* score: Add RTEMS_FATAL_SOURCE_SMPSebastian Huber2014-02-191-1/+2
| | | | | | Use rtems_fatal() instead of _CPU_Fatal_halt() to shutdown processors in SMP configurations since this allows intervention of BSP or application specific fatal extensions.
* score: Add RTEMS_FATAL_SOURCE_BSPSebastian Huber2014-02-191-2/+1
| | | | | | Merge RTEMS_FATAL_SOURCE_BSP_GENERIC and RTEMS_FATAL_SOURCE_BSP_SPECIFIC into new fatal source RTEMS_FATAL_SOURCE_BSP. This makes it easier to figure out the code position given a fatal source and code.
* score: Delete INTERNAL_ERROR_SHUTDOWN_WHEN_NOT_UPSebastian Huber2014-02-192-17/+2
| | | | | This error case is no longer required since rtems_shutdown_executive() can be called anytime, anywhere
* score: Move _SMP_Request_other_cores_to_shutdown()Sebastian Huber2014-02-191-8/+0
| | | | | | Move _SMP_Request_other_cores_to_shutdown() invocation from rtems_shutdown_executive() to _Internal_error_Occurred() to allow a proper shutdown on SMP configurations even in the error case.
* score: Delete _Thread_BSP_contextSebastian Huber2014-02-192-38/+22
| | | | | | | | | | | | Do not return to BSP context in the exit() shutdown path. This makes it possible to re-use the initialization stack. It can be used for the interrupt stack for example. On targets with a small RAM this is a considerable benefit. This change eliminates also some special cases and simplifies the code. Delete _Thread_Set_global_exit_status(), _Thread_Get_global_exit_status() and _Thread_Stop_multitasking().
* score: Add SYSTEM_STATE_TERMINATEDSebastian Huber2014-02-191-1/+0
| | | | | | Merge systems states SYSTEM_STATE_SHUTDOWN and SYSTEM_STATE_FAILED into new system state SYSTEM_STATE_TERMINATED. This reflects that all system termination paths end up in _Internal_error_Occurred().