Commit Graph
231 Commits
Author SHA1 Message Date
Sebastian Huber 22d9575fd0 linux: Add rbtree_postorder_for_each_entry_safe()
Update #3465.
2018-07-16 07:22:11 +02:00
Sebastian Huber 0cb425704b linux: Simplify <linux/rbtree.h>
Remove the placeholder struct rb_node and use RBTree_Node directly via
some C pre-processor defines to adjust the member names.

Update #3465.
2018-07-16 07:22:11 +02:00
Sebastian Huber 877aeab6d2 linux: Install <linux/rbtree.h>
This makes it possible to test this API.

Update #3465.
2018-07-16 07:22:11 +02:00
Sebastian Huber 6539beab82 score: Add postorder tree iteration support
Update #3465.
2018-07-16 07:22:06 +02:00
Sebastian Huber 77fbbd620f posix: Check for new <pthread.h> prototypes
Update #3342.
Update #3343.
2018-07-05 07:10:04 +02:00
Sebastian Huber b36bf5bda8 score: Increase PER_CPU_CONTROL_SIZE_APPROX
Increase the PER_CPU_CONTROL_SIZE_APPROX on 64-bit targets.

Update #3433.
2018-06-29 12:55:28 +02:00
Sebastian Huber 511dc4b2be Rework initialization and interrupt stack support
Statically initialize the interrupt stack area
(_Configuration_Interrupt_stack_area_begin,
_Configuration_Interrupt_stack_area_end, and
_Configuration_Interrupt_stack_size) via <rtems/confdefs.h>.  Place the
interrupt stack area in a special section ".rtemsstack.interrupt".  Let
BSPs define the optimal placement of this section in their linker
command files (e.g. in a fast on-chip memory).

This change makes makes the CPU_HAS_SOFTWARE_INTERRUPT_STACK and
CPU_HAS_HARDWARE_INTERRUPT_STACK CPU port defines superfluous, since the
low level initialization code has all information available via global
symbols.

This change makes the CPU_ALLOCATE_INTERRUPT_STACK CPU port define
superfluous, since the interrupt stacks are allocated by confdefs.h for
all architectures.  There is no need for BSP-specific linker command
file magic (except the section placement), see previous ARM linker
command file as a bad example.

Remove _CPU_Install_interrupt_stack().  Initialize the hardware
interrupt stack in _CPU_Initialize() if necessary (e.g.
m68k_install_interrupt_stack()).

The optional _CPU_Interrupt_stack_setup() is still useful to customize
the registration of the interrupt stack area in the per-CPU information.

The initialization stack can reuse the interrupt stack, since

  * interrupts are disabled during the sequential system initialization,
    and

  * the boot_card() function does not return.

This stack resuse saves memory.

Changes per architecture:

arm:

  * Mostly replace the linker symbol based configuration of stacks with
    the standard <rtems/confdefs.h> configuration via
    CONFIGURE_INTERRUPT_STACK_SIZE.  The size of the FIQ, ABT and UND
    mode stack is still defined via linker symbols.  These modes are
    rarely used in applications and the default values provided by the
    BSP should be sufficient in most cases.

  * Remove the bsp_processor_count linker symbol hack used for the SMP
    support. This is possible since the interrupt stack area is now
    allocated by the linker and not allocated from the heap.  This makes
    some configure.ac stuff obsolete.  Remove the now superfluous BSP
    variants altcycv_devkit_smp and realview_pbx_a9_qemu_smp.

bfin:

  * Remove unused magic linker command file allocation of initialization
    stack.  Maybe a previous linker command file copy and paste problem?
    In the start.S the initialization stack is set to a hard coded value.

lm32, m32c, mips, nios2, riscv, sh, v850:

  * Remove magic linker command file allocation of initialization stack.
    Reuse interrupt stack for initialization stack.

m68k:

  * Remove magic linker command file allocation of initialization stack.
    Reuse interrupt stack for initialization stack.

powerpc:

  * Remove magic linker command file allocation of initialization stack.
    Reuse interrupt stack for initialization stack.

  * Used dedicated memory region (REGION_RTEMSSTACK) for the interrupt
    stack on BSPs using the shared linkcmds.base (replacement for
    REGION_RWEXTRA).

sparc:

  * Remove the hard coded initialization stack.  Use the interrupt stack
    for the initialization stack on the boot processor.  This saves
    16KiB of RAM.

Update #3459.
2018-06-27 08:58:16 +02:00
Sebastian Huber fe46647ef5 score: Macros to declare and define global symbols
Add RTEMS_DEFINE_GLOBAL_SYMBOL() and add RTEMS_DECLARE_GLOBAL_SYMBOL().

Update #3459.
2018-06-21 11:21:04 +02:00
Sebastian Huber c47ad8edc6 stackchk: Add SMP support
Check the interrupt stacks of all processors.  Set up the interrupt
stack of the current processor for high water testing in the thread
begin extension.  This must be done after multi-threading started, since
the initialization stacks may reuse the interrupt stacks.  Disable
thread dispatching in SMP configurations to prevent thread migration.
Writing to the interrupt stack is only safe if done from the
corresponding processor in thread context.

Update #3459.
2018-06-20 12:07:08 +02:00
Sebastian Huber 8ff5916c2f stackchk: Remove dead code
Update #3459.
2018-06-20 12:07:07 +02:00
Sebastian Huber 65f868cac6 Add _CPU_Counter_frequency()
Add rtems_counter_frequency() API function.  Use it to initialize the
counter value converter via the new system initialization step
(RTEMS_SYSINIT_CPU_COUNTER).  This decouples the counter implementation
and the counter converter.  It avoids an unnecessary pull in of the
64-bit integer division from libgcc.

Update #3456.
2018-06-15 13:02:44 +02:00
Sebastian Huber 4c7b18e358 Add RTEMS_SYSINIT_CPU_COUNTER
Add initialization step for the CPU counter support.

Update #3456.
2018-06-15 13:02:27 +02:00
Sebastian Huber 5ec55039ed Reassign system initilization order numbers
Assign each system initialization step a number divisible by 256 to
allow more easily future additions.  Keep the order as is.
2018-06-15 12:59:07 +02:00
Sebastian Huber de9b7d712b Add RTEMS_FATAL_SOURCE_INVALID_HEAP_FREE
An invalid heap usage such as a double free is usually a fatal error
since this indicates a use after free.  Replace the use of printk() in
free() with a fatal error.

Update #3437.
2018-06-05 08:49:56 +02:00
Sebastian Huber 61d5c88608 config: Hide CONFIGURE_SCHEDULER_COUNT
Rename CONFIGURE_SCHEDULER_COUNT to _CONFIGURE_SCHEDULER_COUNT to
emphasise that this is not a user configuration option.
2018-05-28 06:59:52 +02:00
Sebastian Huber 2292ca22df config: Hide CONFIGURE_INITIAL_EXTENSION_TABLE
Rename CONFIGURE_INITIAL_EXTENSION_TABLE to
_CONFIGURE_INITIAL_EXTENSION_TABLE to emphasise that this is not a user
configuration option.
2018-05-28 06:59:52 +02:00
Sebastian Huber 30c389849d libblock: Init deps in rtems_blkdev_create()
Update #3358.
2018-05-18 10:44:18 +02:00
Sebastian Huber b80b34c38d telnetd: Always build telnet daemon
Add support for libbsd initialization.

Update #3419.
2018-05-02 09:57:32 +02:00
Sebastian Huber b771cb48a6 ftpd: Always build FTP daemon
Add support for libbsd initialization.

Update #3419.
2018-05-02 09:56:49 +02:00
Sebastian Huber bf76d5fe76 network: Import latest <arpa/ftp.h> from FreeBSD
Update #3419.
2018-05-02 09:56:48 +02:00
Sebastian Huber fea9a7a7e5 ftpfs: Always build FTP client
Move FTP client filesystem to separate library libftpfs.a.

Update #3419.
2018-05-02 09:56:48 +02:00
Sebastian Huber c3bab73b4b tftpfs: Always build TFTP client
Move TFTP client filesystem to separate library libtftpfs.a.
Conditionally use legacy network stack features, e.g. BOOTP support.

Update #3419.
2018-05-02 09:56:48 +02:00
Sebastian Huber dd8e4b760b libdebugger: Move to separate library
Always build remote TCP support since it depends only on the POSIX
socket API.  It works with the legacy network stack and libbsd.  Move it
to a separate libdebugger.a library to allow an easy use with libbsd via
"-ldebugger -lbsd" otherwise we would have a cyclic dependency between
libbsd.a and librtemscpu.a.

Update #3419.
2018-05-02 09:56:43 +02:00
Joel Sherrill c77cd426f8 Drop executable permissions on .[ch] files 2018-04-30 17:18:49 -05:00
Sebastian Huber 3ef7e7440b config: Fix -Wint-in-bool-context warnings 2018-04-30 07:48:53 +02:00
Sebastian Huber 6d21a3f230 drvmgr: Remove bsp_driver_level_hook()
Use RTEMS_SYSINIT_ITEM() instead.

Update #2408.
2018-04-20 09:49:35 +02:00
Chris Johns f59d435d16 libdl: Remove _t from all structures as this is reserved for the standards 2018-04-12 17:57:40 +10:00
Chris Johns d13a62409e cpukit/mttpd: Add a callback to generate a per file HTTP etag
Close #3323.
2018-04-11 12:47:01 +10:00
Sebastian Huber 549b1d6bbe Remove unused POSIX_NOT_IMPLEMENTED() declaration 2018-03-27 08:33:06 +02:00
Sebastian Huber 2c65588862 config: Fix re-definition warning 2018-03-22 08:39:07 +01:00
Sebastian Huber 478dc8968f imfs: Use most efficient way to get the time
As a side-effect, this fixes some warnings.

Close #3350.
2018-03-16 07:52:45 +01:00
Sebastian Huber 0fb724a7bd libblock: C++ compatibility 2018-03-12 10:05:09 +01:00
Sebastian Huber 6fadb7af09 config: Use new scheduler configuration defines
Update #3325.
2018-03-12 07:01:30 +01:00
Sebastian Huber 2ef85b1c76 config: Simplify clustered scheduler configuration
Do not use names derived from scheduler implementation details.  Instead
use names derived from the scheduler configuration or documentation.

Provide defines for backward compatibility.

Update #3325.
2018-03-12 07:01:30 +01:00
Sebastian Huber 16f4661fd1 network: Optionally install network headers
Install the network headers only if --enable-networking is specified.

Update #3254.
2018-03-09 08:43:29 +01:00
Joel Sherrill 89ac281f5b cpukit/include/mqueue.h: Delete unneeded includes 2018-03-08 11:22:48 -06:00
Sebastian Huber 0231ebc22f config: Remove RTEMS prefix from internal defines
Update #3325.
2018-03-08 07:05:07 +01:00
Sebastian Huber ef900abd90 capture: Fix get priority methods 2018-03-07 13:03:36 +01:00
Sebastian Huber 337a186909 Add a simple task console driver
Close #3320.
2018-03-06 12:32:09 +01:00
Joel Sherrill c232b378b8 confdefs.h: Minor rework to avoid warnings when CONFIGURE_HAS_OWN_INIT_TABLE
CONFIGURE_HAS_OWN_INIT_TABLE was used both with and without
defining CONFIGURE_RTEMS_INIT_TASKS_TABLE. This rework allows
it to work both ways without warnings.
2018-02-19 13:06:46 -06:00
Christian Mauderer bf7070232f dev/sc16is752: Add GPIO access via ioctl. 2018-02-12 14:36:23 +01:00
Sebastian Huber 2fd3111708 stdio-redirector: Use self-contained mutex
Update #2843.
2018-02-07 08:58:31 +01:00
Sebastian Huber d9800ac58d libdl: Use self-contained recursive mutex
Update #2843.
2018-02-07 08:58:30 +01:00
Sebastian Huber a59a61828b libblock: Use self-contained mutex for media
Update #2843.
2018-02-07 08:58:30 +01:00
Sebastian Huber 868ca746c2 libblock: Use self-contained mutex for sparse disk
Update #2843.
2018-02-07 08:58:29 +01:00
Sebastian Huber 53b6484d38 termios: Remove obsolete configuration options
Update #2843.
2018-02-05 09:57:45 +01:00
Sebastian Huber 03e5a7800d NFS: Use self-contained recursive mutex
Update #2843.
2018-02-02 15:01:23 +01:00
Sebastian Huber 8ddd92d56a pipe: Use self-contained mutex
Update #2843.
2018-02-02 15:01:23 +01:00
Sebastian Huber 0940648f6f RFS: Use self-contained recursive mutex
Update #2843.
2018-02-02 15:01:22 +01:00
Sebastian Huber 3b77417ba7 dosfs: Use self-contained recursive mutex
Update #2843.
2018-02-02 15:01:22 +01:00