Commit Graph

27555 Commits

Author SHA1 Message Date
Gregory Nutt
0029c04dad task_restart: Make sure new task starts with pre-emption disabled and not in a critical section. 2016-11-21 07:33:23 -06:00
Gregory Nutt
d83ad6296c Update README 2016-11-20 16:12:58 -06:00
Gregory Nutt
cee8d59b58 Update TODO list 2016-11-20 12:26:08 -06:00
Gregory Nutt
01ade4803a Update README and TODO list 2016-11-20 09:51:54 -06:00
Gregory Nutt
e24f281401 This commit adds a new internal interfaces and fixes a problem with three APIs in the SMP configuration. The new internal interface is sched_cpu_pause(tcb). This function will pause a CPU if the task associated with 'tcb' is running on that CPU. This allows a different CPU to modify that OS data stuctures associated with the CPU. When the other CPU is resumed, those modifications can safely take place.
The three fixes are to handle cases in the SMP configuration where one CPU does need to make modifications to TCB and data structures on a task that could be running running on another CPU.  Those three cases are task_delete(), task_restart(), and execution of signal handles.  In all three cases the solutions is basically the same:  (1) Call sched_cpu_pause(tcb) to pause the CPU on which the task is running, (2) perform the necessary operations, then (3) call up_cpu_resume() to restart the paused CPU.
2016-11-20 07:57:18 -06:00
Gregory Nutt
f5b35e0461 Clarify TODO list 2016-11-19 16:58:25 -06:00
Gregory Nutt
82cd27170b Update TODO list 2016-11-19 16:37:09 -06:00
Gregory Nutt
ac9a11d9ab Update TODO list 2016-11-19 13:31:14 -06:00
Gregory Nutt
6a7619b6f0 Update TODO list 2016-11-19 13:23:15 -06:00
Gregory Nutt
a2aba90252 Update some comments 2016-11-19 11:48:08 -06:00
Gregory Nutt
f40fbaa4b9 sched/task: task_restart() test not supported on SMP systems. This is not fully implemented. 2016-11-19 11:41:05 -06:00
Rajan Gill
0d8e191d69 sched/clock: Correct calculation for the case of Tickless mode with a 32-bit timer. In that case, the calculation was returning millisecond accuracy. That is not good when the timer accuracy is < 1 msec. 2016-11-19 09:55:21 -06:00
Gregory Nutt
439c72e7c8 Refresh all networking configurations due to changes in work-queue related configuration variables for Ethernet drivers. 2016-11-19 09:41:24 -06:00
Gregory Nutt
0804286ad3 arch/: Add option to use low-priority work queue to all Ethernet drivers in arch that support CONFIG_NET_NOINTS. 2016-11-19 09:20:01 -06:00
Gregory Nutt
5ca9128c38 Update comments 2016-11-19 08:33:55 -06:00
Gregory Nutt
ceacacbc63 vfork(): Fix a race condition in the SMP case. Existing logic depended on the fact that the child would not run until waitpid was called because the child had the same priority as the parent. BUT in the SMP case that is not true... the child may run immediately on a different CPU. 2016-11-19 07:30:01 -06:00
Gregory Nutt
0db99b8c89 Trivial fix from review of last PR 2016-11-19 06:52:51 -06:00
Gregory Nutt
8705ce816a Merged in gnagflow/nuttx (pull request #173)
Master
2016-11-19 12:49:56 +00:00
Gregory Nutt
a658dc0f28 Merged in paulpatience/nuttx/stm32 (pull request #172)
STM32: STM32F303xB and STM32F303xC chips have 4 ADCs
2016-11-19 01:52:36 +00:00
Wolfgang Reißnegger
b23c1f8817 Typo fix in sam_udp.c 2016-11-18 17:23:22 -08:00
Wolfgang Reißnegger
5d658a8915 configs/dk-tm4c129x: Typo fix. 2016-11-18 17:23:21 -08:00
Wolfgang Reißnegger
88539a7497 USBMSC: Fix length of mode6 sense reply packet. 2016-11-18 17:23:21 -08:00
Wolfgang Reißnegger
d135246a7d SAM3/4: Remove 'stalled' flag in UDP driver.
The flag is not necessary. The state of the endpoint can be determined
using 'epstate' instead.
2016-11-18 17:23:21 -08:00
Wolfgang Reißnegger
9e349f4335 SAM3/4: Remove unused 'halted' flag in UDP driver. 2016-11-18 17:23:21 -08:00
Wolfgang Reißnegger
c7ef82c546 SAM3/4: Add delay between setting and clearing the endpoint RESET bit in sam_ep_resume().
We need to add a delay between setting and clearing the endpoint reset
bit in SAM_UDP_RSTEP. Without the delay the USB controller will (may?)
not reset the endpoint.

If the endpoint is not being reset, the Data Toggle (DTGLE) bit will
not to be cleared which will cause the next transaction to fail if
DTGLE is 1. If that happens the host will time-out and reset the bus.

Adding this delay may also fix the USBMSC_STALL_RACEWAR in
usbmsc_scsi.c, however this has not been verified yet.
2016-11-18 17:23:21 -08:00
Paul A. Patience
8d9804d57b STM32: STM32F303xB and STM32F303xC chips have 4 ADCs 2016-11-18 19:28:09 -05:00
Gregory Nutt
48d9fff95a Update ChangeLog 2016-11-18 17:18:35 -06:00
Gregory Nutt
69e9f8638d Most interrupt handling logic interacts with tasks via standard mechanism such as sem_post, sigqueue, mq_send, etc. This all call enter_critical_section and are assumed to be safe in the SMP case.
But certain logic interacts with tasks in different ways.  The only one that comes to mind are wdogs.  There is a tasking interface that to manipulate wdogs, and a different interface in the timer interrupt handling logic to manage wdog expirations.

In the normal case, this is fine.  Since the tasking level code calls enter_critical_section, interrupts are disabled an no conflicts can occur.  But that may not be the case in the SMP case.  Most architectures do not permit disabling interrupts on other CPUs so enter_critical_section must work differently:  Locks are required to protect code.

So this change adds locking (via enter_critical section) to wdog expiration logic for the the case if the SMP configuration.
2016-11-18 13:57:30 -06:00
Gregory Nutt
cdbc66addd Merge branch 'master' of bitbucket.org:nuttx/nuttx 2016-11-18 09:30:40 -06:00
Gregory Nutt
936b55f608 drivers/net: Add option to use low-priority work queue to all drivers in drivers/net. Not yet added to all architecture-specific network drivers. 2016-11-18 09:22:49 -06:00
Gregory Nutt
175ec43628 Merged in slorquet/nuttx/timerfixes (pull request #171)
Timerfixes
2016-11-18 14:45:36 +00:00
Gregory Nutt
52560bba37 ENC28J60: Allow either HP or LP work queue to be used. 2016-11-18 08:41:27 -06:00
Sebastien Lorquet
d6813b0e2d Merge branch 'master' into timerfixes 2016-11-18 15:29:44 +01:00
Sebastien Lorquet
ddba6de8bc Add support for timers to nucleo l476 2016-11-18 15:26:31 +01:00
Sebastien Lorquet
5363d0619a Fix warnings 2016-11-18 15:26:08 +01:00
Gregory Nutt
78fd358023 Update some comments. 2016-11-18 08:20:52 -06:00
Gregory Nutt
8602e8a8a9 SMP: irq_csection() has a bad assumption. It assumed that the state of certain variables. That was true on entry into the interrupt handler, but might change to the execution of logic within the interrupt handler. 2016-11-18 07:38:16 -06:00
Gregory Nutt
8e029f019b Update comments 2016-11-17 17:30:12 -06:00
Gregory Nutt
47b52a2633 Fix an error in manually bringing in Sebastien's changes; Update some comments. 2016-11-17 16:15:06 -06:00
Gregory Nutt
9acd57c819 Fix up some naming and update some comments. 2016-11-17 15:50:39 -06:00
Gregory Nutt
558f4049d4 sched/irq/irq_csection: Fix a bad DEBUG assertion when SMP is enabled. 2016-11-17 15:36:27 -06:00
Gregory Nutt
f92afbfbf3 apps/examples/timer: Restore the timer example, but adapt the interface to use the new signal logic from Sebastien, Lorquet. Totally untested and probably does not work! 2016-11-17 15:19:17 -06:00
Gregory Nutt
19c1c9d78b All timer lower half drivers. Port Sebastien's changes to all all other implementations of the timer lower half. Very many just and untested. Expect some problems. 2016-11-17 15:03:31 -06:00
Sebastien Lorquet
197cec58d2 timer driver: Use signal to notify of timer expiration. Add generic argument so that there can be additional usage. 2016-11-17 14:38:21 -06:00
Gregory Nutt
18ad40b98c ARMv7-M: Fix double allocation of MPU region in mmu.h 2016-11-17 13:37:24 -06:00
Gregory Nutt
61bdea1625 Merge remote-tracking branch 'origin/master' into csection 2016-11-17 13:05:36 -06:00
Gregory Nutt
d4a048c0c6 Timer driver: Add hooks to support signal notification of timer expiration. Commented out because invasive interface changes would also be required to complete the implementation. 2016-11-17 12:41:11 -06:00
Gregory Nutt
ecb2d4cbc1 drivers/timer: Remove the TIOC_SETHANDLER IOCTL call. This calls directly from the timer driver into application code. That is non-standard, non-portable, and cannot be supported 2016-11-17 11:52:42 -06:00
Gregory Nutt
10af1e1734 sabre-6quad: Update TODO list 2016-11-17 11:50:58 -06:00
Gregory Nutt
bb19f1b499 spinlocks should be volatile. 2016-11-17 10:04:22 -06:00