Commit Graph

400 Commits

Author SHA1 Message Date
Joel Sherrill
bfe6391c0d confdefs.h: Improve the Doxygen 2015-03-11 16:18:29 -05:00
Gedare Bloom
cf4045630e cpukit: deprecate task variables. closes #2293. 2015-03-10 15:46:59 -04:00
Gedare Bloom
3ac681191e cpukit: deprecate notepads
Deprecate Classic API Notepads. Mark task_set/get_note() with
the deprecated attribute, and also mark the notepads field.

Replace disable with enable option for notepads in confdefs.h,
and make notepads disabled by default. The previous option
CONFIGURE_DISABLE_CLASSIC_API_NOTEPADS is now unused and
will emit a compile-time warning. A new option
CONFIGURE_ENABLE_CLASSIC_API_NOTEPADS is available to turn
on notepads, but it also will emit a compile-time warning
to indicate that notepads are deprecated.

Closes #2265
2015-03-10 12:53:07 -04:00
Joel Sherrill
a7e4de2504 Fix even more Doxygen issues 2015-03-06 14:33:08 -06:00
Sebastian Huber
18d0a49129 Move test support from sapi to libmisc/testsupport 2015-03-05 08:44:59 +01:00
Sebastian Huber
f78549221b IMFS: Add CONFIGURE_IMFS_DISABLE_READDIR 2015-02-14 21:34:42 +01:00
Sebastian Huber
249766c53f IMFS: Rename CONFIGURE_IMFS_DISABLE_FCHMOD
Rename CONFIGURE_IMFS_DISABLE_FCHMOD to CONFIGURE_IMFS_DISABLE_CHMOD.
2015-02-13 21:26:17 +01:00
Sebastian Huber
40a18d7f9a IMFS: Add CONFIGURE_IMFS_DISABLE_MKNOD_FILE 2015-02-13 21:11:55 +01:00
Sebastian Huber
12eee4fdb5 IMFS: CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
Resurrect CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM.
2015-02-13 20:53:41 +01:00
Sebastian Huber
a9df916988 IMFS: Add fine grained configuration
Remove miniIMFS.  Statically initialize the root IMFS.

Add configuration options to disable individual
features of the root IMFS, e.g.
  o CONFIGURE_IMFS_DISABLE_CHOWN,
  o CONFIGURE_IMFS_DISABLE_FCHMOD,
  o CONFIGURE_IMFS_DISABLE_LINK,
  o CONFIGURE_IMFS_DISABLE_MKNOD,
  o CONFIGURE_IMFS_DISABLE_MOUNT,
  o CONFIGURE_IMFS_DISABLE_READLINK,
  o CONFIGURE_IMFS_DISABLE_RENAME,
  o CONFIGURE_IMFS_DISABLE_RMNOD,
  o CONFIGURE_IMFS_DISABLE_SYMLINK,
  o CONFIGURE_IMFS_DISABLE_UNMOUNT, and
  o CONFIGURE_IMFS_DISABLE_UTIME.
2015-02-12 20:53:36 +01:00
Sebastian Huber
16939b1876 Filesystem: Simplify FIFO and pipe configuration 2015-02-09 19:09:23 +01:00
Sebastian Huber
efd2965abf Filesystem: Statically initialize rtems_libio_iops 2015-02-04 14:03:49 +01:00
Sebastian Huber
ead010cd3c Filesystem: Make rtems_libio_number_iops const 2015-02-04 14:03:49 +01:00
Sebastian Huber
3feb3727a4 confdefs.h: Fix workspace size if idle task is FP 2014-12-12 08:07:49 +01:00
Sebastian Huber
01557b0c6e libcsupport: Delete malloc statistics
Use the heap handler statistics instead.  Add heap walk option to MALLOC
shell command.

close #1367
2014-11-28 11:23:53 +01:00
Sebastian Huber
26f4cddbd9 _Scheduler_FIXME_thread_priority_queues_are_broken
Delete this variable since it is no longer necessary due to the thread
priority queue implementation change to use RB trees.
2014-11-24 08:35:45 +01:00
Joel Sherrill
8fbe2e69b5 Use correct prototype of benchmark_timer_read()
This change starts with removing the effectively empty file
timerdrv.h. The prototypes for benchmark_timer_XXX() were in
btimer.h which was not universally used. Thus every use of
timerdrv.h had to be changed to btimer.h. Then the prototypes
for benchmark_timer_read() had to be adjusted to return
benchmark_timer_t rather than int or uint32_t.

I took this opportunity to also correct the file headers to
separate the copyright from the file description comments which
is needed to ensure the copyright isn't propagated into Doxygen
output.
2014-09-16 16:09:12 -05:00
Sebastian Huber
993f5acd25 rbtree: Simplify insert and extract
Simplify _RBTree_Insert() and _RBTree_Extract().  Remove more
superfluous NULL pointer checks.  Change _RBTree_Is_root() to use only
the node.  Add parent parameter to _RBTree_Sibling().  Delete
_RBTree_Grandparent() and _RBTree_Parent_sibling().
2014-08-07 15:59:29 +02:00
Sebastian Huber
60fe374247 rbtree: Add and use RBTree_Compare_result 2014-08-05 09:30:37 +02:00
Sebastian Huber
40dcafaf80 Add and use RTEMS_CONTAINER_OF() 2014-08-05 09:30:33 +02:00
Sebastian Huber
b767683a5e rbtree: Rename find header in find control
Simplify _RBTree_Find_control().  Avoid superfluous NULL pointer checks.
2014-07-29 14:05:17 +02:00
Sebastian Huber
6e93c836e2 rbtree: Simplify off-tree handling
Only use the parent pointer, since this pointer is never NULL for nodes
which are part of a tree.

Rename functions from *_off_rbtree() to *_off_tree().
2014-07-29 14:05:08 +02:00
Sebastian Huber
4cd55724bb Delete unused *_Is_null() functions 2014-07-26 12:52:22 +02:00
Sebastian Huber
64939bc9ef rbtree: Reduce RBTree_Control size
Remove compare function and is unique indicator from the control
structure.  Rename RBTree_Compare_function to RBTree_Compare.  Rename
rtems_rbtree_compare_function to rtems_rbtree_compare.  Provide C++
compatible initializers.  Add compare function and is unique indicator
to _RBTree_Find(), _RBTree_Insert(), rtems_rbtree_find() and
rtems_rbtree_insert().  Remove _RBTree_Is_unique() and
rtems_rbtree_is_unique().  Remove compare function and is unique
indicator from _RBTree_Initialize_empty() and
rtems_rbtree_initialize_empty().
2014-07-15 10:03:48 -05:00
Sebastian Huber
7e11999038 rbtree: Delete unused functions 2014-07-15 10:03:48 -05:00
Sebastian Huber
2d36931823 score: Collect scheduler related fields in TCB
Add Thread_Scheduler_control to collect scheduler related fields of the
TCB.
2014-06-23 09:13:00 +02:00
Sebastian Huber
897a093519 score: Fix scheduler context initializer 2014-06-12 08:24:57 +02:00
Ralf Kirchner
1fc2e960ce libblock: Add RTEMS_BDBUF_USE_PTHREAD
Use the PTHREAD mutexes and condition variables if available.  This
helps on SMP configurations to avoid the home grown condition variables
via disabled preemption.
2014-06-02 16:26:25 +02:00
Ralf Kirchner
d8ac087a8c rtems: Avoid copy and paste in confdefs.h
Add and use CONFIGURE_POSIX_MUTEXES.
Add and use CONFIGURE_POSIX_CONDITION_VARIABLES.
2014-06-02 15:47:09 +02:00
Sebastian Huber
8fcafdd553 score: Multiprocessor Resource Sharing Protocol
Add basic support for the Multiprocessor Resource Sharing Protocol
(MrsP).

The Multiprocessor Resource Sharing Protocol (MrsP) is defined in A.
Burns and A.J.  Wellings, A Schedulability Compatible Multiprocessor
Resource Sharing Protocol - MrsP, Proceedings of the 25th Euromicro
Conference on Real-Time Systems (ECRTS 2013), July 2013.  It is a
generalization of the Priority Ceiling Protocol to SMP systems.  Each
MrsP semaphore uses a ceiling priority per scheduler instance.  These
ceiling priorities can be specified with rtems_semaphore_set_priority().
A task obtaining or owning a MrsP semaphore will execute with the
ceiling priority for its scheduler instance as specified by the MrsP
semaphore object.  Tasks waiting to get ownership of a MrsP semaphore
will not relinquish the processor voluntarily.  In case the owner of a
MrsP semaphore gets preempted it can ask all tasks waiting for this
semaphore to help out and temporarily borrow the right to execute on one
of their assigned processors.

The help out feature is not implemented with this patch.
2014-05-28 10:50:41 +02:00
Sebastian Huber
beab7329fc score: Introduce scheduler nodes
Rename scheduler per-thread information into scheduler nodes using
Scheduler_Node as the base type.  Use inheritance for specialized
schedulers.

Move the scheduler specific states from the thread control block into
the scheduler node structure.

Validate the SMP scheduler node state transitions in case RTEMS_DEBUG is
defined.
2014-05-14 14:46:19 +02:00
Sebastian Huber
03b7789ec7 score: Statically initialize _ISR_Vector_table 2014-04-29 09:51:22 +02:00
Chris Johns
0c5beb8ecb rtems: Account for the network semaphore. 2014-04-27 09:34:01 +10:00
Jennifer Averett
e306f3dfb9 sapi: Fix condef.h compile error for disabled network configuration.
Added define for CONFIGURE_SEMAPHORES_FOR_NFS when networking disabled.
2014-04-25 12:56:36 -05:00
Chris Johns
c9a0a10dde rtems: Account for file system semaphores.
Add support to account for the semaphores used by the file systems.
2014-04-25 16:14:19 +10:00
Sebastian Huber
0e98970264 sapi: Fix CONFIGURE_UNLIMITED_OBJECTS
POSIX keys and key value pairs support now the unlimited option.
2014-04-17 08:06:37 +02:00
Sebastian Huber
2c1e7ffbcb sapi: Error case for CONFIGURE_UNLIMITED_OBJECTS 2014-04-17 08:06:37 +02:00
Sebastian Huber
c5831a3f9a score: Add clustered/partitioned scheduling
Clustered/partitioned scheduling helps to control the worst-case
latencies in the system.  The goal is to reduce the amount of shared
state in the system and thus prevention of lock contention.  Modern
multi-processor systems tend to have several layers of data and
instruction caches.  With clustered/partitioned scheduling it is
possible to honour the cache topology of a system and thus avoid
expensive cache synchronization traffic.

We have clustered scheduling in case the set of processors of a system
is partitioned into non-empty pairwise-disjoint subsets.  These subsets
are called clusters.  Clusters with a cardinality of one are partitions.
Each cluster is owned by exactly one scheduler instance.
2014-04-15 10:41:44 +02:00
Sebastian Huber
133d54c55e score: Add scheduler name 2014-04-15 08:37:12 +02:00
Sebastian Huber
69aa33490b score: Simplify thread control initialization
The thread control block contains fields that point to application
configuration dependent memory areas, like the scheduler information,
the API control blocks, the user extension context table, the RTEMS
notepads and the Newlib re-entrancy support.  Account for these areas in
the configuration and avoid extra workspace allocations for these areas.

This helps also to avoid heap fragementation and reduces the per thread
memory due to a reduced heap allocation overhead.
2014-04-15 08:37:12 +02:00
Sebastian Huber
e1598a616d score: Static scheduler configuration
Do not allocate the scheduler control structures from the workspace.
This is a preparation step for configuration of clustered/partitioned
schedulers on SMP.
2014-04-15 08:37:11 +02:00
Sebastian Huber
263f4becea score: Statically initialize IO manager
This simplifies the RTEMS initialization and helps to avoid a memory
overhead.  The workspace demands of the IO manager were not included in
the <rtems/confdefs.h> workspace size estimate.  This is also fixed as a
side-effect.

Update documentation and move "Specifying Application Defined Device
Driver Table" to the section end.  This sub-section is not that
important for the user.  Mentioning this at the beginning may lead to
confusion.
2014-04-10 12:37:40 +02:00
Sebastian Huber
94086a9cb7 score: Fix POSIX threads size estimate
The POSIX threads are separate objects.  Account for the object
administration overhead.
2014-04-07 14:51:31 +02:00
Sebastian Huber
fb9e98ea22 score: Fix workspace size estimate 2014-04-07 14:51:31 +02:00
Joel Sherrill
d507c03731 Disable per task variables when SMP is enabled
Per task variables are inherently unsafe in SMP systems. This
patch disables them from the build and adds warnings in the
appropriate documentation and configuration sections.
2014-04-04 14:27:27 -05:00
Sebastian Huber
439c494fe2 score: Add and use Scheduler_simple_Control 2014-04-04 11:01:18 +02:00
Sebastian Huber
3891983283 score: Add and use Scheduler_EDF_Control 2014-04-04 11:01:18 +02:00
Jennifer Averett
6d24e8bc6f sapi: Add priority affinity smp scheduler. 2014-04-03 10:48:56 -05:00
Sebastian Huber
494c2e3002 score: Move priority bit map to scheduler instance
Delete global variables _Priority_Major_bit_map and _Priority_Bit_map.
This makes it possible to use multiple priority scheduler instances for
example with clustered/partitioned scheduling on SMP.
2014-04-03 11:13:26 +02:00
Christian Mauderer
5c0c0cf2a6 privateenv: Use POSIX keys instead of task variables. 2014-03-27 14:50:36 +01:00