| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Start the toggler after the context is initialized.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use a per-CPU thread dispatch disable level. So instead of one global
thread dispatch disable level we have now one instance per processor.
This is a major performance improvement for SMP. On non-SMP
configurations this may simplifiy the interrupt entry/exit code.
The giant lock is still present, but it is now decoupled from the thread
dispatching in _Thread_Dispatch(), _Thread_Handler(),
_Thread_Restart_self() and the interrupt entry/exit. Access to the
giant lock is now available via _Giant_Acquire() and _Giant_Release().
The giant lock is still implicitly acquired via
_Thread_Dispatch_decrement_disable_level().
The giant lock is only acquired for high-level operations in interrupt
handlers (e.g. release of a semaphore, sending of an event).
As a side-effect this change fixes the lost thread dispatch necessary
indication bug in _Thread_Dispatch().
A per-CPU thread dispatch disable level greatly simplifies the SMP
support for the interrupt entry/exit code since no spin locks have to be
acquired in this area. It is only necessary to get the current
processor index and use this to calculate the address of the own per-CPU
control. This reduces the interrupt latency considerably.
All elements for the interrupt entry/exit code are now part of the
Per_CPU_Control structure: thread dispatch disable level, ISR nest level
and thread dispatch necessary. Nothing else is required (except CPU
port specific stuff like on SPARC).
|
|
|
|
| |
Start the runner after the context is initialized.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Add and use _Per_CPU_Get_by_index() and _Per_CPU_Get_index(). Add
_Per_CPU_Send_interrupt(). This avoids direct access of
_Per_CPU_Information.
|
| |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Task variables are not supported on SMP.
|
|
|
|
| |
Task deletion is currently not implemented on SMP configurations.
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Add and use _SMP_Get_current_processor() and
rtems_smp_get_current_processor().
Delete bsp_smp_interrupt_cpu().
Change type of current processor index from int to uint32_t to match
_SMP_Processor_count type.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Rename in rtems_smp_get_processor_count(). Always provide
<rtems/score/smp.h> and <rtems/rtems/smp.h>. Add
_SMP_Get_processor_count(). This function will be a compile time
constant defined to be one on uni-processor configurations. This allows
iterations over all processors without overhead on uni-processor
configurations.
|
| |
|
|
|
|
|
| |
In case the printf() blocks on a semaphore it was possible to end up in
a livelock.
|
| |
|
| |
|
|
|
|
| |
The locked print needs one semaphore.
|
|
|
|
|
|
|
|
|
| |
This commit deletes all RTEMS ChangeLog files. These files have been abandoned
since converting to git version control. The historical data may be recovered
by checking out any commit before this one. Most of the contents of these
ChangeLog files can also be found in the git log.
Two external ChangeLog files, ChangeLog.slac and ChangeLog.zlib, remain.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
See http://www.rtems.org/pipermail/rtems-devel/2012-May/001006.html
for details.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
PR 1589/build
* smp01/Makefile.am, smp02/Makefile.am, smp03/Makefile.am,
smp04/Makefile.am, smp05/Makefile.am, smp06/Makefile.am,
smp07/Makefile.am, smp08/Makefile.am, smp09/Makefile.am: Remove
obsolete optional manager capability.
|
|
|
|
|
| |
* smp05/init.c, smp06/init.c, smp07/init.c, smp09/init.c:
Add HAVE_CONFIG_H.
|
|
|
|
|
|
|
|
| |
* smp03/init.c, smp03/system.h, smp03/tasks.c: Modified test to force a
task to run prior to starting the next task. This allows the last
task to always preempt, where if the tasks started in an odd order
the last task could run prior the the task it was supposed to
preempt.
|
|
|
|
|
|
|
|
| |
* smp01/init.c, smp02/init.c, smp02/tasks.c, smp03/init.c,
smp03/tasks.c, smp04/Makefile.am, smp04/init.c, smp05/init.c,
smp06/init.c, smp07/init.c, smp08/init.c: Cleaned up tests and fixed
some print statement problems.
* smp04/tasks.c: Removed.
|
|
|
|
|
|
| |
* smp01/smp01.doc, smp02/smp02.doc, smp03/smp03.doc, smp04/smp04.doc,
smp05/smp05.doc, smp07/smp07.doc, smp08/smp08.doc, smp08/system.h,
smp08/tasks.c: Update copyright.
|
|
|
|
| |
* .cvsignore: New file.
|
|
* .configure.ac.swp, ChangeLog, Makefile.am, README, config.h.in,
configure.ac, smp01/.cvsignore, smp01/Makefile.am, smp01/init.c,
smp01/smp01.doc, smp01/smp01.scn, smp01/system.h, smp01/tasks.c,
smp02/.cvsignore, smp02/Makefile.am, smp02/init.c, smp02/smp02.doc,
smp02/smp02.scn, smp02/system.h, smp02/tasks.c, smp03/.cvsignore,
smp03/Makefile.am, smp03/init.c, smp03/smp03.doc, smp03/smp03.scn,
smp03/system.h, smp03/tasks.c, smp04/.cvsignore, smp04/Makefile.am,
smp04/init.c, smp04/smp04.doc, smp04/smp04.scn, smp04/system.h,
smp04/tasks.c, smp05/.cvsignore, smp05/Makefile.am, smp05/init.c,
smp05/smp05.doc, smp05/smp05.scn, smp06/.cvsignore,
smp06/Makefile.am, smp06/init.c, smp06/smp06.doc, smp06/smp06.scn,
smp07/.cvsignore, smp07/Makefile.am, smp07/init.c, smp07/smp07.doc,
smp07/smp07.scn, smp08/.cvsignore, smp08/Makefile.am, smp08/init.c,
smp08/smp08.doc, smp08/smp08.scn, smp08/system.h, smp08/tasks.c,
smp09/.cvsignore, smp09/Makefile.am, smp09/init.c, smp09/smp09.doc,
smp09/smp09.scn: New files.
|