summaryrefslogtreecommitdiffstats
path: root/cpukit/include/rtems/score/thread.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* score: Fix implicit integer conversion warningsSebastian Huber2023-11-021-6/+6
|
* cpukit/score: Convert Thread_Life_state to uint32_tKinsey Moore2023-10-301-40/+40
| | | | | | Thread_Life_state is used as a bitfield, but is declared as an enum. This converts the enum typedef to a uint32_t typedef and associated bit definitions.
* Update company nameSebastian Huber2023-05-201-1/+1
| | | | | The embedded brains GmbH & Co. KG is the legal successor of embedded brains GmbH.
* config: Add CONFIGURE_IDLE_TASK_STORAGE_SIZESebastian Huber2022-10-141-7/+0
| | | | | | | | | | | | By default, allocate the IDLE task storage areas from the RTEMS Workspace. This avoids having to estimate the thread-local storage size in the default configuration. Add the application configuration option CONFIGURE_IDLE_TASK_STORAGE_SIZE to request a static allocation of the task storage area for IDLE tasks. Update #3835. Update #4524.
* score: Move Thread_Control::Registers memberSebastian Huber2022-10-141-2/+9
| | | | | | | | | Place this member placed directly after the end of the common block so that the structure offsets are as small as possible. This helps on instruction set architectures with a very limited range for intermediate values. For example, see the __aeabi_read_tp() implementation for ARM Thumb-1. Update #3835.
* score: Allow linker garbage collectionSebastian Huber2022-07-281-2/+2
| | | | | | | Place the object control blocks in dedicated sections to allow a linker garbage collection. Update #4678.
* score: Fix objects local table initializationSebastian Huber2022-07-271-2/+1
| | | | | | | | The objects local table must be statically zero-initialized so that _Objects_Get() and _Objects_Get_no_protection() return NULL if no object is associated with the identifier. Update #4678.
* Support _REENT_THREAD_LOCAL Newlib configurationMatt Joyce2022-07-211-0/+4
| | | | | | | | | In case the Newlib _REENT_THREAD_LOCAL configuration option is enabled, the struct _reent is not defined (there is only a forward declaration in <sys/reent.h>). Instead, the usual members of struct _reent are available as dedicatd thread-local storage objects. Update #4560.
* score: Place object controls into .noinit sectionsSebastian Huber2022-07-151-3/+6
| | | | | | | | | | | | Place the statically allocated object control blocks, local tables, and thread queue heads into the dedicated .noinit intput sections. The output section is not zero initialized. Placing these elements into the .noinit section reduces the system initialization time by decreasing the .bss section size. It may improve the cache efficiency since the mostly read local tables are placed in a contiguous memory area. Update #4678.
* cpukit/include/rtems/score/[s-z]*.h: Change license to BSD-2Joel Sherrill2022-02-281-3/+22
| | | | Updates #3053.
* Avoid ISR_LOCK_MEMBER() since it confuses DoxygenSebastian Huber2021-12-091-1/+3
| | | | | If RTEMS_SMP is not defined, then Doxygen adds the comments intended for conditional the lock member to the next member.
* score: Simplify thread wait state handlingSebastian Huber2021-11-231-1/+1
| | | | | | | | | | Remove the THREAD_WAIT_STATE_READY_AGAIN and simply use the initial value to indicate that a thread does not wait on something. Rename THREAD_WAIT_FLAGS_INITIAL to THREAD_WAIT_STATE_READY. This change is necessary so that _Thread_Continue() can be called for threads which never waited on something (for example dormant threads). Update #4546.
* score: Rework ask for help requestsSebastian Huber2021-11-231-3/+17
| | | | | | | | Process ask for help requests on the current processor. This avoids using inter-processor interrupts to make the system behaviour a bit more predictable. Update #4531.
* score: Introduce CPU budget operationsSebastian Huber2021-11-151-45/+49
| | | | | | | | | | | | | | This patch set replaces the CPU budget algorithm enumeration with a set of CPU budget operations which implement a particular CPU budget algorithm. This helps to hide the CPU budget algorithm implementation details from the general thread handling. The CPU budget callouts are turned into CPU budget operations. This slightly reduces the size of the thread control block. All schedulers used the default scheduler tick implementation. The tick scheduler operation is removed and the CPU budget operations are directly used in _Watchdog_Tick() if the executing thread uses a CPU budget algorithm. This is performance improvement for all threads which do not use a CPU budget algorithm (default behaviour).
* rtems: Fix rate monotonic statisticsSebastian Huber2021-10-251-3/+12
| | | | | | | | | | | | | | | The rate monotonic period statistics were affected by rtems_cpu_usage_reset(). The logic to detect and work around a CPU usage reset was broken. The Thread_Contol::cpu_time_used is changed to contain the processor time used throughout the entire lifetime of the thread. The new member Thread_Contol::cpu_time_used_at_last_reset is added to contain the processor time used at the time of the last reset through rtems_cpu_usage_reset(). This decouples the resets of the CPU usage and the rate monotonic period statistics. Update #4528.
* score: Change thread action lockingSebastian Huber2021-02-201-8/+11
| | | | | | | | Require that the corresponding lock is acquired before the action handler returns. This helps to avoid recursion in the signal processing. Update #4244.
* score: Clarify thread life state documentationSebastian Huber2021-02-011-2/+2
|
* score: Document Thread_Life_stateSebastian Huber2021-02-011-3/+40
|
* score: Canonicalize Doxygen @file commentsSebastian Huber2020-12-021-4/+3
| | | | | | Use common phrases for the file brief descriptions. Update #3706.
* score: Canonicalize Doxygen groupsSebastian Huber2020-12-021-1/+1
| | | | | | | Adjust group identifier and names to be in line with a common pattern. Use common phrases for the group brief descriptions. Update #3706.
* CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZESebastian Huber2020-09-171-0/+10
| | | | | | | | | | | Add this application configuration option. This configuration option can be used to reserve space for the dynamic linking of modules with thread-local storage objects. Add RTEMS_TASK_STORAGE_ALIGNMENT to define the minium alignment of a thread-local storage size. Update #4074.
* score: Add stack free handler to TCBSebastian Huber2020-08-311-3/+2
| | | | | | | This avoids a dependency to the stack free function in the thread destruction. Update #3959.
* score: Remove deprecated ThreadSebastian Huber2020-07-141-6/+0
| | | | | | This type was deprecated in RTEMS 5.1. Close #3991.
* libio: Add POSIX user environment pointer to TCBSebastian Huber2020-02-251-0/+7
| | | | | | | | | | The IO library used a POSIX key to store an optional POSIX user environment pointer. This pulled in the POSIX keys support in every application configuration. Add a user environment pointer to the thread control block (TCB) instead. Applications which do not need the POSIX user environment will just get an overhead of one pointer per thread. Close #3882.
* score: Simplify _Thread_Initialize()Sebastian Huber2020-02-121-1/+9
| | | | | | | | Allocate new thread queue heads during objects information extend. This removes an error case and the last dependency on the workspace in _Thread_Initialize(). Update #3835.
* score: Split up objects freeSebastian Huber2020-02-121-0/+3
| | | | | | | | Split up the different objects free methods into separate functions. This helps to avoid a dependency on the workspace in case no objects or a static set of objects is configured. Update #3835.
* score: Split up objects allocationSebastian Huber2020-02-121-0/+3
| | | | | | | | | | | Split up the different objects allocation methods into separate functions. This helps to avoid a dependency on the workspace in case no objects or a static set of objects is configured. Change license to BSD-2-Clause according to file histories. Update #3053. Update #3835.
* score: Statically allocate idle/MPCI stacksSebastian Huber2020-02-121-0/+7
| | | | | | | 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.
* score: Move thread stack allocationSebastian Huber2020-02-121-2/+0
| | | | | | Move thread stack allocation to caller side of _Thread_Initialize(). Update #3835.
* score: Simplify thread stack freeSebastian Huber2020-02-121-4/+5
| | | | Update #3835.
* score: Simplify thread stack allocationSebastian Huber2020-02-121-2/+0
| | | | | | Remove superfluous Thread_Control::Start::stack member. Update #3835.
* config: Statically allocate MP thread proxiesSebastian Huber2019-12-131-0/+17
| | | | Update #3735.
* Add and use THREAD_DEFAULT_MAXIMUM_NAME_SIZESebastian Huber2019-07-301-0/+9
|
* doxygen: score: adjust doc in thread.h to doxygen guidelinesAndreas Dachsberger2019-05-131-16/+25
| | | | Update #3706.
* doxygen: Rename Score* groups in RTEMSScore*Sebastian Huber2019-04-041-2/+2
| | | | Update #3706
* Remove explicit file names from @fileSebastian Huber2019-02-281-1/+1
| | | | | | This makes the @file documentation independent of the actual file name. Update #3707.
* score: Static Objects_Information initializationSebastian Huber2018-12-141-5/+113
| | | | | | | | | | | 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.
* score: Move internal structures to objectdata.hSebastian Huber2018-11-121-1/+1
| | | | Update #3598.
* posix: Provide threads by defaultSebastian Huber2018-10-291-8/+2
| | | | Update #2514.
* score: Remove CPU_PROVIDES_IDLE_THREAD_BODYSebastian Huber2018-10-051-11/+0
| | | | | | | Remove the CPU_PROVIDES_IDLE_THREAD_BODY option to avoid unnecessary conditional compilation. Close #3539.
* score: Add thread pin/unpin supportSebastian Huber2018-09-101-6/+37
| | | | | | | | | Add support to temporarily pin a thread to its current processor. This may be used to access per-processor data structures in critical sections with enabled thread dispatching, e.g. a pinned thread is allowed to block. Update #3508.
* Remove make preinstallChris Johns2018-01-251-0/+935
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.