summaryrefslogtreecommitdiffstats
path: root/cpukit/rtems/include/rtems (unfollow)
Commit message (Collapse)AuthorFilesLines
2020-11-26rtems: Remove unused barriermp.hSebastian Huber1-127/+0
2019-02-28Remove explicit file names from @fileSebastian Huber1-1/+1
This makes the @file documentation independent of the actual file name. Update #3707.
2018-01-25Remove make preinstallChris Johns47-9419/+0
A speciality of the RTEMS build system was the make preinstall step. It copied header files from arbitrary locations into the build tree. The header files were included via the -Bsome/build/tree/path GCC command line option. This has at least seven problems: * The make preinstall step itself needs time and disk space. * Errors in header files show up in the build tree copy. This makes it hard for editors to open the right file to fix the error. * There is no clear relationship between source and build tree header files. This makes an audit of the build process difficult. * The visibility of all header files in the build tree makes it difficult to enforce API barriers. For example it is discouraged to use BSP-specifics in the cpukit. * An introduction of a new build system is difficult. * Include paths specified by the -B option are system headers. This may suppress warnings. * The parallel build had sporadic failures on some hosts. This patch removes the make preinstall step. All installed header files are moved to dedicated include directories in the source tree. Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc, etc. Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g. erc32, imx, qoriq, etc. The new cpukit include directories are: * cpukit/include * cpukit/score/cpu/@RTEMS_CPU@/include * cpukit/libnetworking The new BSP include directories are: * bsps/include * bsps/@RTEMS_CPU@/include * bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include There are build tree include directories for generated files. The include directory order favours the most general header file, e.g. it is not possible to override general header files via the include path order. The "bootstrap -p" option was removed. The new "bootstrap -H" option should be used to regenerate the "headers.am" files. Update #3254.
2017-11-16rtems: rtems_semaphore_flush() with prio inheritSebastian Huber1-2/+6
The _Semaphore_Get_operations() must return the proper operations for priority inheritance semaphores. Add a test case for rtems_semaphore_flush() with priority inheritance. Close #3235.
2017-10-25rtems: rtems_clock_get_ticks_per_second()Sebastian Huber1-0/+3
Add macro implementation for rtems_clock_get_ticks_per_second() for C/C++ to avoid the function call overhead. A rtems_clock_get_ticks_per_second() is still provided for language bindings (e.g. Ada).
2017-10-24rtems: Simplify RTEMS_MILLISECONDS_TO_MICROSECONDSSebastian Huber1-1/+1
Remove the cast so that it can be used in C pre-processor directives. Update #3117. Update #3182.
2017-07-12Add interrupt server suspend/resumeSebastian Huber1-0/+6
This mechanism can be used to safely move the interrupt server from one scheduler instance to another for example. Update #3071.
2017-07-11rtems: Add rtems_scheduler_ident_by_processor_setSebastian Huber1-0/+25
Update #3070.
2017-07-11rtems: Add rtems_scheduler_ident_by_processor()Sebastian Huber1-0/+17
Update #3069.
2017-02-01rtems: Fix RTEMS_MAXIMUM_PRIORITY defineSebastian Huber1-1/+1
Cast the internal PRIORITY_MAXIMUM to the right type for a Classic API task priority to avoid integer conversion warnings.
2017-01-26Remove rtems_rate_monotonic_postponed_job_count()Kuan-Hsun Chen1-20/+4
Add a variable named "count" in rtems_rate_monotonic_period_status structure. Revise rtems_rate_monotonic_get_status() for the postponed job count. sptests/sp69: Add in the verification of the postponed job count for rtems_rate_monotonic_get_status(). Update #2795.
2017-01-24rtems: Fix _Rate_monotonic_Renew_deadline()Sebastian Huber1-12/+0
Make _Rate_monotonic_Renew_deadline() static and use proper locking in SMP configurations. Update #2795.
2017-01-13classic: adjust names of RM postponed job functionsGedare Bloom1-2/+2
closes #2795
2017-01-13Enhancement of the RMS manager for the overrun handling.Kuan-Hsun Chen2-0/+46
Three additional functions: rtems_rate_monotonic_postponed_job_count, _Rate_monotonic_Renew_deadline, and _Rate_monotonic_Release_postponed_job. Four refined functions: _Rate_monotonic_Activate, _Rate_monotonic_Block_while_expired, rtems_rate_monotonic_period, _Rate_monotonic_Timeout. Rate_monotonic_Control contains one counter for counting the postponed jobs and one for recording the recent deadline. Update #2795.
2017-01-11Remove obsolete __RTEMS_HAVE_SYS_CPUSET_H__Joel Sherrill1-4/+0
2016-11-23score: Add thread queue enqueue calloutSebastian Huber1-0/+3
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-18rtems: Conditionally define rtems_interrupt_frameSebastian Huber1-1/+6
Update #2808.
2016-11-10rtems: Add scheduler processor add/removeSebastian Huber1-4/+53
Update #2797.
2016-11-09score: Simplify _Scheduler_Get_by_id()Sebastian Huber1-2/+0
Avoid dead code in non-SMP configurations. Return scheduler identifier independent of the current processor count of the scheduler via rtems_scheduler_ident(), since this value may change during run-time. Check the processor count in _Scheduler_Set() under scheduler lock protection. Update #2797.
2016-11-02rtems: Add rtems_task_iterate()Sebastian Huber1-0/+32
Update #2423.
2016-09-21rtems: Add rtems_task_get_priority()Sebastian Huber1-0/+29
Update #2556. Update #2784.
2016-09-21score: Rework thread priority managementSebastian Huber1-0/+6
Add priority nodes which contribute to the overall thread priority. The actual priority of a thread is now an aggregation of priority nodes. The thread priority aggregation for the home scheduler instance of a thread consists of at least one priority node, which is normally the real priority of the thread. The locking protocols (e.g. priority ceiling and priority inheritance), rate-monotonic period objects and the POSIX sporadic server add, change and remove priority nodes. A thread changes its priority now immediately, e.g. priority changes are not deferred until the thread releases its last resource. Replace the _Thread_Change_priority() function with * _Thread_Priority_perform_actions(), * _Thread_Priority_add(), * _Thread_Priority_remove(), * _Thread_Priority_change(), and * _Thread_Priority_update(). Update #2412. Update #2556.
2016-09-08score: Introduce Thread_queue_Lock_contextSebastian Huber3-4/+7
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-08-04score: Fix a release/cancel job race conditionSebastian Huber2-6/+11
Split up the potential thread priority change in the scheduler release/cancel job operation. Protect the rate monotonic period state with a dedicated SMP lock. This avoids a race condition during _Rate_monotonic_Timeout() while _Rate_monotonic_Cancel() is called on another processor.
2016-07-27score: Turn thread lock into thread wait lockSebastian Huber1-2/+2
The _Thread_Lock_acquire() function had a potentially infinite run-time due to the lack of fairness at atomic operations level. Update #2412. Update #2556. Update #2765.
2016-07-04rtems+bsps/cache: Define cache manager operations for code synchronization ↵Pavel Pisa1-0/+29
and maximal alignment. There is need for unambiguous named and defined cache function which should be called when code is updated, loaded or is self-modifying. There should be function to obtain maximal cache line length as well. This function can and should be used for allocations which can be used for data and or code and ensures that there are no partial cache lines overlaps on start and end of allocated region.
2016-07-01rtems: Fix rtems_task_set_scheduler() APISebastian Huber1-7/+16
Task priorities are only valid within a scheduler instance. The rtems_task_set_scheduler() directive moves a task from one scheduler instance to another using the current priority of the thread. However, the current task priority of the source scheduler instance is undefined in the target scheduler instance. Add a third parameter to specify the priority. Close #2749.
2016-06-24score: Change Priority_Control to 64-bitSebastian Huber1-1/+1
A 32-bit Priority_Control limits the uptime to 49 days with a 1ms clock tick in case the EDF scheduler is used. Increase it to 64-bit to enable proper operation of the EDF scheduler, Close 2173.
2016-06-22score: Introduce map priority scheduler operationSebastian Huber1-3/+4
Introduce map/unmap priority scheduler operations to map thread priority values from/to the user domain to/from the scheduler domain. Use the map priority operation to validate the thread priority. The EDF schedulers use this new operation to distinguish between normal priorities and priorities obtain through a job release. Update #2173. Update #2556.
2016-06-22rtems: Rework RTEMS API to SuperCore prioritySebastian Huber1-22/+27
Use same structure as POSIX API for thread priority conversion to/from SuperCore.
2016-06-22Avoid <rtems/print.h> in <rtems/rtems/ratemon.h>Sebastian Huber1-2/+3
This gets rid of the pull in of <stdarg.h> via <rtems.h> via <rtems/rtems/ratemon.h> via <rtems/print.h>.
2016-05-30rtems: Fix semaphore field nameSebastian Huber1-1/+1
2016-05-30rtems: Move MrsP semaphore operationsSebastian Huber1-1/+1
Move MrsP semaphore operations to a less prominent location. Fix field name.
2016-05-30score: Rework CORE inherit priority mutexSebastian Huber2-8/+1
Provide dedicated seize and surrender methods for inherit priority mutexes. This eliminates CORE_mutex_Attributes.
2016-05-30score: Rework CORE priority ceiling mutexSebastian Huber1-0/+1
Rework seize and surrender methods to use CORE_ceiling_mutex_Control. This eliminates CORE_mutex_Disciplines.
2016-05-30score: Add CORE mutex variantsSebastian Huber2-1/+7
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.
2016-05-30score: Simplify CORE mutexSebastian Huber1-0/+1
Remove superfluous support for simple binary semaphores. With this we can get rid of the CORE_MUTEX_NESTING_BLOCKS variant.
2016-05-30score: Add semaphore variantsSebastian Huber2-0/+43
2016-05-30rtems: Simplify rtems_semaphore_delete()Sebastian Huber1-0/+5
2016-05-30score: Add _Thread_queue_Context_set_MP_callout()Sebastian Huber3-33/+9
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 Huber5-105/+16
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-25score: Move thread queue MP callout to contextSebastian Huber3-11/+38
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-25cpukit, testsuite: Add rtems_printf and rtems_printer support.Chris Johns1-7/+6
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.
2016-05-20Replace *_Get_interrupt_disable() with *_Get()Sebastian Huber2-3/+2
Uniformly use *_Get() to get an object by identifier with a lock context.
2016-05-20score: Rename _Objects_Get_local()Sebastian Huber7-7/+7
Rename _Objects_Get_local() into _Objects_Get(). Confusions with the previous _Objects_Get() function are avoided since the Objects_Locations parameter is gone.
2016-05-20rtems: _Semaphore_Get_interrupt_disable()Sebastian Huber2-26/+19
Use _Objects_Get_local() for _Semaphore_Get_interrupt_disable() to get rid of the location parameter. Move remote object handling to semaphore MPCI support.
2016-05-20rtems: _Message_queue_Get_interrupt_disable()Sebastian Huber2-17/+60
Use _Objects_Get_local() for _Message_queue_Get_interrupt_disable() to get rid of the location parameter. Move remote object handling to message queue MPCI support.
2016-05-20rtems: Remove location from _Partition_Get()Sebastian Huber2-14/+21
Use _Objects_Get_local() for _Partition_Get() to get rid of the location parameter. Move remote object handling to partition MPCI support.
2016-05-20score: Add per scheduler instance maximum prioritySebastian Huber1-0/+1
The priority values are only valid within a scheduler instance. Thus, the maximum priority value must be defined per scheduler instance. The first scheduler instance defines PRIORITY_MAXIMUM. This implies that RTEMS_MAXIMUM_PRIORITY and POSIX_SCHEDULER_MAXIMUM_PRIORITY are only valid for threads of the first scheduler instance. Further API/implementation changes are necessary to fix this. Update #2556.
2016-05-20score: Rename _ISR_Flash() into _ISR_Local_flash()Sebastian Huber1-1/+1
This is a preparation to remove the Giant lock. Update #2555.