Commit Graph

88 Commits

Author SHA1 Message Date
Alexander Krutwig
7cd2484c4c timecounter: Use in RTEMS
Replace timestamp implementation with FreeBSD bintime and timecounters.

New test sptests/sptimecounter02.

Update #2271.
2015-05-20 08:40:33 +02:00
Daniel Hellstrom
e7fade3ac4 DRVMGR: added driver manager to cpukit/libdrvmgr 2015-04-17 01:10:16 +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
Chris Johns
c49985691f Change all references of rtems.com to rtems.org. 2014-03-21 08:10:47 +11:00
Sebastian Huber
51f823c932 posix: Use interal mutex for once implementation
Enable pthread_once() for all configurations.  The pthread_once()
function is one means to initialize POSIX keys.  Another use case is the
C++ support.
2014-03-19 08:34:26 +01:00
Joel Sherrill
e6c87f7872 POSIX keys now enabled in all configurations.
Formerly POSIX keys were only enabled when POSIX threads
were enabled. Because they are a truly safe alternative
to per-task variables in an SMP system, they are being
enabled in all configurations.
2014-03-07 13:21:11 -06:00
Jennifer Averett
039a189de1 sapi: Moved smp initialization and added cpuset initilization.
SMP must be initialized in order to know the current set of
cores available. Without this, you cannot initialize the
default cpu_set_t associated with Classic API tasks and
POSIX threads.
2014-03-07 09:09:01 -06:00
Sebastian Huber
7336be9d78 score: SMP initialization and shutdown changes
Rename _SMP_Request_other_cores_to_perform_first_context_switch() into
_SMP_Request_start_multitasking() since this requests now a multitasking
start on all configured and available processors.  The name corresponds
_Thread_Start_multitasking() and
_SMP_Start_multitasking_on_secondary_processor() actions issued in
response to this request.  Move in source file to right place.

Rename PER_CPU_STATE_READY_TO_BEGIN_MULTITASKING into
PER_CPU_STATE_READY_TO_START_MULTITASKING.

Rename PER_CPU_STATE_BEGIN_MULTITASKING into
PER_CPU_STATE_REQUEST_START_MULTITASKING.

Rename _SMP_Request_other_cores_to_shutdown() into
_SMP_Request_shutdown().

Add a per-CPU state lock to protect all changes.  This was necessary to
offer a controlled shutdown of the system (atomic read/writes alone are
not sufficient for this kind of synchronization).

Add documentation for Per_CPU_State.

Delete debug output.

New tests smptests/smpfatal01 and smptests/smpfatal02.
2014-03-06 09:43:57 +01:00
Sebastian Huber
6ca4f6af8a score: Add and use <rtems/score/smpimpl.h>
Collect SMP implementation specific parts in the
<rtems/score/smpimpl.h> header file.
2014-02-19 09:59:41 +01:00
Sebastian Huber
514705d2f1 score: Delete _Thread_BSP_context
Do not return to BSP context in the exit() shutdown path.  This makes it
possible to re-use the initialization stack.  It can be used for the
interrupt stack for example.  On targets with a small RAM this is a
considerable benefit.

This change eliminates also some special cases and simplifies the code.

Delete _Thread_Set_global_exit_status(),
_Thread_Get_global_exit_status() and _Thread_Stop_multitasking().
2014-02-19 09:59:39 +01:00
Sebastian Huber
c1a356e9f8 score: _Priority_bit_map_Handler_initialization()
Delete _Priority_bit_map_Handler_initialization() and rely on BSS
initialization.  Move definition of _Priority_Major_bit_map and
_Priority_Bit_map to separate file.  Move definition of __log2table also
to this file.
2013-08-20 10:14:03 +02:00
Sebastian Huber
b4b309c559 smp: Generalize _Thread_Start_multitasking()
Add context parameter to _Thread_Start_multitasking() and use this
function in rtems_smp_secondary_cpu_initialize().  This avoids
duplication of code.

Fix missing floating point context initialization in
rtems_smp_secondary_cpu_initialize().  Now performed via
_Thread_Start_multitasking().
2013-08-05 13:45:36 +02:00
Sebastian Huber
2bca05f7d7 score: Delete SYSTEM_STATE_BEGIN_MULTITASKING
Nothing happened between the SYSTEM_STATE_BEGIN_MULTITASKING to
SYSTEM_STATE_UP transition.
2013-08-05 13:45:36 +02:00
Sebastian Huber
f031df0e63 score: Rename tod.h to todimpl.h 2013-08-01 16:45:45 +02:00
Sebastian Huber
7f04cb18ff score: Create mpci implementation header
Move implementation specific parts of mpci.h into new header file
mpciimpl.h.  The mpci.h contains now only the application visible API.
2013-07-26 11:55:46 +02:00
Sebastian Huber
5618c37a7a score: Create thread implementation header
Move implementation specific parts of thread.h and thread.inl into new
header file threadimpl.h.  The thread.h contains now only the
application visible API.

Remove superfluous header file includes from various files.
2013-07-26 11:55:44 +02:00
Sebastian Huber
f0bfd7d81d score: Create prioritybitmap implementation header
Move implementation specific parts of prioritybitmap.h and
prioritybitmap.inl into new header file prioritybitmapimpl.h.  The
prioritybitmap.h contains now only the application visible API.

Move content of bitfield.h into prioritybitmapimpl.h.
2013-07-26 11:55:44 +02:00
Sebastian Huber
c6e21ee18f score: Create scheduler implementation header
Move implementation specific parts of scheduler.h and scheduler.inl into
new header file schedulerimpl.h.  The scheduler.h contains now only the
application visible API.
2013-07-26 11:55:44 +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
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
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
Christopher Kerl
4c98a3ea29 sapi misc: Clean up Doxygen GCI task #1
http://www.google-melange.com/gci/task/view/google/gci2012/8011204
2012-12-07 09:49:54 -05:00
Sebastian Huber
48bff53b3d score: rtems_initialize_start_multitasking()
Do not return from rtems_initialize_start_multitasking() and call
rtems_fatal() instead with a fatal source of RTEMS_FATAL_SOURCE_EXIT and
a fatal code with the exit status.

Remove all bsp_cleanup() functions.  The boot_card() is now a no return
function.
2012-12-07 09:38:41 +01:00
Sebastian Huber
3be0c9afa3 score: Add and use <rtems/score/userextimpl.h>
This file contains the parts of <rtems/score/userext.h> that are only
necessary for the RTEMS implementation.
2012-11-22 16:35:07 +01:00
Sebastian Huber
f536e127be sapi: Use rtems_*_get_user_multiprocessing_table 2012-11-07 15:08:45 +01:00
Sebastian Huber
47a3cd8f73 score: Work area initialization API change
The work areas (RTEMS work space and C program heap) will be initialized
now in a separate step and are no longer part of
rtems_initialize_data_structures().  Initialization is performed with
tables of Heap_Area entries.  This allows usage of scattered memory
areas present on various small scale micro-controllers.

The sbrk() support API changes also.  The bsp_sbrk_init() must now deal
with a minimum size for the first memory chunk to take the configured
work space size into account.
2012-10-25 14:54:06 +02:00
Joel Sherrill
9b4422a251 Remove All CVS Id Strings Possible Using a Script
Script does what is expected and tries to do it as
smartly as possible.

+ remove occurrences of two blank comment lines
  next to each other after Id string line removed.
+ remove entire comment blocks which only exited to
  contain CVS Ids
+ If the processing left a blank line at the top of
  a file, it was removed.
2012-05-11 08:44:13 -05:00
Joel Sherrill
f58ef8ae7a 2011-07-13 Joel Sherrill <joel.sherrilL@OARcorp.com>
PR 1824/cpukit
	* sapi/include/rtems/init.h, sapi/src/exinit.c, sapi/src/exshutdown.c:
	Return exit/shutdown status back to boot_card().
2011-07-13 18:34:22 +00:00
Jennifer Averett
0d5a9f1bb7 2011-04-27 Jennifer Averett <Jennifer.Averett@OARcorp.com>
PR 1784
	* sapi/src/exinit.c, score/Makefile.am, score/preinstall.am,
	score/include/rtems/bspsmp.h, score/src/percpu.c, score/src/smp.c,
	score/src/threadcreateidle.c: Split bspsmp.h into two files smp.h and
	bspsmp.h
	* score/include/rtems/score/smp.h: New file.
2011-04-27 17:18:59 +00:00
Joel Sherrill
e79093acb1 2011-04-04 Joel Sherrill <joel.sherrilL@OARcorp.com>
PR 1773/cpukit
	* sapi/include/confdefs.h, sapi/src/exinit.c,
	score/include/rtems/bspsmp.h, score/src/percpu.c, score/src/thread.c:
	Rename rtems_smp_maximum_processor to
	rtems_configuration_smp_maximum_processor. Eliminate printk().
2011-04-04 16:40:00 +00:00
Joel Sherrill
06dcaf09e6 2011-03-16 Jennifer Averett <jennifer.averett@OARcorp.com>
PR 1729/cpukit
	* configure.ac, sapi/include/confdefs.h, sapi/src/exinit.c,
	score/Makefile.am, score/preinstall.am,
	score/cpu/i386/rtems/score/cpu.h, score/cpu/sparc/cpu_asm.S,
	score/cpu/sparc/rtems/score/cpu.h,
	score/include/rtems/score/basedefs.h,
	score/include/rtems/score/context.h,
	score/include/rtems/score/percpu.h, score/src/percpu.c,
	score/src/thread.c, score/src/threadcreateidle.c: Add next step in
	SMP support. This adds an allocated array of the Per_CPU structures
	to support multiple cpus vs a single instance of the structure which
	is still used if SMP support is disabled. Configuration support is
	also added to explicitly enable or disable SMP. But SMP can only be
	enabled for the CPUs which will support it initially -- SPARC and
	i386. With the stub BSP support, a BSP can be run as a single core
	SMP system from an RTEMS data structure standpoint.
	* aclocal/check-smp.m4, aclocal/enable-smp.m4,
	score/include/rtems/bspsmp.h, score/include/rtems/score/smplock.h,
	score/src/smp.c, score/src/smplock.c: New files.
2011-03-16 20:05:06 +00:00
Joel Sherrill
0faa9dad07 2010-11-24 Gedare Bloom <giddyup44@yahoo.com>
PR 1647/cpukit
	* posix/src/nanosleep.c, posix/src/sched_yield.c,
	rtems/src/taskwakeafter.c, sapi/include/confdefs.h,
	sapi/include/rtems/config.h, sapi/src/exinit.c, score/Makefile.am,
	score/preinstall.am, score/include/rtems/score/prioritybitmap.h,
	score/include/rtems/score/thread.h,
	score/inline/rtems/score/thread.inl, score/src/thread.c,
	score/src/threadchangepriority.c, score/src/threadclearstate.c,
	score/src/threadclose.c, score/src/threadinitialize.c,
	score/src/threadready.c, score/src/threadresume.c,
	score/src/threadsetpriority.c, score/src/threadsetstate.c,
	score/src/threadsettransient.c,	score/src/threadsuspend.c,
	score/src/threadtickletimeslice.c: Refactor scheduler out of thread
	handler to facilitate alternate scheduler implementations.
	* score/src/threadyieldprocessor.c: Removed.
	* score/src/schedulerprioritythreadschedulerupdate.c,
	score/src/schedulerprioritythreadschedulerfree.c,
	score/src/schedulerpriorityblock.c, score/src/scheduler.c,
	score/src/schedulerprioritythreadschedulerallocate.c,
	score/src/schedulerpriorityunblock.c,
	score/src/schedulerpriority.c, score/src/schedulerpriorityyield.c,
	score/include/rtems/score/schedulerpriority.h,
	score/include/rtems/score/scheduler.h,
	score/inline/rtems/score/scheduler.inl,
	score/inline/rtems/score/schedulerpriority.inl: New files.
2010-11-24 15:51:28 +00:00
Joel Sherrill
a55e305ed3 2010-07-29 Gedare Bloom <giddyup44@yahoo.com>
PR 1635/cpukit
	* sapi/src/exinit.c, score/Makefile.am, score/preinstall.am,
	score/include/rtems/score/bitfield.h,
	score/include/rtems/score/priority.h,
	score/include/rtems/score/thread.h,
	score/inline/rtems/score/priority.inl,
	score/inline/rtems/score/thread.inl,
	score/src/threadchangepriority.c, score/src/threadclearstate.c,
	score/src/threadready.c, score/src/threadresume.c,
	score/src/threadsetpriority.c, score/src/threadsetstate.c,
	score/src/threadsettransient.c, score/src/threadsuspend.c:
	Refactoring of priority handling, to isolate the bitmap
	implementation of priorities in the supercore so that priority
	management is a little more modular. This change is in anticipation
	of scheduler implementations that can select how they manage tracking
	priority levels / finding the highest priority ready task. Note that
	most of the changes here are simple renaming, to clarify the use of
	the bitmap-based priority management.
	* score/include/rtems/score/prioritybitmap.h,
	score/inline/rtems/score/prioritybitmap.inl: New files.
2010-07-29 17:52:10 +00:00
Ralf Corsepius
08c3066fa1 Remove RTEMS_ITRON_API conditional blocks. 2010-06-18 03:03:22 +00:00
Joel Sherrill
b99a35a8fc 2009-08-28 Joel Sherrill <joel.sherrill@OARcorp.com>
* libcsupport/src/malloc_initialize.c, sapi/src/exinit.c,
	score/src/threadstartmultitasking.c: Fix spacing.
	* libmisc/stackchk/check.c: Move variable into compiler specific conditional.
2009-08-28 18:26:05 +00:00
Joel Sherrill
27b961a39b 2009-07-03 Joel Sherrill <joel.sherrill@OARcorp.com>
* itron/src/task.c, posix/src/pthread.c, rtems/src/tasks.c,
	sapi/src/exinit.c, score/include/rtems/score/apiext.h,
	score/src/apiext.c: No APIs currently implemented use the
	predriver_hook so disable it until such time as it is used.
2009-07-03 20:25:35 +00:00
Joel Sherrill
562eab5c4e 2009-07-03 Daniel Hellstrom <daniel@gaisler.com>
* sapi/src/exinit.c, score/include/rtems/score/objectmp.h,
	score/src/objectmp.c: Ensure local node number is set early enough in
	MP configurations.
2009-07-03 15:13:47 +00:00
Joel Sherrill
45d107ecfc 2009-02-11 Joel Sherrill <joel.sherrill@oarcorp.com>
* sapi/src/exinit.c: Eliminate _CPU_Thread_dispatch_pointer and passing
	address of _Thread_Dispatch to _CPU_Initialize. Clean up comments.
2009-02-11 21:48:42 +00:00
Joel Sherrill
a0d22251b2 2009-02-11 Joel Sherrill <joel.sherrill@oarcorp.com>
* sapi/src/exinit.c: Interrupts are guaranteed to be disabled by
	boot_card(), do not do it here as well.
2009-02-11 19:30:24 +00:00
Joel Sherrill
584ab9e16e 2008-12-18 Joel Sherrill <joel.sherrill@oarcorp.com>
* rtems/include/rtems/rtems/regionmp.h, sapi/include/rtems/config.h,
	sapi/src/exinit.c, score/Makefile.am,
	score/include/rtems/score/object.h,
	score/include/rtems/score/objectmp.h, score/src/objectmp.c: Eliminate
	Object Handler Initialization routine since it was all for MP
	configurations.
	* score/src/object.c: Removed.
2008-12-18 17:15:13 +00:00
Joel Sherrill
790b50b8da 2008-12-17 Joel Sherrill <joel.sherrill@oarcorp.com>
* sapi/include/rtems/extension.h, sapi/include/rtems/io.h,
	sapi/src/exinit.c, sapi/src/extension.c, sapi/src/io.c,
	score/include/rtems/score/mpci.h, score/include/rtems/score/object.h,
	score/include/rtems/score/thread.h, score/include/rtems/score/tod.h,
	score/include/rtems/score/userext.h,
	score/include/rtems/score/wkspace.h, score/src/coretod.c,
	score/src/mpci.c, score/src/object.c, score/src/thread.c,
	score/src/userext.c, score/src/wkspace.c: Convert SAPI manager and
	SuperCore Handler initialization routines to directly pull parameters
	from configuration table.
2008-12-17 22:46:05 +00:00
Joel Sherrill
aac75d3b9b 2008-12-15 Joel Sherrill <joel.sherrill@oarcorp.com>
* itron/include/rtems/itron/itronapi.h, libmisc/capture/capture.c,
	libmisc/monitor/mon-config.c, libmisc/monitor/mon-driver.c,
	libmisc/monitor/mon-itask.c, libmisc/monitor/mon-mpci.c,
	posix/include/rtems/posix/config.h,
	posix/include/rtems/posix/posixapi.h,
	rtems/include/rtems/rtems/config.h,
	rtems/include/rtems/rtems/rtemsapi.h, rtems/src/taskinitusers.c,
	sapi/include/confdefs.h, sapi/include/rtems/config.h,
	sapi/include/rtems/init.h, sapi/src/exinit.c, sapi/src/itronapi.c,
	sapi/src/posixapi.c, sapi/src/rtemsapi.c, score/src/isr.c,
	score/src/thread.c, score/src/threadcreateidle.c,
	score/src/threadstackallocate.c, score/src/threadstackfree.c,
	score/src/wkspace.c: Eliminate pointers to API configuration tables
	in the main configuration table. Reference the main configuration
	table and the API configuration tables directly using the confdefs.h
	version rather than obtaining a pointer to it. This eliminated some
	variables, a potential fatal error, some unnecessary default
	configuration structures. Overall, about a 4.5% reduction in the code
	size for minimum and hello on the SPARC.
2008-12-15 19:21:01 +00:00
Joel Sherrill
d86ae064a0 2008-05-12 Joel Sherrill <joel.sherrill@OARcorp.com>
* sapi/include/rtems/init.h, sapi/src/exinit.c: Refactored and renamed
	initialization routines to rtems_initialize_data_structures,
	rtems_initialize_before_drivers, rtems_initialize_device_drivers, and
	rtems_initialize_start_multitasking. This opened the sequence up so
	that bootcard() could provide a more robust and flexible framework
	which is easier to explain and understand. This also lays the
	groundwork for sharing the division of available memory between the
	RTEMS workspace and heap and the C library initialization across all
	BSPs.
2008-05-12 18:40:59 +00:00
Joel Sherrill
f5f4566a5f 2008-05-06 Joel Sherrill <joel.sherrill@oarcorp.com>
* sapi/src/exinit.c, score/src/threadstartmultitasking.c: Improve
	comments.
2008-05-06 23:17:07 +00:00
Joel Sherrill
6aa25dac92 2007-12-04 Joel Sherrill <joel.sherrill@OARcorp.com>
* sapi/include/confdefs.h, sapi/include/rtems/config.h,
	sapi/include/rtems/init.h, sapi/src/exinit.c,
	score/include/rtems/system.h, score/src/isr.c: Move
	interrupt_stack_size field from CPU Table to Configuration Table.
	Eliminate CPU Table from all ports. Delete references to CPU Table in
	all forms.
2007-12-04 22:19:19 +00:00
Joel Sherrill
976162a69f 2007-12-03 Joel Sherrill <joel.sherrill@OARcorp.com>
* libcsupport/src/malloc.c, libmisc/monitor/mon-command.c,
	posix/preinstall.am, posix/include/rtems/posix/cond.h,
	posix/include/rtems/posix/mqueue.h,
	posix/include/rtems/posix/mutex.h,
	posix/include/rtems/posix/pthread.h,
	posix/include/rtems/posix/semaphore.h, posix/src/conddestroy.c,
	posix/src/mutexdestroy.c, posix/src/mutexinit.c,
	posix/src/mutexsetprioceiling.c, posix/src/mutexunlock.c,
	sapi/include/confdefs.h, sapi/include/rtems/config.h,
	sapi/include/rtems/init.h, sapi/include/rtems/sptables.h,
	sapi/src/exinit.c, score/include/rtems/system.h,
	score/include/rtems/score/mpci.h, score/src/mpci.c,
	score/src/thread.c, score/src/threadcreateidle.c,
	score/src/threadstackallocate.c, score/src/threadstackfree.c,
	score/src/wkspace.c: Moved most of the remaining CPU Table fields to
	the Configuration Table. This included pretasking_hook,
	predriver_hook, postdriver_hook, idle_task, do_zero_of_workspace,
	extra_mpci_receive_server_stack, stack_allocate_hook, and
	stack_free_hook. As a side-effect of this effort some multiprocessing
	code was made conditional and some style clean up occurred.
2007-12-03 22:23:13 +00:00
Joel Sherrill
922183809e 2007-11-28 Joel Sherrill <joel.sherrill@OARcorp.com>
* sapi/src/exinit.c, score/include/rtems/score/object.h,
	score/include/rtems/score/thread.h, score/src/object.c,
	score/src/thread.c: Conditionally compile out more code that is
	specific to multiprocessor configurations.
2007-11-28 22:04:31 +00:00