Commit Graph

3323 Commits

Author SHA1 Message Date
Sebastian Huber
ec987ec00a sptests/spintrcritical20: PR2140: New test 2013-08-23 12:56:19 +02:00
Sebastian Huber
396f6442e1 psxtests/psxfatal0[12]: Update due to API changes 2013-08-23 12:54:03 +02:00
Sebastian Huber
38ec8afe72 libtests/flashdisk01: Update screen file 2013-08-23 09:24:00 +02:00
Chris Johns
6e4c01e3a2 posix: Update to the pthread_once changes.
Implement the reeview changes.
Add a POSIX Fatal error domain.
Fix confdefs.h to correctly handle the internal POSIX mutexes.
2013-08-23 14:56:36 +10:00
Sebastian Huber
518d82b6d3 smp: Disable restart of threads other than self 2013-08-20 11:03:38 +02:00
Sebastian Huber
99b35052ae smp: Add Deterministic Priority SMP Scheduler 2013-08-20 10:17:35 +02:00
Sebastian Huber
aea4a91993 smp: Optimize Simple SMP scheduler
Add Thread_Control::is_in_the_air field if configured for SMP.  This
helps to simplify the extract operation and avoids superfluous
inter-processor interrupts.  Move the processor allocation step into the
enqueue operation.

Add and use _Scheduler_simple_smp_Get_highest_ready().  Add and use
_Scheduler_SMP_Get_lowest_scheduled().
2013-08-20 10:14:04 +02:00
WeiY
6931037e1d correct memory model in smpatomic test case 2013-08-19 14:35:38 +02:00
Zhongwei Yao
39a6e4ea69 Fix a bug in spfreechain01 test case. 2013-08-11 19:22:47 +02:00
Sebastian Huber
806f84c8ee smptests/smpswitchextension01: Fix start sequence
Start the toggler after the context is initialized.
2013-08-09 23:02:45 +02:00
Sebastian Huber
d19cce29dc score: Per-CPU thread dispatch disable level
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).
2013-08-09 23:02:38 +02:00
Sebastian Huber
ef3c17fb89 sptests/spintrcritical19: Typos 2013-08-08 14:22:07 +02:00
Sebastian Huber
6b0cd960e5 sptests/spintrcritical19: PR2136: New test 2013-08-08 14:11:23 +02:00
Sebastian Huber
c8670f50d7 smptests/smpmigration01: Fix start sequence
Start the runner after the context is initialized.
2013-08-08 14:11:23 +02:00
Sebastian Huber
ae75429ca1 PR766: Delete __RTEMS_VIOLATE_KERNEL_VISIBILITY__ 2013-08-08 14:11:22 +02:00
Chris Johns
2f9cef8819 Check times with a no change truncate via open.
The open path should update the times even if the truncate does not
change the size.
2013-08-08 08:11:57 +10:00
Sebastian Huber
9ff70db89f psxtests/psx14: Include missing header file 2013-08-06 15:47:56 +02:00
Sebastian Huber
03a5a8a8d8 sptests/spintrcritical17: Increase tick interval
This helps to complete the test in case the compiler optimization is
disabled.
2013-08-06 15:47:56 +02:00
Zhongwei Yao
b5c906429f Unlimited objects support for POSIX keys
This patch enables unlimited model in POSIX key manger and have a decent
runtime on POSIX key searching, adding and deleting operations.  Memory
overhead is lower than current implementation when the size of key and key
value becomes big.
2013-08-06 14:11:38 +02:00
Sebastian Huber
015bd1b818 smptests/smp07: Use suspend instead of delete 2013-08-06 11:03:11 +02:00
Sebastian Huber
25d921e435 sptests/sp37: Add ISR level test for new threads 2013-08-05 17:31:35 +02:00
Sebastian Huber
da831d06fd sptests/sp37: Add ISR set/get level tests 2013-08-05 13:45:37 +02:00
Sebastian Huber
20bb89d3eb smptests/smpswitchextension01: New test 2013-08-05 13:45:37 +02:00
Sebastian Huber
b9000fd571 smptests/smpmigration01: New test 2013-08-05 13:45:36 +02:00
Cynthia Rempel
ae39df4430 sptests/spfreechain01: Fix Makefile.am 2013-08-04 15:11:16 +02:00
WeiY
693088951d clean up spatomic testcase 2013-08-01 16:48:25 +02:00
Sebastian Huber
f031df0e63 score: Rename tod.h to todimpl.h 2013-08-01 16:45:45 +02:00
Sebastian Huber
8d640134ba score: ISR lock API changes 2013-08-01 16:45:45 +02:00
Sebastian Huber
1e51fa5f4d score: Add and use _Thread_Update_cpu_time_used()
Fix _times().
2013-08-01 16:45:44 +02:00
Sebastian Huber
09c00eea70 tmtests/tm27: Fixes for RTEMS_DEBUG 2013-08-01 16:45:44 +02:00
Sebastian Huber
2d915cf389 score: Add and use ISR locks
ISR locks are low-level locks to protect critical sections accessed by
threads and interrupt service routines.

On single processor configurations the ISR locks degrade to simple ISR
disable/enable sequences.  No additional storage or objects are
required.

This synchronization primitive is supported on SMP configurations.  Here
SMP locks are used.
2013-07-31 15:09:04 +02:00
Sebastian Huber
f20275db90 sptests/sp37: Improved interrupt lock tests 2013-07-31 15:09:04 +02:00
Sebastian Huber
e31a9c8b0d tmtests/tm26: Fixes for RTEMS_DEBUG 2013-07-31 15:09:04 +02:00
Sebastian Huber
876dcd02e0 smptests/smppsxsignal01: New test 2013-07-30 09:53:24 +02:00
Sebastian Huber
d4f13d1479 smptests/smpsignal01: New test 2013-07-30 09:53:24 +02:00
Sebastian Huber
fe52e7c07c smp: Add and use _Per_CPU_Get()
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.
2013-07-30 09:53:23 +02:00
Sebastian Huber
7c8830c787 testsuites: Include missing header files 2013-07-28 14:00:19 +02:00
Sebastian Huber
ede5a2a4d5 libtests/malloc04: Fixes for RTEMS_DEBUG 2nd try 2013-07-26 14:00:00 +02:00
Sebastian Huber
88c74ab115 score: Merge tod implementation into one file
Delete TOD_MICROSECONDS_PER_SECOND, TOD_MICROSECONDS_TO_TICKS() and
TOD_MILLISECONDS_TO_TICKS().
2013-07-26 11:55:47 +02:00
Sebastian Huber
a2e3f33f39 score: Create object implementation header
Move implementation specific parts of object.h and object.inl into new
header file objectimpl.h.  The object.h contains now only the
application visible API.
2013-07-26 11:55:47 +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
a1123646ac score: Create threadq implementation header
Move implementation specific parts of tqdata.h, threadq.h and
threadq.inl into new header file threadqimpl.h.  The threadq.h contains
now only the application visible API.

Delete tqdata.h.
2013-07-26 11:55:45 +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
044f317aac libtests/malloc04: Fixes for RTEMS_DEBUG 2013-07-26 11:55:37 +02:00
Zhongwei Yao
8fb2bea426 score: Add freechain 2013-07-24 11:11:21 +02:00
Sebastian Huber
39046f766f score: Merge sysstate API into one file 2013-07-24 11:11:21 +02:00
Sebastian Huber
b7cf09c305 libtests/malloctest: Fixes for RTEMS_DEBUG 2013-07-24 11:11:21 +02:00
Sebastian Huber
218286bc05 score: Create stack implementation header
Move implementation specific parts of stack.h and stack.inl into new
header file stackimpl.h.  The stack.h contains now only the application
visible API.
2013-07-23 17:19:08 +02:00
Sebastian Huber
e6f7f81766 score: Create heap implementation header
Move implementation specific parts of heap.h and heap.inl into new
header file heapimpl.h.  The heap.h contains now only the application
visible API.
2013-07-23 17:19:08 +02:00