| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
The problem is that empty structures have a different size in C and C++.
|
|
|
|
|
| |
Drop the <rtems/score/percpu.h> include since this file exposes a lot of
implementation details.
|
|
|
|
|
| |
Drop the <rtems/score/percpu.h> include since this file exposes a lot of
implementation details.
|
| |
|
|
|
|
|
|
| |
Avoid Thread_Control typedef in <rtems/score/percpu.h>. This helps to
get rid of the <rtems/score/percpu.h> include in <rtems/score/thread.h>
which exposes a lot of implementation details.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This was obsolete and broken based upon recent time keeping changes.
Thie build option was previously enabled by adding
USE_TICKS_FOR_STATISTICS=1 to the configure command line.
This propagated into the code as preprocessor conditionals
using the __RTEMS_USE_TICKS_FOR_STATISTICS__ conditional.
|
|
|
|
|
|
| |
Add an assert to ensure that the watchdog is the proper state for a
_Watchdog_Initialize(). This helps to detect invalid initializations
which may lead to a corrupt watchdog chain.
|
| |
|
|
|
|
|
|
|
|
|
| |
This reverts commit 46ae1d7a2b49b8f973dd6ba44fbbd38383798524.
The _Timecounter_Tick_simple() function actually doesn't switch to the
next timehand, so it is all right to use the simple timecounter approach
even on SMP configurations. The use of simple timecounters is not
recommended however since they impose a performance penalty.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When updating/accessing the timehands, barriers are needed to ensure
that:
- th_generation update is visible after the parameters update is
visible;
- the read of parameters is not reordered before initial read of
th_generation.
On UP kernels, compiler barriers are enough. For SMP machines, CPU
barriers must be used too, as was confirmed by submitter by testing on
the Freescale T4240 platform with 24 PowerPC processors.
Submitted by: Sebastian Huber <sebastian.huber@embedded-brains.de>
MFC after: 1 week
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implement a mechanism for making changes in the kernel<->driver PPS
interface without breaking ABI or API compatibility with existing drivers.
The existing data structures used to communicate between the kernel and
driver portions of PPS processing contain no spare/padding fields and no
flags field or other straightforward mechanism for communicating changes
in the structures or behaviors of the code. This makes it difficult to
MFC new features added to the PPS facility. ABI compatibility is
important; out-of-tree drivers in module form are known to exist. (Note
that the existing api_version field in the pps_params structure must
contain the value mandated by RFC 2783 and any RFCs that come along after.)
These changes introduce a pair of abi-version fields which are filled in
by the driver and the kernel respectively to indicate the interface
version. The driver sets its version field before calling the new
pps_init_abi() function. That lets the kernel know how much of the
pps_state structure is understood by the driver and it can avoid using
newer fields at the end of the structure that it knows about if the driver
is a lower version. The kernel fills in its version field during the init
call, letting the driver know what features and data the kernel supports.
To implement the new version information in a way that is backwards
compatible with code from before these changes, the high bit of the
lightly-used 'kcmode' field is repurposed as a flag bit that indicates the
driver is aware of the abi versioning scheme. Basically if this bit is
clear that indicates a "version 0" driver and if it is set the driver_abi
field indicates the version.
These changes also move the recently-added 'mtx' field of pps_state from
the middle to the end of the structure, and make the kernel code that uses
this field conditional on the driver being abi version 1 or higher. It
changes the only driver currently supplying the mtx field, usb_serial, to
use pps_init_abi().
Reviewed by: hselasky@
|
|
|
|
| |
Use sbuf_printf() for sysctl strings instead of stack buffers and snprintf().
|
|
|
|
|
|
|
|
| |
Add mutex support to the pps_ioctl() API in the kernel.
Bump kernel version to reflect structure change.
PR: 196897
MFC after: 1 week
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The SPARC ABI is a bit special with respect to the floating point context.
The complete floating point context is volatile. Thus from an ABI point
of view nothing needs to be saved and restored during a context switch.
Instead the floating point context must be saved and restored during
interrupt processing. Historically the deferred floating point switch is
used for SPARC and the complete floating point context is saved and
restored during a context switch to the new floating point unit owner.
This is a bit dangerous since post-switch actions (e.g. signal handlers)
and context switch extensions may silently corrupt the floating point
context. The floating point unit is disabled for interrupt handlers.
Thus in case an interrupt handler uses the floating point unit then this
will result in a trap.
On SMP configurations the deferred floating point switch is not
supported in principle. So use here a safe floating point support. Safe
means that the volatile floating point context is saved and restored
around a thread dispatch issued during interrupt processing. Thus
post-switch actions and context switch extensions may safely use the
floating point unit.
Update #2270.
|
|
|
|
|
|
|
|
| |
Store the floating-point unit property in the thread control block
regardless of the CPU_HARDWARE_FP and CPU_SOFTWARE_FP settings. Make
sure the floating-point unit is only enabled for the corresponding
multilibs. This helps targets which have a volatile only floating point
context like SPARC for example.
|
|
|
|
|
|
|
| |
Define CONTEXT_FP_SIZE to zero in case hardware and software floating
point support is disabled. The problem is that empty structures have a
different size in C and C++. In C++ they have a non-zero size leading
to an overestimate of the workspace size.
|
|
|
|
|
|
| |
With the introduction of fine grained locking there is no longer a
one-to-one connection between the Giant lock nest level and the thread
dispatch disable level.
|
|
|
|
| |
Update #2270.
|
|
|
|
|
|
|
| |
The FP context save/restore makes only sense in the context of FP
threads.
Update #2270.
|
|
|
|
| |
Update #2270.
|
|
|
|
|
|
|
| |
Write the pattern only once to the entry register window and the
floating point registers.
Update #2270.
|
|
|
|
| |
Replace _API_Mutex_Is_locked() with _API_Mutex_Is_owner().
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Implement _CPU_Context_validate() and _CPU_Context_volatile_clobber().
Update #2270.
|
|
|
|
|
|
|
|
| |
Replace timestamp implementation with FreeBSD bintime and timecounters.
New test sptests/sptimecounter02.
Update #2271.
|
|
|
|
|
|
| |
New test sptests/timecounter01.
Update #2271.
|
|
|
|
| |
Update #2271.
|
|
|
|
|
|
|
| |
FreeBSD assumes that u_int is a 32-bit integer type. This is wrong for
some 16-bit targets supported by RTEMS.
Update #2271.
|
|
|
|
| |
Update #2271.
|
|
|
|
|
|
|
| |
Thread dispatching is disabled in case interrupts are disabled. To get
an accurate thread dispatch disabled time it is important to use the
interrupt disabled instant in case a transition from an interrupt
disabled section to a thread dispatch level section happens.
|
|
|
|
|
|
|
| |
Use _Thread_Timeout() instead. Use pseudo thread queue for nanosleep()
to deal with signals.
Close #2130.
|
| |
|
|
|
|
| |
This reduces the code size drastically.
|
|
|
|
|
| |
This function is superfluous due to the introduction of fine grained
locking.
|
|
|
|
| |
Update #2273.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move the writes to Thread_Control::current_priority and
Thread_Control::real_priority into _Thread_Change_priority() under the
protection of the thread lock. Add a filter function to
_Thread_Change_priority() to enable specialized variants.
Avoid race conditions during a thread priority restore with the new
Thread_Control::priority_restore_hint for an important average case
optimizations used by priority inheritance mutexes.
Update #2273.
|
|
|
|
| |
Update #2273.
|
| |
|
| |
|
|
|
|
| |
Rename _CORE_semaphore_Seize_isr_disable() to _CORE_semaphore_Seize().
|