Commit Graph

29283 Commits

Author SHA1 Message Date
Sebastian Huber
b7f5e391c0 score: Add _Thread_Exit()
The goal is to make _Thread_Exit() a no-return function in follow up
patches.

Update #2555.
Update #2626.
2016-05-20 07:49:36 +02:00
Sebastian Huber
e753748703 score: Delete redundant thread life enums
This makes it easier to add more states in the future.

Update #2555.
Update #2626.
2016-05-20 07:49:36 +02:00
Sebastian Huber
12a1228c59 psxclassic01: Assume correct pthread_detach()
Update #2714.
2016-05-20 07:49:36 +02:00
Pavel Pisa
8830bfe65b arm/raspberrypi: add cmdline support for rpi bsp. 2016-05-19 13:21:40 +02:00
YANG Qiao
54c197a2af arm/raspberrypi: add VideoCore frame buffer control support 2016-05-19 13:21:40 +02:00
YANG Qiao
33e39d3102 arm/raspberrypi: add VideoCore mailbox support read and write 2016-05-19 13:21:40 +02:00
Pavel Pisa
12582291e0 arm/raspberrypi: add locking around GPIO pin function selection.
This is required if function or direction is changed by some driver
after start of thread multitasking or in interrupts drivers.

There can be problem with calling GPIO function selection before
data section is initialized. But actual ticket lock implementation
seems to be compatible even with memory initialized to zero oven
on SMP.
2016-05-19 13:21:40 +02:00
Pavel Pisa
4b62192f05 arm/raspberrypi: correct GPIO pin function selection.
Original implementation does only bitwise-or with previous register
value for all functions except IN. Switch from one to other function
would lead to incorrect value.
2016-05-19 13:21:40 +02:00
Pavel Pisa
e706a9d17c arm/raspberrypi: ensure that RTEMS application image can be started by U-boot.
The current versions of U-boot start kernel/RTEMS application image
with instruction and data caches enabled and it sets exception
base register to new address after its self-relocation.

        ldr     r0, [r9, #GD_RELOCADDR] /* r0 = gd->relocaddr */
        mcr     p15, 0, r0, c12, c0, 0  /* Set VBAR */

Included changes in bsp_start_hook_0 restore default state to
allow RTEMS image to run after startup from newer U-boot version
on Raspberry Pi.

Clear interrupt enable registers in interrupt controller
to ensure that RTEMS starts from well defined state.
2016-05-19 13:21:40 +02:00
Pavel Pisa
6fbc692fe2 bsps/arm: CP15 support for flush prefetch buffer and table base control. 2016-05-19 13:21:39 +02:00
Sebastian Huber
41ce30a967 SMP: Add Mellor-Crummey and Scott (MCS) lock
Added only for evaluation purposes.  We have to compare the performance
against the ticket lock on the interesting platforms via
smptests/smplock01.

The following GCC shortcoming affects the MCS lock:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66867
2016-05-19 11:50:38 +02:00
Sebastian Huber
26fafd5a2f SMP: Add and use lock statistics helper 2016-05-19 11:50:37 +02:00
Sebastian Huber
a7668b2a88 SMP: Move ticket lock to separate header file 2016-05-19 11:50:35 +02:00
Sebastian Huber
2aae3a7032 SMP: Move lock stats to separate header file 2016-05-19 11:50:34 +02:00
Sebastian Huber
ae0f048ff3 psxtests/psxualarm: Avoid output in signal handler
Avoid output in signal handler to not disturb the timings which are
checked in this test.  Use asserts to ensure proper signal handler
invocations.
2016-05-18 11:11:21 +02:00
Sebastian Huber
3c20d2810a posix: Fix return states of pthread_kill()
POSIX mandates that an error code is returned and not -1 plus errno.

Close #2715.
2016-05-17 13:41:56 +02:00
Sebastian Huber
9d8ee11e55 psxtests/psxcancel: Add pthread_detach() tests
Update #2714.
2016-05-17 10:58:10 +02:00
Sebastian Huber
f014f84eb3 psxtests/psxcancel: Add resource check 2016-05-17 09:41:34 +02:00
Sebastian Huber
adc819ef76 sptests/spthreadlife01: Add self delete test case 2016-05-17 09:02:17 +02:00
Sebastian Huber
9fd72713c9 posix: Fix return status of pthread_cancel()
POSIX recommends ESRCH in case no thread exists for the specified
identifier.

Close #2713.
2016-05-17 08:39:30 +02:00
Sebastian Huber
df23f464be capture: Fix use of per-processor data
Get the current processor index only once and with interrupts disabled.

Close #2707.
2016-05-12 13:24:43 +02:00
Sebastian Huber
d449c12df3 capture: Remove superfluous includes 2016-05-12 13:24:43 +02:00
Sebastian Huber
7bd18697f8 capture: Compact rtems_capture_record_t
Order fields according to alignment to reduce structure internal
padding.
2016-05-12 13:24:42 +02:00
Sebastian Huber
2f11d4a014 capture: Fix buffer allocation and free
Do not use function static variables.  Remove superfluous volatile
qualifiers.  Use proper integer types.

Close #2706.
2016-05-12 13:24:42 +02:00
Sebastian Huber
1379d840a4 smptests/smpcapture02: Adjust for clock changes
Fix overall clock tick count.  Change introduced by
90d8567d34.

Update #2554.
2016-05-12 13:24:42 +02:00
Sebastian Huber
0727760336 rtems: Add rtems_interrupt_lock_interrupt_disable
Update #2707.
2016-05-12 13:24:42 +02:00
Sebastian Huber
ef6f8a8377 score: Avoid Giant lock for scheduler set/get
Update #2555.
2016-05-12 13:24:41 +02:00
Sebastian Huber
8bc6bf28aa posix: Avoid Giant lock for some pthread functions
Avoid Giant lock for pthread_getattr_np(), pthread_setschedparam() and
pthread_getschedparam().  Replace POSIX threads scheduler lock with
thread state lock.

Update #2555.
2016-05-12 13:24:41 +02:00
Sebastian Huber
d995299994 score: Avoid Giant lock _Scheduler_Get_affinity()
Update #2555.
2016-05-12 13:24:41 +02:00
Sebastian Huber
e135271b93 score: Avoid Giant lock _Scheduler_Set_affinity()
Update #2555.
2016-05-12 13:24:41 +02:00
Sebastian Huber
bd12dda405 score: Use thread state lock for current state
In addition protect scheduler of thread by thread state lock.  Enables
use of scheduler per-instance locks.

Update #2555.
2016-05-12 13:24:41 +02:00
Sebastian Huber
11c66437e7 rtems: Avoid Giant lock rtems_task_is_suspended()
Update #2555.
2016-05-12 13:24:40 +02:00
Sebastian Huber
4d76300ae5 rtems: Avoid Giant lock for some task operations
Avoid Giant lock for rtems_task_set_priority(), rtems_task_suspend() and
rtems_task_resume().

Update #2555.
2016-05-12 13:24:40 +02:00
Sebastian Huber
105b4e6fa5 rtems: Use thread state lock for signals 2016-05-12 13:24:40 +02:00
Sebastian Huber
6e4f929296 score: Introduce thread state lock
Update #2556.
2016-05-12 13:24:40 +02:00
Sebastian Huber
af20467ef4 score: Add _Thread_queue_Is_lock_owner()
Add _Thread_queue_Is_lock_owner() in case RTEMS_DEBUG is defined.
2016-05-12 13:24:38 +02:00
Sebastian Huber
d9bb9ebc34 posix: Make _POSIX_signals_Action_handler() static 2016-05-12 13:20:34 +02:00
Sebastian Huber
a0162bf372 mpci: Delete unused region support 2016-05-12 13:20:34 +02:00
Sebastian Huber
3e0bb6734a score: Ensure matching lock acquire and release
Ensure matching lock acquire and release for SMP locks if RTEMS_DEBUG is
defined.
2016-05-12 13:20:34 +02:00
Sebastian Huber
1a9d36b921 score: Add _ISR_lock_Is_owner() 2016-05-12 13:20:34 +02:00
Sebastian Huber
9276fdec2e score: Fix CORE mutex initialization
The priority inheritance and ceiling CORE mutexes wrongly used the FIFO
queueing discipline.  Delete misleading _CORE_mutex_Is_priority().  Bug
introduced by 1e1a91ed11.

Add test sptests/spmutex01, since no existing uni-processor test covered
the thread priority queueing discipline for CORE mutexes.
2016-05-12 13:20:33 +02:00
Sebastian Huber
2b71210f33 Revert "score: Avoid use of uninitialized variable"
Sorry, I should not fix warnings unmindfully.

This reverts commit 35c8efc950.
2016-05-11 16:42:29 +02:00
Sebastian Huber
35c8efc950 score: Avoid use of uninitialized variable
Properly set the needs_help to NULL in _Scheduler_SMP_Enqueue_ordered()
in case the thread is inserted into the ready set.
2016-05-11 16:07:40 +02:00
Chris Johns
c3fd48d09c i386/pc386: Clean out removed functions. 2016-05-11 11:45:02 +10:00
Chris Johns
8cb397b27d i386/pc386: Add x86 debug register support for hardware break points. 2016-05-11 11:45:02 +10:00
Chris Johns
fc138a1027 i386/pc386: EOI the master and slave for slave IRQ signals. 2016-05-11 11:45:02 +10:00
Chris Johns
02ef5d9a05 i386/pc386: Add --ide-disable boot command line option. 2016-05-11 11:45:02 +10:00
Chris Johns
93fb879796 i386/pc386: Fix interrupt support.
Fix the interrupt and stop the spurious interrupt from happening.

The fix moves the EOI to C code and cleans that functionality out
of the asm part of the ISR handler.

The code checks the ISR and IRR registers on the enable.

Only ack the master for a slave IRQ if the slave has no other pending
requests.
2016-05-11 11:45:01 +10:00
Chris Johns
292dbff069 i386/pc386: Fix printk with the console changes. 2016-05-11 11:45:01 +10:00
Chris Johns
beefa11201 bsp/pc386: Use irq-generic. 2016-05-11 11:45:01 +10:00