Commit Graph

8207 Commits

Author SHA1 Message Date
Sebastian Huber
2d2352bab9 score: Add and use _Objects_Put()
Add and use _Objects_Put_without_thread_dispatch().  These two functions
pair with the _Objects_Get() function.  This helps to introduce object
specific SMP locks to avoid lock contention.
2013-06-07 17:06:43 +02:00
Sebastian Huber
54e9216a0e score: Add _Objects_Put_for_get_isr_disable()
Provide SMP support.  The ISR disable/enable is not enough to ensure
mutual exclusion for SMP configurations.
2013-06-07 17:06:38 +02:00
Sebastian Huber
c398c6603a score: Align _Objects_Get_isr_disable()
Align ISR disable/enable sequence in _Objects_Get_isr_disable() with
thread dispatch disable/enable sequence in _Objects_Get().
2013-06-07 17:02:26 +02:00
Sebastian Huber
4fc370e3c6 score: Move thread dispatch content to new file
Move thread dispatch declarations and inline functions to new header
<rtems/score/threaddispatch.h> to make it independent of the
Thread_Control structure.  This avoids a cyclic dependency in case
thread dispatch functions are used for the object implementation.
2013-06-07 17:02:26 +02:00
Sebastian Huber
4f5baffd75 score: Simplify _CORE_mutex_Seize_interrupt_try* 2013-06-07 17:02:26 +02:00
Sebastian Huber
dcb4daf8e1 score: Simplify _CORE_semaphore_Seize_isr_disable 2013-06-07 17:02:26 +02:00
Sebastian Huber
17ce1034cf score: Simplify _Thread_Create_idle_helper()
The _Thread_Initialize() function has nothing to do with thread
dispatching it simply initializes the thread control.
2013-06-07 17:02:25 +02:00
Sebastian Huber
62da44e6d0 rtems: Move unnest dispatch after ISR enable
This prevents a lock order reversal.
2013-06-07 17:02:25 +02:00
Sebastian Huber
2f49cfdf87 rtems: Fix system event send for remote threads 2013-06-07 17:02:25 +02:00
Sebastian Huber
9bfd7ff09e dosfs: Documentation 2013-06-07 17:02:25 +02:00
Sebastian Huber
1f3ce602f9 termios: Fix warning 2013-06-07 17:02:24 +02:00
Sebastian Huber
36ae561c8e nfsclient: Add rpcSetXIDs() 2013-06-05 17:19:34 +02:00
Sebastian Huber
a2854fd55e nfsclient: Fix warnings 2013-06-05 17:19:33 +02:00
Sebastian Huber
442db915f8 nfsclient: Delete superfluous mask operation 2013-06-05 17:19:33 +02:00
Sebastian Huber
c295e098c6 nfsclient: Delete superfluous assignment 2013-06-05 17:19:33 +02:00
Sebastian Huber
cffa5b7838 libblock: Use UTF-8 converter in media manager 2013-06-04 13:56:19 +02:00
Ralf Kirchner
27170bae58 dosfs: Documentation 2013-06-03 17:28:42 +02:00
Ralf Kirchner
83a4cbb69d dosfs: UTF-8 Support: Multibyte conversions
Add optional conversion methods for multibyte strings. With these
conversions which make use of iconv and utf8proc it becomes possible to
use strings from any language (Czech, Chinese, Arabian, Hebrew, Corean,
...) for file names and directory names.

NOTE: Iconv support must be activated during the build of the tool chain
for these conversion methods (options --enable-newlib-iconv
--enable-newlib-iconv-encodings=[ENCODINGS_YOU_WANT]).  Alternatively
you can provide your own conversion methods.
2013-06-03 17:28:41 +02:00
Ralf Kirchner
46b7f92152 libmisc: Add utf8proc-v1.1.5
utf8proc is a small library for processing UTF-8 encoded Unicode strings.
Some features are Unicode normalization, stripping of default ignorable characters, case folding and detection of grapheme cluster boundaries.
For the time beeing utf8proc is intended to be used for normalizing and folding UTF-8 strings
for comparison purposes when adding UTF-8 support to the FAT file system.
2013-06-03 17:28:40 +02:00
Ralf Kirchner
d2e0bb36e3 dosfs: UTF-8 Support: UI, backwards compatibility
User interface and backwards compatibility for UTF-8 support in the FAT
file system.  Purpose of UTF-8 support is to permit file names and
directory names with characters from all kinds of languages (Czech,
Chinese, Arabian, Hebrew, Korean, ...).  This commit does not yet
support multibyte characters. It only contains the user interface and
the backwards compatibility.
2013-06-03 17:28:40 +02:00
Sebastian Huber
f2f211c543 smp: Add ARM support 2013-05-31 15:20:32 +02:00
Sebastian Huber
ffbeb6f6a3 smp: Add PowerPC support 2013-05-31 15:20:32 +02:00
Sebastian Huber
e358088fc2 smp: New SMP lock API
Move the SMP lock implementation to the CPU port.  An optimal SMP lock
implementation is highly architecture dependent.  For example the memory
models may be fundamentally different.

The new SMP lock API has a flaw.  It does not provide the ability to use
a local context for acquire and release pairs.  Such a context is
necessary to implement for example the Mellor-Crummey and Scott (MCS)
locks.  The SMP lock is currently used in _Thread_Disable_dispatch() and
_Thread_Enable_dispatch() and makes them to a giant lock acquire and
release.  Since these functions do not pass state information via a
local context there is currently no use case for such a feature.
2013-05-31 15:20:32 +02:00
Sebastian Huber
7c5ceea5ba score: Mark as no return
Mark rtems_smp_secondary_cpu_initialize() as no return.
2013-05-31 15:20:31 +02:00
Sebastian Huber
e3be691598 score: Remove idle field of Per_CPU_Control
This field is unused except for special case simulator clock drivers.
In these places use an alternative.  Add and use
_Thread_Set_global_exit_status() and _Thread_Get_global_exit_status().
2013-05-31 15:20:31 +02:00
Sebastian Huber
e071c18322 smp: Move secondary CPU initialization request
Do not assume that the scheduler selects the main processor for the
initialization thread.
2013-05-29 11:06:08 +02:00
Sebastian Huber
3148438e1e smp: Use _CPU_Fatal_halt() 2013-05-29 11:06:08 +02:00
Sebastian Huber
2f6108f93b smp: Simplify SMP initialization sequence
Delete bsp_smp_wait_for().  Other parts of the system work without
timeout, e.g. the spinlocks.  Using a timeout here does not make the
system more robust.

Delete bsp_smp_cpu_state and replace it with Per_CPU_State.  The
Per_CPU_State follows the Score naming conventions.  Add
_Per_CPU_Change_state() and _Per_CPU_Wait_for_state() functions to
change and observe states.

Use Per_CPU_State in Per_CPU_Control instead of the anonymous integer.

Add _CPU_Processor_event_broadcast() and _CPU_Processor_event_receive()
functions provided by the CPU port.  Use these functions in
_Per_CPU_Change_state() and _Per_CPU_Wait_for_state().

Add prototype for _SMP_Send_message().

Delete RTEMS_BSP_SMP_FIRST_TASK message.  The first context switch is
now performed in rtems_smp_secondary_cpu_initialize().  Issuing the
first context switch in the context of the inter-processor interrupt is
not possible on systems with a modern interrupt controller.  Such an
interrupt controler usually requires a handshake protocol with interrupt
acknowledge and end of interrupt signals.  A direct context switch in an
interrupt handler circumvents the interrupt processing epilogue and may
leave the system in an inconsistent state.

Release lock in rtems_smp_process_interrupt() even if no message was
delivered.  This prevents deadlock of the system.

Simplify and format _SMP_Send_message(),
_SMP_Request_other_cores_to_perform_first_context_switch(),
_SMP_Request_other_cores_to_dispatch() and
_SMP_Request_other_cores_to_shutdown().
2013-05-29 11:06:07 +02:00
Sebastian Huber
8cacceb7b9 smp: Delete bsp_smp_secondary_cpu_initialize()
Do not call bsp_smp_secondary_cpu_initialize() in
rtems_smp_secondary_cpu_initialize().  This allows more flexibilty in
the BSP low-level code.  Specify context requirements for a call to
rtems_smp_secondary_cpu_initialize().
2013-05-29 11:06:07 +02:00
Sebastian Huber
42eee51744 smp: Delete rtems_smp_send_message() 2013-05-29 11:06:07 +02:00
Sebastian Huber
9f703b46e7 smp: Delete rtems_smp_initialize_per_cpu() 2013-05-29 11:06:07 +02:00
Sebastian Huber
baf8f4dabc smp: Simplify main CPU initialization
Call _SMP_Handler_initialize() later and move bsp_smp_initialize() into
_SMP_Handler_initialize().  Change bsp_smp_initialize() prototype to
match integer types of calling context.
2013-05-29 11:06:07 +02:00
Sebastian Huber
10643e958c smp: Make CPU_ALLOCATE_INTERRUPT_STACK optional 2013-05-29 11:06:06 +02:00
Sebastian Huber
a29704eb04 smp: Rely on BSS initialization
The _Per_CPU_Information is part of the BSS segment and must be zero
initialized.  Some processors may already poll some per-CPU fields and
wait for a state change at this point.
2013-05-29 11:06:06 +02:00
Sebastian Huber
e70a14ad40 smp: Include missing header 2013-05-29 11:06:06 +02:00
Sebastian Huber
3d7eecc0a6 smp: Replace task delete with suspend
The rtems_task_delete() does not work on SMP at the moment.  See PR1814.
2013-05-29 11:06:06 +02:00
Sebastian Huber
d9bd5cd699 arm: Add CPU specific idle thread for ARMv7 2013-05-27 12:49:13 +02:00
Sebastian Huber
18e1e5bbf1 arm: Fix CPSR and SPSR access
The GNU assembler translates for example a

	msr spsr, rN
into

	msr SPSR_fc, rN

This would update only a subset of the register and leads to an
incomplete exceptions restore sequence resulting in system corruption.
Correct is this:

	msr SPSR_fsxc, rN
2013-05-27 12:49:13 +02:00
Ralf Kirchner
e67025e390 dosfs: Add RTEMS_DOSFS_SEMAPHORES_PER_INSTANCE 2013-05-24 08:55:05 +02:00
Ralf Kirchner
a0f3ce25a4 dosfs: Fix typo 2013-05-24 08:52:35 +02:00
Gedare Bloom
36a6f58ac5 score: use reference with strict mutex 2013-05-18 14:42:36 -04:00
Sebastian Huber
6c2eedc7dd smp: Add maximum_processors field to config
Delete rtems_configuration_get_smp_maximum_processors().  Delete
rtems_configuration_smp_maximum_processors variable.  Add
maximum_processors field to rtems_configuration_table if RTEMS_SMP is
defined.  Add rtems_configuration_get_maximum_processors().
2013-05-16 11:44:12 +02:00
Andrei Mozzhuhin
7bb71c7e9d shell: Add df command 2013-05-16 11:40:42 +02:00
Andrei Mozzhuhin
56f2260008 dosfs: Add statvfs() support 2013-05-16 11:40:41 +02:00
Andreas Heinig
d2d09eac21 shell: Fix NULL pointer access 2013-05-16 11:40:22 +02:00
Sebastian Huber
b71336c6e5 libcsupport: Avoid division by zero 2013-05-10 12:10:15 +02:00
Sebastian Huber
cfd8d7a3d7 arm: Support VFP-D32 and Neon 2013-05-10 12:10:14 +02:00
Sebastian Huber
9dcc6837de arm: Simplify architecture selection 2013-05-10 12:10:14 +02:00
Sebastian Huber
39993d6d76 score: Add CPU context validation 2013-05-10 12:10:14 +02:00
Sebastian Huber
aedeb57783 arm: Add FUNCTION_THUMB_ENTRY(), etc.
Add FUNCTION_THUMB_ENTRY(), FUNCTION_ENTRY() and FUNCTION_END().
2013-05-10 12:10:13 +02:00