Commit Graph

543 Commits

Author SHA1 Message Date
Sebastian Huber
f6c7c57d86 rtems: Create region implementation header
Move implementation specific parts of region.h and region.inl into new
header file regionimpl.h.  The region.h contains now only the
application visible API.
2013-07-23 15:12:55 +02:00
Sebastian Huber
8695cae269 rtems: Create part implementation header
Move implementation specific parts of part.h and part.inl into new
header file partimpl.h.  The part.h contains now only the application
visible API.
2013-07-23 15:12:55 +02:00
Sebastian Huber
e90b1dfdda rtems: Create timer implementation header
Move implementation specific parts of timer.h and timer.inl into new
header file timerimpl.h.  The timer.h contains now only the application
visible API.
2013-07-23 15:12:54 +02:00
Sebastian Huber
ecdcf01add rtems: Create ratemon implementation header
Move implementation specific parts of ratemon.h and ratemon.inl into
new header file ratemonimpl.h.  The ratemon.h contains now only the
application visible API.
2013-07-23 15:12:54 +02:00
Sebastian Huber
562815cf0b rtems: Create dpmem implementation header
Move implementation specific parts of dpmem.h and dpmem.inl into new
header file dpmemimpl.h.  The dpmem.h contains now only the application
visible API.
2013-07-23 15:12:54 +02:00
Sebastian Huber
e151eb1a36 rtems: Create event implementation header
Move implementation specific parts of event.h, event.inl, eventset.h and
eventset.inl into new header file eventimpl.h.  The event.h contains now
only the application visible API.
2013-07-23 15:12:53 +02:00
Sebastian Huber
faa2f8c4e9 rtems: Create status implementation header
Move implementation specific parts of status.h and status.inl into new
header file statusimpl.h.  The status.h contains now only the
application visible API.
2013-07-23 15:12:52 +02:00
Sebastian Huber
ac252bdce0 sapi: Create extension implementation header
Move implementation specific parts of extension.h and extension.inl into
new header file extensionimpl.h.  The extension.h contains now only the
application visible API.
2013-07-23 15:12:51 +02:00
Sebastian Huber
2445bda1db sapi: Merge rbtree API into one file 2013-07-23 15:12:51 +02:00
Sebastian Huber
98c7eacaaa sapi: Merge timespec API into one file 2013-07-23 15:12:51 +02:00
Sebastian Huber
b5ffa5e136 sapi: Merge CBS API into one file 2013-07-23 15:12:51 +02:00
Sebastian Huber
b1564cc164 sapi: Merge chain implementation into one file 2013-07-22 16:57:27 +02:00
Sebastian Huber
4b48ece07d score: Create watchdog implementation header
Move implementation specific parts of watchdog.h and watchdog.inl into
new header file watchdogimpl.h.  The watchdog.h contains now only the
application visible API.
2013-07-22 16:57:25 +02:00
Sebastian Huber
6e93dc4a95 score: Create chain implementation header
Move implementation specific parts of chain.h and chain.inl into new
header file chainimpl.h.  The chain.h contains now only the application
visible API.
2013-07-22 16:57:25 +02:00
Sebastian Huber
eb448eece9 posix: Create spinlock implementation header
Move implementation specific parts of spinlock.h and spinlock.inl into
new header file spinlockimpl.h.  The spinlock.h contains now only the
application visible API.
2013-07-22 16:57:24 +02:00
Sebastian Huber
f17c779828 posix: Create timer implementation header
Move implementation specific parts of timer.h and timer.inl into new
header file timerimpl.h.  The timer.h contains now only the application
visible API.
2013-07-22 16:57:24 +02:00
Sebastian Huber
0e8656b49e posix: Create rwlock implementation header
Move implementation specific parts of rwlock.h and rwlock.inl into new
header file rwlockimpl.h.  The rwlock.h contains now only the
application visible API.
2013-07-22 16:57:23 +02:00
Sebastian Huber
0c5317d16c posix: Create pthread implementation header
Move implementation specific parts of pthread.h and pthread.inl into new
header file pthreadimpl.h.  The pthread.h contains now only the
application visible API.
2013-07-22 16:57:23 +02:00
Sebastian Huber
97552c98b6 posix: Create priority implementation header
Move implementation specific parts of priority.h and priority.inl into
new header file priorityimpl.h.  Remove priority.h since there is no
application visible API.
2013-07-22 16:57:23 +02:00
Sebastian Huber
35210b128c posix: Create condition variable impl header
Move implementation specific parts of cond.h and cond.inl into new
header file condimpl.h.  The cond.h contains now only the application
visible API.
2013-07-22 16:57:22 +02:00
Sebastian Huber
6b4a3770cd posix: Create barrier implementation header
Move implementation specific parts of barrier.h and barrier.inl into new
header file barrierimpl.h.  The barrier.h contains now only the
application visible API.
2013-07-22 16:57:21 +02:00
Sebastian Huber
0b32bb8042 rtems: Create barrier implementation header
Move implementation specific parts of barrier.h and barrier.inl into new
header file barrierimpl.h.  The barrier.h contains now only the
application visible API.
2013-07-22 16:57:21 +02:00
Sebastian Huber
972a5c5f94 posix: Create message queue implementation header
Move implementation specific parts of mqueue.h and mqueue.inl into new
header file mqueueimpl.h.  The mqueue.h contains now only the
application visible API.
2013-07-22 16:56:59 +02:00
Sebastian Huber
993a888dfd rtems: Create message queue implementation header
Move implementation specific parts of message.h and message.inl into new
header file messageimpl.h.  The message.h contains now only the
application visible API.
2013-07-22 16:56:58 +02:00
Sebastian Huber
9c743e8e72 posix: Create semaphore implementation header
Move implementation specific parts of semaphore.h and semaphore.inl into
new header file semaphoreimpl.h.  The semaphore.h contains now only the
application visible API.
2013-07-22 16:56:57 +02:00
Sebastian Huber
05e82bd76b score: Error for non-preemptible tasks on SMP
A common use case for disabled preemption was to ensure mutual exclusion
on single-processor configurations.  On SMP this does not work.

To abandon non-preemptible tasks simplifies the scheduler.
2013-07-22 16:46:01 +02:00
Sebastian Huber
f913c796ff sapi: Add rtems_configuration_is_smp_enabled()
Add a configuration field which indicates if the SMP mode of operation
is enabled.  This can be used to disable features unsupported on SMP,
e.g task variables.
2013-07-22 16:46:01 +02:00
Sebastian Huber
f9d533a5f3 posix: Create mutex implementation header
Move implementation specific parts of mutex.h and mutex.inl into new
header file muteximpl.h.  The mutex.h contains now only the application
visible API.
2013-07-18 09:58:57 +02:00
Sebastian Huber
2bbea657ae rtems: Create semaphore implementation header
Move implementation specific parts of sem.h and sem.inl into new header
file semimpl.h.  The sem.h contains now only the application visible
API.
2013-07-18 09:58:56 +02:00
Sebastian Huber
9c9b62d8dd score: Changes due to Newlib __DYNAMIC_REENT__
Delete _Thread_libc_reent and add __getreent() instead according to
__DYNAMIC_REENT__ define.

For SMP configurations __DYNAMIC_REENT__ must be defined.

A Newlib including the following patch is required:

2013-07-09  Sebastian Huber  <sebastian.huber@embedded-brains.de>

	* libc/include/sys/config.h (__DYNAMIC_REENT__): Define for RTEMS.
2013-07-17 13:09:49 +02:00
Sebastian Huber
a936aa49b5 scheduler: New simple SMP scheduler implementation
The new Simple SMP Scheduler allocates a processor for the processor
count highest priority ready threads.  The thread priority and position
in the ready chain are the only information to determine the scheduling
decision.  Threads with an allocated processor are in the scheduled
chain.  After initialization the scheduled chain has exactly processor
count nodes.  Each processor has exactly one allocated thread after
initialization.  All enqueue and extract operations may exchange threads
with the scheduled chain.  One thread will be added and another will be
removed.  The scheduled and ready chain is ordered according to the
thread priority order.  The chain insert operations are O(count of ready
threads), thus this scheduler is unsuitable for most real-time
applications.

The thread preempt mode will be ignored.
2013-06-14 16:26:08 +02:00
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
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
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
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
Sebastian Huber
b7cf1ff717 libcsupport: Delete libc_wrapup()
Add and use rtems_libio_exit_helper.  Add rtems_libio_exit().

The fclose(stdin) etc. makes no sense during exit.  This would use the
_REENT structure of the thread calling _exit().
2013-04-26 10:57:08 +02:00
Sebastian Huber
5fa0e5c5ec libcsupport: Rename open_dev_console()
Rename open_dev_console() to rtems_libio_post_driver().  Rename
rtems_libio_supp_helper to rtems_libio_post_driver_helper.
2013-04-26 10:57:08 +02:00
Sebastian Huber
a290fbe946 libcsupport: Make LibIO helper const
Add and use rtems_libio_helper function type.  Add and use
rtems_libio_helper_null() instead of NULL pointer.
2013-04-26 10:57:08 +02:00
Sebastian Huber
10e348ab7d sapi: Fix warnings 2013-04-23 09:59:57 +02:00
Sebastian Huber
dc76d98a53 sapi: Fix unified workspace option 2013-04-11 13:57:10 +02:00
Joel Sherrill
6784547afd confdefs.h: Only one clock or timer configuration parameter can be defined
Only one of the following can be defined.

+ CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
+ CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
+ CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER

Otherwise it is a configuration error which can be detected at
compilation time.
2013-04-09 13:15:40 -05:00
Joel Sherrill
92b33b8d09 confdefs.h: Eliminate BSP_DEFAULT_UNIFIED_WORK_AREAS
This was not used by any BSP and obsolete now that unified memory
is an option for all BSPs.
2013-04-09 13:15:39 -05:00
Andreas Heinig
5f745464fc Fixed 2 compiler warnings 2013-03-19 15:13:54 +01:00
Sebastian Huber
7571a235c5 sapi: PR1911: Add CONFIGURE_DISABLE_BSP_SETTINGS 2013-02-12 09:31:27 +01:00
Sebastian Huber
68f36d144a score: Add and use rtems_assert_context 2013-02-12 09:31:27 +01:00
Joel Sherrill
e858f7049c cpukit: Fix many Doxygen warnings 2013-01-10 17:06:47 -06:00
Joel Sherrill
b697bc6a44 cpukit: Use Consistent Beginning of Doxygen Group Notation
This is the result of a sed script which converts all uses
of @{ into a consistent form.
2013-01-10 17:06:47 -06:00
Joel Sherrill
a15eaaf9fd cpukit: Doxygen group fixes and many warnings addressed
The output of the modules.html is much improved. Most
filesystem and POSIX API related groups are properly nested.
Some formatting issues were addressed as were multiple
inconsistencies.
2013-01-10 17:06:47 -06:00
Sebastian Huber
e82fcb44d5 sapi: Documentation 2013-01-09 20:42:58 +01:00