Commit Graph

449 Commits

Author SHA1 Message Date
Sebastian Huber
362722795a sapi: Avoid Giant lock for extensions
Extension create and delete is protected by the object allocator lock.

Update #2555.
2016-04-18 08:20:12 +02:00
Sebastian Huber
d995a263b5 score: Delete _Chain_Append()
This function is not used in the score.

Update #2555.
2016-04-06 09:08:24 +02:00
Sebastian Huber
3bf2bcc8c6 score: Delete _Chain_Get()
This function is not used in the score.

Update #2555.
2016-04-06 09:08:24 +02:00
Sebastian Huber
223fff46b8 score: Delete _Chain_Extract()
This function is not used in the score.

Update #2555.
2016-04-06 09:08:23 +02:00
Sebastian Huber
b0354b0eee score: Delete _Chain_Insert()
This function is not used in the score.

Update #2555.
2016-04-06 09:08:23 +02:00
Sebastian Huber
cd90052365 score: Delete _Chain_Get_with_empty_check()
This function is not used in the score.

Update #2555.
2016-04-06 09:08:23 +02:00
Sebastian Huber
c130387985 score: Delete _Chain_Prepend_with_empty_check()
This function is not used in the score.

Update #2555.
2016-04-06 09:08:23 +02:00
Sebastian Huber
88f4157c93 score: Delete _Chain_Append_with_empty_check()
This function is not used in the score.

Update #2555.
2016-04-06 09:08:23 +02:00
Sebastian Huber
6406b693b6 score: Delete _Chain_Prepend()
This function is not used in the score.

Update #2555.
2016-04-06 09:08:22 +02:00
Sebastian Huber
84f5c0a91b score: Use red-black tree for active global objects
Use a red-black tree to lookup active global objects by identifier or
name.

Update #2555.
2016-04-06 09:08:22 +02:00
Sebastian Huber
349dd6b9cb score: Fix MPCI workspace size estimate
Account for the global objects table.
2016-03-29 13:21:31 +02:00
Sebastian Huber
4182b6f2a3 score: Fix MPCI workspace size estimate
Global objects are no real objects with an objects information
structure.
2016-03-29 13:21:31 +02:00
Sebastian Huber
9a97288911 score: Fix MPCI receive server workspace size 2016-03-29 13:21:12 +02:00
Sebastian Huber
16832b0d9e score: Fix multiprocessing thread proxies
We must provide thread queue heads for the thread wait information for
each thread proxy (thread queue heads were introduced by
d7665823b2).  The thread proxy must be
allocated before the enqueue operation.
2016-03-29 12:06:55 +02:00
Sebastian Huber
18ff889624 score: Use ISR lock for IO driver registration
Create implementation header file.

Update #2555.
2016-03-14 10:56:22 +01:00
Sebastian Huber
62d2540dae score: Delete unused SAPI_IO_EXTERN
Update #2559.
2016-03-14 09:41:37 +01:00
Sebastian Huber
4210114032 Use linker set for POSIX User Threads init
Update #2408.
2016-02-03 10:00:58 +01:00
Sebastian Huber
1ff8eca17a Use linker set for Classic User Tasks init
Update #2408.
2016-02-03 10:00:58 +01:00
Sebastian Huber
8ca372e9b4 Use linker set for MPCI initialization
Update #2408.
2016-02-03 10:00:57 +01:00
Sebastian Huber
ca4602e914 Use linker set for libio initialization
Update #2408.
2016-02-03 10:00:57 +01:00
Sebastian Huber
f64c6b4c49 Use atexit() handler to close std file descriptors 2016-02-03 10:00:57 +01:00
Sebastian Huber
3d36164fe5 Use linker set for root file system initialization
Update #2408.
2016-02-03 10:00:57 +01:00
Sebastian Huber
92bb345374 Optional Extensions initialization
Update #2408.
2016-02-03 10:00:51 +01:00
Sebastian Huber
a853c8518d Optional Initial Extensions initialization
Update #2408.
2016-02-03 10:00:51 +01:00
Sebastian Huber
76ac1ee3bb score: Fix simple timecounter support
Update #2502.
2016-01-19 08:36:14 +01:00
Sebastian Huber
ccd54344d9 score: Introduce Thread_Entry_information
This avoids potential dead code in _Thread_Handler().  It gets rid of
the dangerous function pointer casts.

Update #2514.
2016-01-11 08:47:01 +01:00
Aun-Ali Zaidi
d5154d0f6a api: Remove deprecated Notepads
Notepads where a feature of RTEMS' tasks that simply functioned in
the same way as POSIX keys or threaded local storage (TLS). They were
introduced well before per task variables, which are also deprecated,
and were barely used in favor of their POSIX alternatives.

In addition to their scarce usage, Notepads took up unnecessary memory.
For each task:

 - 16 32-bit integers were allocated.
 - A total of 64 bytes per task per thread.

This is especially critical in low memory and safety-critical applications.

They are also defined as uint32_t, and therefore are not guaranteed to
hold a pointer.

Lastly, they are not portable solutions for SMP and uniprocessor systems,
like POSIX keys and TLS.

updates #2493.
2015-12-24 16:52:34 -06:00
Sebastian Huber
d0c3983814 Use linker set for system initialization
Make rtems_initialize_data_structures(),
rtems_initialize_before_drivers() and rtems_initialize_device_drivers()
static.  Rename rtems_initialize_start_multitasking() to
rtems_initialize_executive() and call the registered system
initialization handlers in this function.  Add system initialization API
available via #include <rtems/sysinit.h>.  Update the documentation
accordingly.

This is no functional change, only the method to call the existing
initialization routines changes.  Instead of direct function calls a
table of function pointers contained in the new RTEMS system
initialization linker set is used.  This table looks like this (the
actual addresses depend on the target).

nm *.exe | grep _Linker | sort
0201a2d0 D _Linker_set__Sysinit_begin
0201a2d0 D _Linker_set__Sysinit_bsp_work_area_initialize
0201a2d4 D _Linker_set__Sysinit_bsp_start
0201a2d8 D _Linker_set__Sysinit_rtems_initialize_data_structures
0201a2dc D _Linker_set__Sysinit_bsp_libc_init
0201a2e0 D _Linker_set__Sysinit_rtems_initialize_before_drivers
0201a2e4 D _Linker_set__Sysinit_bsp_predriver_hook
0201a2e8 D _Linker_set__Sysinit_rtems_initialize_device_drivers
0201a2ec D _Linker_set__Sysinit_bsp_postdriver_hook
0201a2f0 D _Linker_set__Sysinit_end

Add test sptests/spsysinit01.

Update #2408.
2015-12-11 08:17:16 +01:00
Sebastian Huber
8054b1c718 Remove <rtems/debug.h>
Close #2477.
2015-12-07 13:11:07 +01:00
Sebastian Huber
ac5f2442e3 Require __getreent()
This function is used by Newlib since 2013-07-09 (Git commit
9b51cd8c6b9cdd067d9648a7ab952884019c56a5).
2015-11-25 08:33:31 +01:00
Sebastian Huber
aa473025f7 sapi: Add rtems_chain_get_first_unprotected()
Close #2459.
2015-11-05 11:30:09 +01:00
Joel Sherrill
69be1a222a CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK was undocumented and not error checked
closes #2431.
2015-10-27 07:31:29 -05:00
Sebastian Huber
c52568dcdb basdefs.h: Add and use RTEMS_DEPRECATED 2015-10-26 09:13:19 +01:00
Sebastian Huber
143696acbd basedefs.h: Add and use RTEMS_NO_RETURN 2015-10-26 09:13:19 +01:00
Sebastian Huber
3995e6d9c2 score: Implement SMP-specific priority queue 2015-09-04 13:25:03 +02:00
Sebastian Huber
509e8d7f4d rbtree: Delete rtems_rbtree_find_control()
This function is hard to support in alternative implementations.  It has
no internal use case.
2015-09-01 09:07:08 +02:00
Sebastian Huber
ddb6a49bdf rbtree: Delete _RBTree_Initialize()
This function has no internal use case.
2015-08-31 09:59:42 +02:00
Sebastian Huber
b9877ee03d rbtree: Delete _RBTree_Get()
This function has no internal use case.
2015-08-31 09:59:42 +02:00
Sebastian Huber
3f49446e54 rbtree: Delete _RBTree_Is_first() 2015-08-31 09:59:41 +02:00
Sebastian Huber
341f629614 rbtree: Add _RBTree_Minimum(), _RBTree_Maximum() 2015-08-31 09:59:41 +02:00
Sebastian Huber
d7665823b2 score: Introduce Thread_queue_Heads
Move the storage for the thread queue heads to the threads.  Each thread
provides a set of thread queue heads allocated from a dedicated memory
pool.  In case a thread blocks on a queue, then it lends its heads to
the queue.  In case the thread unblocks, then it takes a free set of
threads from the queue.  Since a thread can block on at most one queue
this works.  This mechanism is used in FreeBSD.  The motivation for this
change is to reduce the memory demands of the synchronization objects.
On a 32-bit uni-processor configuration the Thread_queue_Control size is
now 8 bytes, compared to 64 bytes in RTEMS 4.10 (other changes reduced
the size as well).
2015-07-23 08:01:13 +02:00
Sebastian Huber
48fed9a56e score: Simplify <rtems/system.h>
Drop the <rtems/score/percpu.h> include since this file exposes a lot of
implementation details.
2015-06-26 09:16:25 +02:00
Sebastian Huber
ffe14b26c8 sapi: Fix workspace size estimate
Reserve a full minimum block to account for the heap protection enabled
via RTEMS_DEBUG.
2015-05-27 10:46:30 +02:00
Sebastian Huber
3f1bf0ce4b sapi: Fix workspace size estimate 2015-05-27 09:04:25 +02:00
Sebastian Huber
67901a8265 sapi: Simplify confdefs.h
The _Configure_From_workspace() already takes care that zero size
allocations contribute nothing to the workspace size estimate.
2015-05-27 08:55:51 +02:00
Alexander Krutwig
31be41653a timecounter: Port to RTEMS
New test sptests/timecounter01.

Update #2271.
2015-05-20 08:40:29 +02:00
Sebastian Huber
8d6fd40592 sapi: Avoid declaration in source, fix type 2015-04-17 08:46:33 +02:00
Daniel Hellstrom
e7fade3ac4 DRVMGR: added driver manager to cpukit/libdrvmgr 2015-04-17 01:10:16 +02:00
Daniel Hellstrom
a31845f7f9 LIBPCI: added PCI layer to cpukit/libpci 2015-04-17 01:10:15 +02:00
Joel Sherrill
bfe6391c0d confdefs.h: Improve the Doxygen 2015-03-11 16:18:29 -05:00