Gregory Nutt
eb344d7260
Fix an assertion noted by Jussi Kivilinna.
...
This was a consequence of the recent robust mutex changes. If robust mutexes are selected, then each mutex that a thread takes is retained in a list in threads TCB. If the thread exits and that list is not empty, then we know that the thread exitted while holding mutexes. And, in that case, each will be marked as inconsistent and the any waiter for the thread is awakened.
For the case of pthread_mutex_trywait(), the mutex was not being added to the list! while not usually a fatal error, this was caught by an assertion when pthread_mutex_unlock() was called: It tried to remove the mutex from the TCB list and it was not there when, of course, it shoule be.
The fix was to add pthread_mutex_trytake() which does sem_trywait() and if successful, does correctly add the mutext to the TCB list. This should eliminated the assertion.
2017-03-29 07:50:40 -06:00
Gregory Nutt
941360bf12
Correct some spacing
2017-03-27 10:49:41 -06:00
Gregory Nutt
b07d3fc305
Rename CONFIG_MUTEX_TYPES to CONFIG_PTHREAD_MUTEX_TYPES
2017-03-27 09:08:14 -06:00
Gregory Nutt
f2f798cb29
pthread mutexes: Finish logic to support configuration mutex robustness.
2017-03-27 08:50:45 -06:00
Gregory Nutt
666208cf23
pthread mutexes: Add option to support both unsafe and robust mutexes via pthread_mutexattr_get/setrobust().
2017-03-26 18:37:24 -06:00
Gregory Nutt
8b3c554e45
pthreads: Add a configuration option to disable robust mutexes and revert to the traditional unsafe mutexes.
2017-03-26 17:37:28 -06:00
Gregory Nutt
86ab384d77
Forget to add some files in previous commits
2017-03-26 15:46:19 -06:00
Gregory Nutt
8b23c16b90
pthreads: pthread_mutex_consistent() needs to clear flags.
2017-03-26 14:44:57 -06:00
Gregory Nutt
34c5e1c18f
Minor cleanup from recent changes.
2017-03-26 14:04:07 -06:00
Gregory Nutt
5a69453e16
pthreads: Add some assertions.
2017-03-26 13:54:43 -06:00
Gregory Nutt
fe03ef02c4
when pthread exits or is cancelled, mutexes held by thread are marked inconsistent and the highest priority thread waiting for the mutex is awakened.
2017-03-26 13:37:05 -06:00
Gregory Nutt
6e623ce06f
pthreads: Partial implementation of final part of robust mutexes: Keep list of all mutexes held by a thread in a list in the TCB.
2017-03-26 12:46:57 -06:00
Gregory Nutt
2c37d369ab
pthread: Fix return value of pthread_give/takesemaphore(). Add option to pthread_takesemaphore to ignore EINTR or not.
2017-03-26 11:22:17 -06:00
Gregory Nutt
363403fb1f
pthreads: Add more robustness characteristics: pthread_mutex_lock() and trylock() will now return EOWNERDEAD if the mutex is locked by a thread that no longer exists. Add pthread_mutex_consistent() to recover from this situation.
2017-03-26 10:35:23 -06:00
Gregory Nutt
5fb85451cb
Update some comments
2017-03-22 08:08:43 -06:00
Gregory Nutt
f5a957158d
Review of last PR: Setting CONFIG_SMP_NCPUS=1 should only be permitted in a debug configuration.
2017-03-22 06:29:38 -06:00
Masayuki Ishikawa
a1f0802855
Kconfig: Change the minimum SMP_NCPUS to 1
2017-03-22 10:04:37 +09:00
Gregory Nutt
6893843cc5
sched/semaphore: Fix a warning aout an unused variable when priority inheritance is enabled.
2017-03-21 13:47:56 -06:00
Gregory Nutt
e8e3c2f362
sched/semaphore: Convert strange use of DEBUGASSERT to DEBUGPANIC.
2017-03-21 13:34:17 -06:00
David Sidrane
d76157db7b
sem_holder:Clean up from Review
...
Spelling and backward DEBUGASSERT along with one gem
if (sem->holder[0].htcb != NULL || sem->holder[**1**].htcb != NULL)
2017-03-21 08:03:06 -10:00
David Sidrane
7601a27cee
sem_holder:The logic for the list version is unchanged
2017-03-16 14:16:18 -10:00
David Sidrane
3cc2a4f7c9
sem_holder: Fixes improper restoration of base_priority
...
in the case of CONFIG_SEM_PREALLOCHOLDERS=0
The call to sem_restorebaseprio_task context switches in the
sem_foreachholder(sem, sem_restoreholderprioB, stcb); call
prior to releasing the holder. So the running task is left
as a holder as is the started task. Leaving both slots filled
Thus failing to perforem the boost/or restoration on the
correct tcb.
This PR fixes this by releasing the running task slot prior
to reprioritization that can lead to the context switch.
To faclitate this, the interface to sem_restorebaseprio
needed to take the tcb from the holder prior to the
holder being freed. In the failure case where sched_verifytcb
fails it added the overhead of looking up the holder.
There is also the adfitinal thunking on the foreach to
get from holer to holder->tcb.
An alternate approach could be to leve the interface the same
and allocate a holder on the stack of sem_restoreholderprioB
copy the sem's holder to it, free it as is done in this pr
and and then pass that address sem_restoreholderprio as the
holder. It could then get the holder's tcb but we would
keep the same sem_findholder in sched_verifytcb.
2017-03-15 17:12:45 -10:00
David Sidrane
55fb9645a7
Guard from pend_reprios overlow
2017-03-15 07:42:55 -10:00
David Sidrane
caf8bac7fb
missing semi
2017-03-13 22:54:13 +00:00
David Sidrane
d66fd9f965
semaphore:sem_boostholderprio prevent overrun of pend_reprios
...
The second case rtcb->sched_priority <= htcb->sched_priority
did not check if there is sufficient space in the pend_reprios
array.
2017-03-13 12:34:39 -10:00
David Sidrane
3c00651cfe
semaphore:sem_holder sem_findholder missing inintalization of pholder
...
sem_findholder would fail and code optimization coverd this up.
2017-03-13 11:56:31 -10:00
David Sidrane
4d760c5ea4
semaphore:sem_holder add DEBUGASSERT s
2017-03-13 10:46:26 -10:00
Gregory Nutt
399f306744
A few cosmetic changes
2017-03-11 08:58:42 -06:00
David Sidrane
6cc8f9100b
Priority Inversion fixes:typo
2017-03-10 06:37:46 -10:00
Gregory Nutt
360539afac
Priority inheritance: When CONFIG_SEM_PREALLOCHOLDERS==0, there is only a single, hard-allocated holder structure. This is problem because in sem_wait() the holder is released, but needs to remain in the holder container until sem_restorebaseprio() is called. The call to sem_restorebaseprio() must be one of the last things the sem_wait() does because it can cause the task to be suspended. If in sem_wait(), a new task gets the semaphore count then it will fail to allocate the holder and will not participate in priority inheritance. This fix is to add two hard-allocated holders in the sem_t structure: One of the old holder and one for the new holder.
2017-03-10 09:30:15 -06:00
Gregory Nutt
a93e46d00c
Cosmetic
2017-03-10 08:54:50 -06:00
Gregory Nutt
c976a66f8d
net/drivers/skeleton.c: Back out serialization changes of the last commit. They are not necessary in the skeleton.c example because the calls to net_lock() at the beginning of each worker function will enforce serialization.
2017-03-04 11:33:36 -06:00
Gregory Nutt
b55a98e900
Olimex-STM32-P407: Enable task names
2017-03-04 08:49:24 -06:00
Gregory Nutt
47ebe1e320
Update some comments
2017-03-03 12:48:58 -06:00
Gregory Nutt
e1218c4b4b
Smaller vector tables: Add irq_mapped_t.
2017-03-03 10:20:40 -06:00
Gregory Nutt
04c9ccdd2d
Update TODO list and some Kconfig comments.
2017-03-03 09:20:25 -06:00
Gregory Nutt
c2b620b4f8
Implements support for smaller interrupt tables as described at http://www.nuttx.org/doku.php?id=wiki:howtos:smallvectors . This is largely the work of Mark Schulte. However, I have made several changes to match with the Wiki document. If you like the change, thanks go to Marc. For any errors you can blame me.
2017-03-03 09:20:25 -06:00
Masayuki Ishikawa
d78113e4ad
Revert "CONFIG_START_YEAR/MONTH/DAY not required if an RTC is used"
...
This reverts commit 4035ed8c6c
.
2017-03-03 10:42:10 +09:00
Masayuki Ishikawa
54b1f5ce2a
Merged in masayuki2009/nuttx.nuttx/remove_unused_variable (pull request #233 )
...
Remove unused variable
Approved-by: Gregory Nutt
2017-03-02 12:39:32 +00:00
Gregory Nutt
094795e0ed
Review parameter usage in sigtimedwait(); update some comments.
2017-03-02 06:39:05 -06:00
Masayuki Ishikawa
237e041fba
Remove an unused variable when calling sigwaitinfo()
2017-03-02 13:14:00 +09:00
Masayuki Ishikawa
4043239cfc
Remove an unused variable when calling sigtimedwait()
2017-03-02 13:13:53 +09:00
Gregory Nutt
02b1e1ec1a
Fixes for coding standard: '*' needs to 'snuggle' with following variable name
2017-02-28 18:22:57 -06:00
Gregory Nutt
840c5935a3
Correct a typo from one of the preceding commits.
2017-02-27 11:58:20 -06:00
Mark Schulte
b3222bbc8a
irq_dispatch: Add argument pointer to irq_dispatch
...
Provide a user defined callback context for irq's, such that when
registering a callback users can provide a pointer that will get
passed back when the isr is called.
2017-02-27 06:27:56 -06:00
Gregory Nutt
4dbc0a27c6
pthread_create: g_pthreadname[] is not used if CONFIG_TASK_NAME_SIZE==0.
2017-02-26 18:15:16 -06:00
Gregory Nutt
12a4a58aa6
Update some wdog-related comments
2017-02-24 10:58:37 -06:00
Gregory Nutt
dca77fa06a
sigtimedwait: When timer expires, up_unblock_task() is called. This is okay in the single CPU case because interrupts are disable in the timer interrupt handler. But it is insufficient in the SMP case. enter_ and leave_critical_section() must be called in order to manage spinlocks correctly.
2017-02-24 10:07:23 -06:00
Gregory Nutt
cb7c5f9921
Implement strings.h macros as inline functions when possible for better C++ compatibility.
2017-02-22 10:20:58 -06:00
Gregory Nutt
4f5879f998
C library: Add ffs(). Add strings.h. Move strcasecmp, strncasecmp, bzero, bcmp, and bcopy to where they belong in strings.h.h, not string.h. bzero, bcmp, and bcopy are legacy functions; the contemporary counterparts should be used instead.
2017-02-16 16:10:09 -06:00
Gregory Nutt
74189d84e2
Cancellation points: Fix some backward logic in conditional compilation.
2017-02-02 06:42:41 -06:00
Gregory Nutt
e0f199e42e
Missing semicolon in previous commit
2017-01-31 14:18:20 -06:00
Gregory Nutt
154873a3d0
Timer logic: Add private function prototypes to eliminate a warning; Functions should not be inline because the may recurse.
2017-01-31 13:45:22 -06:00
Gregory Nutt
e30b2617e3
Shared Libs: Implement module based shared libraries for the PROTECTED mode build
2017-01-29 13:03:53 -06:00
Gregory Nutt
2c45f482b1
Module names are not needed in libc/modlib when the module library is used only for shared library support.
2017-01-29 12:23:24 -06:00
Gregory Nutt
86bdd0a4c7
Modules: Move last of many C files from sched/module to libc/modlib
2017-01-29 11:54:54 -06:00
Gregory Nutt
6da66fb5c8
Modules: Move next five of many C files from sched/module to libc/modlib
2017-01-29 11:17:29 -06:00
Gregory Nutt
5e94dd22bb
Modules: Move first five of many C files from sched/module to libc/modlib
2017-01-29 10:05:15 -06:00
Gregory Nutt
00e46b5966
Move gnu-elf.ld from sched/module to libc/modlib. Update paths in Make.defs files to account for new location of file
2017-01-29 09:03:01 -06:00
Gregory Nutt
2717e781f0
libc/modlib: Add build a configuration logic for a shared module library.
2017-01-29 08:55:27 -06:00
Gregory Nutt
b79ca9dcdd
Modules: Move sched/module/module.h to include/nuttx/lib/modlib.h
2017-01-29 08:24:42 -06:00
Gregory Nutt
68a7110195
sched/modules: Add support for dependencies between modules.
2017-01-27 11:43:27 -06:00
Gregory Nutt
6a4880f415
SMP: Fix timer related issues: Round robin and sporadic scheduling were only being performed for tasks running on the CPU that processes the system timer interrupt. Similary, CPU load measurements were only be processed for running on the CPU that receives the sampling interrupt.
2017-01-23 12:14:01 -06:00
Gregory Nutt
4574a1ca42
Modules: Extend the module interface so that we can access symbols exported by the module.
2017-01-22 14:26:22 -06:00
Gregory Nutt
d90e66a024
Kernel Modules: Module initializer may now return a symbol table (not yet used for anything)
2017-01-22 11:37:49 -06:00
Gregory Nutt
1823c78663
Update some comments
2017-01-22 10:17:51 -06:00
Gregory Nutt
686041f8e7
CPU load: Correct computation of the nominal period to use when the source is a oneshot timer.
2017-01-22 07:12:22 -06:00
rg
1e38884088
Fix a compile error: in sched_cpuload.c:Line136, the variables ts and secs are not defined if CONFIG_CPULOAD_ONESHOT_ENTROPY = 0. However, these variables are used regardless of CONFIG_CPULOAD_ONESHOT_ENTROPY at lines~180:onwards.
2017-01-22 06:48:11 -06:00
Gregory Nutt
edd9186540
ELF: Move ARMv7-A and ARMv7-R versions of ELF relocation logic to libc/machine
2017-01-21 14:40:26 -06:00
Gregory Nutt
fba247b119
Update some comments
2017-01-13 16:32:09 -06:00
Gregory Nutt
99bb2dda5d
i.MX6: Corrects behavior of last SMP patch with i.MX6
2017-01-13 12:29:57 -06:00
Gregory Nutt
a51b5b7e17
Add REVISIT to comments.
2017-01-13 09:40:17 -06:00
Gregory Nutt
37e6e6a52e
Eliminate a warning
2017-01-13 06:56:13 -06:00
Gregory Nutt
9ce4022096
SMP: Fix an error in critical section logic when performing a context switch from an interrupt handler. The g_cpu_irqset bit was not being set for the CPU so other CPUs did not know about the critical section.
2017-01-13 06:48:10 -06:00
Masayuki Ishikawa
acbfa47f70
sched_note: Fix spinlock instrumentation
2017-01-12 08:04:28 -06:00
Gregory Nutt
d5b1ca14e2
Update README and some comments.
2017-01-02 13:54:07 -06:00
Gregory Nutt
04557a1198
Eliminate a warning
2016-12-31 14:47:32 -06:00
Gregory Nutt
8f716a386b
SMP: Use irq_cpu_locked() in sched_removereadytorun() and sched_setpriority()
2016-12-29 10:40:58 -06:00
Gregory Nutt
af92a67fc5
SMP: Use irq_cpu_locked() in sched_mergepending()
2016-12-29 08:53:31 -06:00
Gregory Nutt
e7d2b9f0e8
SMP: Move sharable function to common file as irq_cpu_locked(). Use irq_cpu_locked() in sched_unlock()
2016-12-29 08:17:10 -06:00
Gregory Nutt
96394f339e
SMP: Fix a gap where we may try to make modifications to the task lists without being in a critical sections. That permits concurrent access to the tasks lists and many subtle problems. This fix just remains in the critical section throughout the operation (and possible until the task is restore in the event of a context switch). Makes a big difference in stability
2016-12-28 13:58:24 -06:00
Gregory Nutt
88da65ad8a
sched_cpulocked: Avoid use of spinlock. That has been reported to cause a deadlock.
2016-12-28 12:10:17 -06:00
Gregory Nutt
72490f84e6
SMP: Make checks for CPU lock set more robust. There are certains conditions early in initialization on during interrupt handling where things need to be done a little differently.
2016-12-28 10:21:05 -06:00
Gregory Nutt
cfb876263a
SMP: There were certain conditions that we must avoid by preventing releasing the pending tasks while withn a critical section. But this logic was incomplete; there was no logic to prevent other CPUs from adding new, running tasks while on CPU is in a critical section.
...
This commit corrects this. This is matching logic in sched_addreadytorun to avoid starting new tasks within the critical section (unless the CPU is the holder of the lock). The holder of the IRQ lock must be permitted to do whatever it needs to do.
2016-12-27 08:49:07 -06:00
Gregory Nutt
e0f3f4ae19
Update some coments
2016-12-26 16:12:27 -06:00
Gregory Nutt
849a5dc2a9
SMP: Enforce this rule: Tasks which are normally restored when sched_unlock() is called must remain pending (1) if we are in a critical section, i.e., g_cpu_irqlock is locked , or (2) other CPUs still have pre-emption disabled, i.e., g_cpu_schedlock is locked. In those cases, the release of the pending tasks must be deferred until those conditions are met.
2016-12-26 08:15:02 -06:00
Gregory Nutt
d45a81d643
Revert "SMP: Fix a error introduced in 36b676eea6
and fully decouple disabling of pre-emption from critical sections."
...
This reverts commit 9aedf1bdec
.
2016-12-26 07:48:22 -06:00
Gregory Nutt
9aedf1bdec
SMP: Fix a error introduced in 36b676eea6
and fully decouple disabling of pre-emption from critical sections.
2016-12-25 06:54:43 -06:00
Gregory Nutt
efb86382c3
SMP: Back out deferred IRQ locking. This was accidentally merged into master and it looks like it is going to be more work than I thought to get it working again. Changes will go to the irqlock branch.
2016-12-24 19:53:37 -06:00
Gregory Nutt
3af6b2a9a6
Update a comment
2016-12-24 19:01:07 -06:00
Gregory Nutt
f55bad863b
SMP: Fix logic error in last change: Deferred restoration of IRQ lock only applies if the context switch was on this CPU.
2016-12-24 18:52:58 -06:00
Gregory Nutt
36b676eea6
SMP sched_unlock: Should merging depend on g_cpu_irqlock or not? Let's at least be consistent. And don't use irqcount; use g_cpu_irqlock.
2016-12-24 13:45:11 -06:00
Gregory Nutt
d75a7643d0
Fix a trivial typo
2016-12-23 13:01:20 -06:00
Gregory Nutt
e6fff09ef8
Implement deferred IRQ locking. So far only form ARMv7-M.
2016-12-23 07:55:41 -06:00
Gregory Nutt
d648f9c8b4
Add task_testcancel()
2016-12-10 16:34:14 -06:00
Gregory Nutt
f132960789
Add task_setcanceltype()
2016-12-10 16:06:14 -06:00
Gregory Nutt
5fb207eb36
Add task_setcancelstate()
2016-12-10 15:16:46 -06:00
Gregory Nutt
698597a838
task_delete() now obeys all cancellation point semantics.
2016-12-10 14:39:19 -06:00
Gregory Nutt
6997cda1b5
Grrr... cloned typos!
2016-12-10 09:45:55 -06:00
Gregory Nutt
842ec7e612
ifdef out some non-reachable code
2016-12-10 09:43:04 -06:00
Gregory Nutt
b52e4e5ecd
Move cancellation point definitions to their own header file.
2016-12-10 09:08:26 -06:00
Gregory Nutt
bc3ca25cc7
Cancellation points: Close up some logic to eliminte some race conditions.
2016-12-10 08:36:58 -06:00
Gregory Nutt
e62b3bccd3
pthread_setcanceltype() and pthread_testcancel() do not have to be system calls if cancellation points are not enabled.
2016-12-10 07:40:48 -06:00
Gregory Nutt
a0f567f4a3
Update TODO, cosmetic changes, spelling -- US English spells it canceled and canceling vs cancelled and cancelling. No idea why.
2016-12-09 18:39:40 -06:00
Gregory Nutt
018eb7c1d2
Cancellation points no longer depend on EXPERIMENTAL
2016-12-09 17:44:37 -06:00
Gregory Nutt
a76e729b0d
Trivial, cosmetic
2016-12-09 17:27:57 -06:00
Gregory Nutt
113d8bdcca
Fix some SMP-related compilation errors
2016-12-09 17:10:59 -06:00
Gregory Nutt
78cdc9f113
Fix a typo in a debug assertion.
2016-12-09 16:59:10 -06:00
Gregory Nutt
7ee0862e67
Merge remote-tracking branch 'origin/master' into cancelpt
2016-12-09 16:54:15 -06:00
Gregory Nutt
b07964461e
pthread_mutex_destroy(): Fix an error in destorynig a mutex which can occur after a pthread has been canceled while holding the mutex.
2016-12-09 16:53:29 -06:00
Gregory Nutt
7fce8022c6
Finishes all cancellation point logic
2016-12-09 16:50:34 -06:00
Gregory Nutt
d8783a7345
Update Documentation
2016-12-09 14:41:54 -06:00
Gregory Nutt
3eba0acb1c
More cancellation points.
2016-12-09 13:49:36 -06:00
Gregory Nutt
c9ca97b4b5
cancellation points are basically function. More tested is needed and additional cancellation points must be implemented before this can be merged back to master.
2016-12-09 12:01:18 -06:00
Gregory Nutt
018db84567
Flesh out more cancellation point logic.
2016-12-09 10:31:40 -06:00
Gregory Nutt
d35e589d56
Flesh basic cancellation point support
2016-12-09 09:44:23 -06:00
Gregory Nutt
82a79b9c1b
Add framework for cancellation point support.
2016-12-09 08:13:28 -06:00
Gregory Nutt
acaae12e8b
Add pthread_testcancel(), pthread_testcancel(), and definitiions for cancellation types.
2016-12-09 07:23:00 -06:00
Gregory Nutt
6224e47533
pthread cleanup stack: Replace critical section with sched_lock/unlock(). The cleanup stack modification only needs to have the TCB stationary. The stack is never modified from interrupt level logic
2016-12-08 14:33:02 -06:00
Gregory Nutt
ab43681f15
Update TODO and some comments.
2016-12-08 10:24:40 -06:00
Gregory Nutt
a1fbc2ad0d
pthreads: Add pthread_cleanup_push() and pthread_cleanup_pop()
2016-12-08 09:27:13 -06:00
Gregory Nutt
7632dfd6c7
Update some comments.
2016-12-08 07:52:02 -06:00
Gregory Nutt
a7b688e87b
sched notes: Add additional note to see if/when CPU is started in SMP mode.
2016-12-07 09:08:20 -06:00
Gregory Nutt
9ed0387379
Olimex-LPC1766-STK: Enable procfs in NSH configuration. Automount /proc on startup.
2016-12-05 08:52:40 -06:00
Masayuki Ishikawa
13c9031a8d
Fix DEBUGASSERT() in group_signal.c
2016-12-04 06:52:08 -06:00
Gregory Nutt
b78c3fcc30
Finish backing out previous change
2016-11-30 08:13:43 -06:00
Gregory Nutt
e6eb2e8bfa
Back out the last change. I just noticed some complexities that need to be verified before this is released onto the world.
2016-11-30 07:41:48 -06:00
Gregory Nutt
8453343426
scheduler instrumentation: Add a little more protection for the SMP case
2016-11-30 07:24:15 -06:00
Gregory Nutt
9ee3f3b933
sched_note: Permit spinlock and critical section notes in in-memory buffer iff sched_not_get() interfaces is disabled.
2016-11-28 18:36:26 -06:00
Gregory Nutt
00215fbc98
sched_note: Add spinlock instrumentation; In SMP configurations, select to log only notes from certain CPUs
2016-11-28 10:33:46 -06:00
Gregory Nutt
d65be718c2
sched_note: Extend OS instrumentation to include some SMP events.
2016-11-27 17:14:57 -06:00
Gregory Nutt
e3fe320e08
SMP: Add support for linking spinlocks into a special, non-cached memory region.
2016-11-26 08:47:03 -06:00
Gregory Nutt
1d06e786e1
SMP: Clean-up and simplication of logic that I implemented late last night.
2016-11-26 07:05:27 -06:00
Gregory Nutt
a0e1af2614
SMP: Fix yet another potential deadlock
2016-11-25 23:04:27 -06:00
Gregory Nutt
eb9f8074c0
Update comments
2016-11-24 09:56:43 -06:00
Gregory Nutt
7bec4ffeec
Update some comments
2016-11-23 17:40:01 -06:00
Gregory Nutt
d4037a30aa
Update some comments
2016-11-23 13:20:18 -06:00
Gregory Nutt
f90525a5d1
SMP: Update some comments; trivial improvement by inlining static function.
2016-11-22 16:48:57 -06:00
Gregory Nutt
bac7153609
SMP: Add logic to avoid a deadlock condition when CPU1 is hung waiting for g_cpu_irqlock and CPU0 is waitin for g_cpu_paused
2016-11-22 11:34:16 -06:00
Gregory Nutt
130bfa3f6b
Remove a assertion condition that appears to rarely cause false-alarm assertions. Teported by Petteri Aimonen
2016-11-21 14:43:56 -06:00
Gregory Nutt
558784d06f
Spinlocks: Added capability to provide architecture-specific memory barriers. This was for i.MX6 but does not help with the SMP problems. It is still a good feature.
2016-11-21 11:55:59 -06:00
Gregory Nutt
2d1765a014
Remove more of those annoying empty comment blocks.
2016-11-21 07:34:27 -06:00
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
cee8d59b58
Update TODO list
2016-11-20 12:26:08 -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
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
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
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
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
2c314464a8
Fix a typo in a comment
2016-11-17 08:03:45 -06:00
Gregory Nutt
ccdc11d8ff
Fix typo in variable naming. g_cpu_irqset should be g_cpu_irqlock.
2016-11-17 06:37:24 -06:00
Gregory Nutt
1c1564f0c1
Add logic to handled nested calls to enter_critical_section() from interrupts handlers (with SMP).
2016-11-16 22:45:08 -06:00
Gregory Nutt
0c3207e86e
Fix backward logic in an assertion.
2016-11-16 21:48:27 -06:00
Gregory Nutt
16f0b8fa96
Fix typos in DEBUASSERT statements
2016-11-16 19:58:51 -06:00
Gregory Nutt
f1e4951a8d
Fix some comments
2016-11-16 19:11:31 -06:00
Gregory Nutt
4ca653a1cc
Add some experimental changes to enter/leave_critical_section to deal with the case where interrupts are disabled only on the local CPU
2016-11-16 18:28:35 -06:00
Gregory Nutt
5ce3b399d5
Correct some typos in comments
2016-11-15 16:48:40 -06:00
Gregory Nutt
40d7216a22
Back out 65ab12 and parts of 21f92b
2016-11-15 15:44:43 -06:00
Gregory Nutt
6683f01444
Trivial change to comment
2016-11-15 13:38:43 -06:00
Gregory Nutt
21f92ba601
Review some SMP logic; update comments; refresh configuration.
2016-11-15 09:24:00 -06:00
Gregory Nutt
65ab12fbb9
If SMP is enabled, if any interrupt handler calls enter_critical_section(), it should take the spinlock.
2016-11-15 08:37:58 -06:00
Gregory Nutt
b53866c872
sched/irq: Change order for SMP case in enter_critical_section: Disble local interrupts BEFORE taking spinlock.
2016-11-15 07:54:18 -06:00
Freddie Chopin
484a1b6104
sem_wait() and sem_trywait() no longer modify the errno value UNLESS an error occurs. This allows these functions to be used internallly without clobbering the errno value.
2016-11-09 07:01:49 -06:00
Gregory Nutt
120d29b480
Update some Kconfig comments
2016-11-06 09:06:37 -06:00
Heesub Shin
8e94d8e7cc
Signal sent from work_signal() may interrupt the low priority worker thread that is already running. For example, the worker thread that is waiting for a semaphore could be woken up by the signal and break any synchronization assumption as a result. It also does not make any sense to send signal if it is already running and busy. This commit fixes it.
2016-11-06 08:00:12 -06:00
Gregory Nutt
796969f6b6
Update TODO. Provide do-nothing stubs for mutex attribute interfaces if features not enabled. pthread_cond includes a signaling semaphore and should call sem_setprotocol.
2016-11-05 11:06:52 -06:00
Gregory Nutt
6f1c5e7b43
Add some comments.
2016-11-05 09:44:29 -06:00
Gregory Nutt
4b0372e542
Missing # on endif
2016-11-03 21:27:52 -06:00
Gregory Nutt
73fc186beb
sem_setprotocol: Handle a case of missing proxy for sem_setprotocol. Reorder so that (1) this error is avoided, and (2) >No proxy is needed if priority inheritance is not enabled.
2016-11-03 18:51:38 -06:00
Gregory Nutt
0d5bd30943
Fix a type in include file name
2016-11-03 12:58:02 -06:00
Gregory Nutt
4c8ec0d2ca
include/nuttx/semaphore.h: Fix broken macros
2016-11-03 12:49:44 -06:00
Gregory Nutt
1da3a5fa61
sched: Disable priority inheritance on all semaphores used for signaling
2016-11-03 12:42:02 -06:00
Gregory Nutt
97bf82ee05
Semaphores: Provide macros for sem_setprotobol() and sem_getprotocol() if priority inheritance is not enabled. More SEM_PRIO_* definitions to include/nuttx/semaphore.h
2016-11-02 18:21:46 -06:00
Gregory Nutt
d5b4d848d3
Move protoypes for the non-standard include/semaphore.h file to the non-standard include/nuttx/semaphore.h with the other non-standard semaphore interfaces.
2016-11-02 14:43:03 -06:00
Gregory Nutt
b738a646ad
sem_getprotocol() can be in C library
2016-11-02 09:29:16 -06:00
Gregory Nutt
92d3022411
Add pthread_mutexattr_get/set_protocol and non-standard sem_get/set_protocol. These may use to enable or disable priority inheritance on a single semaphore.
2016-11-02 09:05:18 -06:00
Gregory Nutt
4997ec7a1e
ESP32 Core V2: Add an SMP configuration to support development (not yet usable).
2016-10-29 14:56:07 -06:00
Gregory Nutt
e6377641a8
sched/Kconfig: Add ranges to START_YEAR, MONTH, and DAY
2016-10-27 18:04:14 -06:00
Gregory Nutt
123c520db4
Correct time initialization for the case where time is initialized from settings in the .config file. The correct range for month (tm_mon) internally is 0-11, not 1-12 as it is in the .config file.
2016-10-27 08:36:24 -06:00
Gregory Nutt
6a20560ba2
Trivia fix to typo in comment
2016-10-26 12:29:36 -06:00
Gregory Nutt
3e13ed2400
Within the OS, when a thread obtains a semaphore count it must call sem_addholder() if CONFIG_PRIORITY_INHERITANCE is enabled. If a count is available, then sem_wait() calls sem_addholder(), otherwise it waited for the semaphore and called sem_addholder() when it eventually received the count.
...
This caused a problem when the thread calling sem_wait() was very low priority. When it received the count, there may be higher priority threads "hogging" the CPU that prevent the lower priority task from running and, as a result, the sem_addholder() may be delayed indefinitely.
The fix was to have sem_post() call sem_addholder() just before restarting the thread waiting for the semaphore count.
This problem was noted by Benix Vincent who also suggested the solution.
2016-10-26 07:23:15 -06:00
Gregory Nutt
8669183852
sched/pthread and task: When a pthread is started, there is a small bit of logic that will run on the thread of execution of the new pthread. In the case where the new pthread has a lower priority than the parent thread, then this could cause both the parent thread and the new pthread to be blocked at the priority of the lower priority pthread (assuming that CONFIG_PRIORITY_INHERITANCE is not selected).
...
This change temporarily boosts the priority of the new pthread to at least the priority of the new pthread to at least the priority of the parent thread. When that bit of logic has executed on the thread of execution of the new pthread, it will then drop to the correct priority (if necessary) before calling into the new pthread's entry point.
2016-10-01 11:38:22 -06:00
Gregory Nutt
75104b0808
Remove duplicate function prototype from wrong header file
2016-10-01 10:56:42 -06:00
Sagitta Li
9fa1024eef
vector table should have dimension NR_IRQS, not NR_IRQS+1
2016-09-22 07:56:12 -06:00
Gregory Nutt
f0b4705d57
Correct a comment
2016-09-15 13:10:42 -06:00
Gregory Nutt
e3bbfa2d85
mq_send() was not setting the errno value on certain failures to allocate a message
2016-09-15 12:42:24 -06:00
Gregory Nutt
368f241637
Correct some comments
2016-09-15 08:46:41 -06:00
Gregory Nutt
952268274a
sched/: Fix misplaced right bracket; remove redundant assertion.
2016-09-06 12:27:12 -06:00
Gregory Nutt
7582c2344c
sched/: Eliminate calculation of a possibly unused value.
2016-09-06 10:28:19 -06:00
Gregory Nutt
e034c78516
improve some assertions; add some comments.
2016-09-06 10:21:41 -06:00
Gregory Nutt
27919549f1
sched/: Simplify some child/parent logic
2016-09-06 08:40:55 -06:00
Gregory Nutt
05aa586aa6
sched/: Move fields related to parent/child task relationship out of TCB into group structure.
2016-09-06 08:28:31 -06:00
Gregory Nutt
858af4295c
The TCB nchildren field should not be incremented when pthreads are created.
2016-09-06 07:34:36 -06:00
Gregory Nutt
60b70f7dbb
Make xorshift128 re-entrant so that we do do have to suffer the overhad of serialization controls.
2016-08-21 07:47:53 -06:00
Gregory Nutt
53b2de18eb
Trivial typo fix
2016-08-20 13:23:41 -06:00
Gregory Nutt
300361539a
sched/sched_cpuload_oneshot: Use the oneshot timer with optional entropy to measuer cPU load if so configured.
2016-08-20 12:47:07 -06:00
Gregory Nutt
6f833be9d5
Separate XorShift128 PRNG from /dev/urandom and make it generally available.
2016-08-20 11:36:02 -06:00
Gregory Nutt
5ea77118aa
Explicitly initialize the group tg_exitsem with sem_init(). The existing logic worked because the correct initialization value is all zero, but it is better to initialize the semaphore explicitly. Noted by Jouko Holopainen.
2016-08-10 07:38:07 -06:00
Gregory Nutt
3404b3cb4a
sched/: Review and correct some stylistic inconsistencies
2016-08-07 08:32:11 -06:00
Gregory Nutt
18ce4ff57b
sched/: Review and correct some stylistic inconsistencies
2016-08-07 08:25:30 -06:00
Gregory Nutt
94d34bba47
Fix a typo in a Make.defs file
2016-07-28 09:46:28 -06:00
Gregory Nutt
309480d0f9
Merge branch 'timekeeping' of bitbucket.org:nuttx/nuttx
2016-07-28 09:34:00 -06:00
Gregory Nutt
7370d3171a
Move include/nuttx/lib.h to include/nuttx/lib/lib.h
2016-07-21 14:05:44 -06:00
Gregory Nutt
246773faa7
Rename CONFIG_SCHED_TIMEKEEPING to CONFIG_CLOCK_TIMEKEEPING. That is a better compartmentalized name.
2016-07-11 06:54:02 -06:00
Gregory Nutt
f47b69e1f0
Add support for adjtime system call
2016-07-10 16:55:32 -06:00
Gregory Nutt
c326b6320a
Add description of adjtime() from Linux man page
2016-07-10 16:47:06 -06:00
Max Neklyudov
8db29071da
timekeeping: initial implementation
2016-07-10 16:14:25 -06:00
Gregory Nutt
830af912a1
Add sig_raise()
2016-07-04 09:32:36 -06:00
Paul A. Patience
891113dac9
sched/semaphore: Fix setting EINVAL in sem_post() and sem_wait()
2016-06-28 10:15:52 -04:00
Gregory Nutt
62d8f839c7
SYSLOG: Now a two phase initialization. Some SYSLOG channels cannot be initialized until later in the bringup
2016-06-21 07:52:24 -06:00
Gregory Nutt
2a751068e6
Without lowsyslog() *llerr() is not useful. Eliminate and replace with *err().
2016-06-20 12:44:38 -06:00
Gregory Nutt
43eb04bb8f
Without lowsyslog() *llinfo() is not useful. Eliminate and replace with *info().
2016-06-20 11:59:15 -06:00
Gregory Nutt
f4c47636e7
SYSLOG: Debug output from the IDLE task should be forced like interrupt level output
2016-06-20 07:35:38 -06:00
Gregory Nutt
3fa41c0f18
Kconfig files: Fix some dependencies that have CONFIG_ in the variable name
2016-06-17 19:30:19 -06:00
Gregory Nutt
0c8c7fecf0
Add _ to the beginning of all debug macros to avoid name collisions
2016-06-16 12:33:32 -06:00
Gregory Nutt
f3ec664f63
Debug output level (error, warning, info) is now selectable on a per-subsystem, per-driver basis
2016-06-12 13:08:23 -06:00
Gregory Nutt
13cac3b592
sched/: Change some *err() message to *info() messages if what was a *dbg() message does not indicate and error condition.
2016-06-11 16:42:42 -06:00
Gregory Nutt
a1469a3e95
Add CONFIG_DEBUG_ERROR. Change names of *dbg() * *err()
2016-06-11 15:50:49 -06:00
Gregory Nutt
e99301d7c2
Rename *lldbg to *llerr
2016-06-11 14:55:27 -06:00
Gregory Nutt
86b79b33cf
Reserver the name 'err' for other purposes
2016-06-11 14:40:07 -06:00
Gregory Nutt
1cdc746726
Rename CONFIG_DEBUG to CONFIG_DEBUG_FEATURES
2016-06-11 14:14:08 -06:00
Gregory Nutt
fc3540cffe
Replace all occurrences of vdbg with vinfo
2016-06-11 11:59:51 -06:00
Gregory Nutt
3a74a438d9
Rename CONFIG_DEBUG_VERBOSE to CONFIG_DEBUG_INFO
2016-06-11 11:50:18 -06:00
Gregory Nutt
80d0b2736e
Reorder some logic: (1) set initial CPU IDLE task regsters AFTER allocating stack, (2) invalidate cache in CPU start-up BEFORE handling first interrupt.
2016-05-22 15:01:49 -06:00
Gregory Nutt
07acd5327a
SMP: Clean CPU0 D-Cache before starting new CPU; Invalidate D-Cache when new CPU started.
2016-05-20 12:39:02 -06:00
Gregory Nutt
32838fcc2c
enter/leave_critical_section: In SMP configuration, may attempt to access the task lists before they have been initialized
2016-05-18 09:17:01 -06:00
Gregory Nutt
3d87005e5a
Fix some compilation issues when certain combinations of debug options are selected.
2016-05-17 12:06:32 -06:00
Gregory Nutt
faca2fb1e7
ARMv7-A/i.MX6: Add logic to handle allocation of CPU IDLE thread stacks more efficiently
2016-05-13 11:39:42 -06:00
Gregory Nutt
70782b0f14
ARMv7-A i.MX6: More SMP logic. Still untested.
2016-05-12 15:04:46 -06:00
Gregory Nutt
c00e3e55dc
Fix several places in DMA logic where a spurious semicolon causes bad conditional logic
2016-05-11 17:42:59 -06:00
Gregory Nutt
6cfe56202d
Backout 3f731241cb
. It is a good idea, but has some unpleasant side effect... like SYSLOG and dbg() no longer work
2016-04-18 18:55:36 -06:00
Gregory Nutt
3f731241cb
fs/inode/, fs/vfs/, and sched/task/: File and socket descriptors are no longer allocated for kernel threads. They must use SYSLOG for output and the low-level psock interfaces for network I/O. This saves a little memory which might be important for small footprint configurations.
2016-04-14 10:14:38 -06:00
Gregory Nutt
3fba968bb0
Fix an error when a task with open message queue descriptors is killed via task_delete(). Noted by Anton Gropyanov.
2016-04-11 11:14:18 -06:00
Gregory Nutt
e42b3040ee
Fix some issues with the initial implementation of sched_mergeprioritized.
2016-03-24 07:52:27 -06:00
Gregory Nutt
b5afc187ee
Add file missed in last commit; sched_lock() and sched_mergepending() now use sched_mergeprioritized()
2016-03-23 08:58:48 -06:00
Gregory Nutt
4a962a36dd
Add library functions to concatenate and move lists. Add scheduler function to merge prioritized function to merge prioritized lists (not yet used).
2016-03-23 08:00:58 -06:00
Gregory Nutt
f0671bae2f
SMP: Reorder some logic related to task exit() and restart() for logic of SMP.
2016-03-22 18:19:57 -06:00
Gregory Nutt
9604ea8f42
SMP: Straighten up some scheduler locking logic -- need to REVISIT
2016-03-22 13:01:47 -06:00
Gregory Nutt
3b2e94e1fd
SMP: Fix some errors when removing a trask from the assigned task list
2016-03-22 11:08:30 -06:00
linfei_chen
4b18b8d1e3
LP Work Queue: Fix test to find and idle worker thread.
2016-03-22 08:15:49 -06:00
Gregory Nutt
bc325bd597
Update Kconfig comments
2016-03-21 18:28:43 -06:00
Gregory Nutt
d20db82fcb
Scheduler instrumentation: Fix some associated with monitoring critical sections
2016-03-21 17:08:07 -06:00
Gregory Nutt
adf3c73219
scheduler instrumentation: Improvements to buffering logic
2016-03-21 15:40:01 -06:00
Gregory Nutt
ccbf514233
Add task state to information recorded when a task is suspended
2016-03-21 15:24:15 -06:00
Gregory Nutt
f7b58e9dfd
sched/: Move location (and form) of context switch instrumentation.
2016-03-21 14:08:31 -06:00
Gregory Nutt
242f8ff25f
drivers/syslog/note_driver.c: Add a driver that will allow an application to read buffered scheduler instrumentation data
2016-03-17 14:46:00 -06:00
Gregory Nutt
7f19631338
sched/: Add option to buffer scheduler instrumentation data in memory.
2016-03-17 09:49:43 -06:00
Gregory Nutt
2225940155
SMP: Add per-CPU initialization logic
2016-03-13 07:16:56 -06:00
Gregory Nutt
79c1fa5bd7
SMP: Simplified SMP interfaces
2016-03-12 15:29:33 -06:00
Gregory Nutt
320b70ebad
Update submodules
2016-03-12 13:24:38 -06:00
Gregory Nutt
24468128de
TLS: Simplify
2016-03-11 07:17:32 -06:00
Gregory Nutt
934069e422
TLS: Add logic to get/set arbitrary TLS values
2016-03-10 19:31:22 -06:00
Gregory Nutt
30b6ee96c9
Add basic definitions for TLS support
2016-03-10 11:56:33 -06:00
Gregory Nutt
9b5e88af71
Update some comments
2016-03-06 13:50:26 -06:00
Gregory Nutt
5d63cd85c7
sched/semaphore: Add an internal interface to reset a semaphore count.
2016-03-05 07:33:24 -06:00
Gregory Nutt
d0c09771db
sched: Recent change of ASSERT to DEBUGASSERT causes a crash when debug is diabled because there is a critical function call within the assertion
2016-02-23 10:27:40 -06:00
Gregory Nutt
7cb35587a3
Correct minor typos in a Kconfig file
2016-02-22 08:28:33 -06:00
Gregory Nutt
0fb035f76b
Standardize some naming in code section comments
2016-02-21 18:09:04 -06:00
Gregory Nutt
143d287f11
Fix some missing header file inclusions and a misplaced semi-colon from recent commits
2016-02-21 11:27:55 -06:00
Gregory Nutt
c929db42f9
Fix some bad SMP logic in sched_removereadytorun.c
2016-02-20 08:07:54 -06:00
Gregory Nutt
883a1adfe2
Implement sched_setaffinity() and sched_getaffinity()
2016-02-19 19:18:54 -06:00
Gregory Nutt
5a590e99b9
Add SYSCALLS for pthread_setaffinity() and pthread_getaffinity()
2016-02-19 18:13:06 -06:00
Gregory Nutt
1b5e296cf2
Add pthread_setaffinity() and pthread_getaffinity()
2016-02-19 17:59:19 -06:00
Gregory Nutt
a633353ec3
Add a CPU affinity set to the TCB if SMP is enable and use this CPU set as a mask for determining which CPUs the thread may run on. Add an affinity field to the attrributes to permit controlling which CPUs a pthread may run on. Implements pthread_att_setaffinity_np() and pthread_attr_getaffinity_np().
2016-02-19 17:33:35 -06:00
Gregory Nutt
72d3920295
Rename cpuset_t to cpu_set_t which is the type used in some non-standard Linux/GNU interfaces. Move definitions of cpu_set_t to include/sys/types.h. Add prototypes for sched_setaffinity(), sched_getaffinity(), pthread_attr_setaffinity_np(), pthread_attr_getaffinity_np(), pthread_setaffinity_np(), and pthread_getaffinity_np(). No implementation is yet in place.
2016-02-19 15:57:07 -06:00
Gregory Nutt
3994b094c5
Remove some empty C file section comments; Update some text in TODO file
2016-02-19 10:01:15 -06:00
Gregory Nutt
94bea6547b
Fix two unterminated strings in Kconfig files
2016-02-18 17:13:03 -06:00
Gregory Nutt
6d97249348
Trivial, cosmetic changes
2016-02-18 14:56:48 -06:00
Gregory Nutt
1780000777
SMP: Setting bit for wrong CPU. Assertion has cause false alarm crashes..
2016-02-18 12:31:21 -06:00
Gregory Nutt
7d9287958f
Minor simplication to last commit; Update TODO list
2016-02-18 09:21:43 -06:00
Gregory Nutt
52fbbaf778
1. SMP: Fix an assertion. SMP-specific change accidentally made in non-SMP code
...
2. Move list of signal actions from the task TCB to the task group. Signal handlers are a property of the entire task group and not of individual threads in the group. I know, I preferred it the other way too but this is more compliant with POSIX.
2016-02-18 08:34:54 -06:00
Gregory Nutt
720343612b
Remove some empty file section section header comments
2016-02-17 18:05:03 -06:00
Gregory Nutt
6543c570d4
Remove some empty file section section header comments
2016-02-17 17:38:39 -06:00
Gregory Nutt
970b34ae8f
Remove some empty file section section header comments
2016-02-17 17:17:44 -06:00
Gregory Nutt
a20863f6c0
Remove some empty file section section header comments
2016-02-17 17:15:08 -06:00
Gregory Nutt
b71907888e
Remove some empty file section section header comments
2016-02-17 17:04:51 -06:00
Gregory Nutt
269c242f7b
Update TODO list
2016-02-17 16:51:58 -06:00
Gregory Nutt
95735519dd
SMP: Cosmetic renaming to clarify functionality of SMP interfaces. Update comments.
2016-02-17 13:36:25 -06:00
Gregory Nutt
b50325bb38
SMP: Add funtions to perform atomic bit set/clear operations; fix two errors in SMP macros
2016-02-17 13:20:01 -06:00
Gregory Nutt
8ac12839c3
leave_critical_section: Fix text of whether spinlock should be released or not
2016-02-17 10:55:18 -06:00
Gregory Nutt
d6912d0b00
Fix some bad conditional compilation and other typos in last commit
2016-02-16 20:11:25 -06:00
Gregory Nutt
6aeb4a52e8
Performance improvement: Idle loop should not take MM semaphore if there is not garbage to be collected. This can cause loss of performance and thrashing in tasking
2016-02-16 19:33:22 -06:00
Gregory Nutt
6dfa72d038
SMP: Fix some dumb but difficult to debug errors
2016-02-16 16:43:19 -06:00
Gregory Nutt
384e51cb05
Add some additional schedule instrumentation
2016-02-16 15:21:45 -06:00
Gregory Nutt
7f18b515f4
SMP: Fix a typo in last commit
2016-02-16 10:40:25 -06:00
Gregory Nutt
a442245479
SMP: Fix some non-SMP errors that crept in; fix a recursion problem; re-partition some functionality to improve design and readability
2016-02-16 10:14:33 -06:00
Gregory Nutt
8774e7a4a0
SMP: Fix missing initialization value
2016-02-15 18:35:05 -06:00
Gregory Nutt
fccef49305
Cosmetic changes to comments
2016-02-15 13:48:08 -06:00
Gregory Nutt
cfcd98ca89
SMP: Used wrong point to wrong TCB
2016-02-15 11:45:34 -06:00
Gregory Nutt
fc842d740a
SMP: os_start needs to hold the KMM semaphore to prevent threads from allocating memory until the bring-up is complete
2016-02-15 11:07:42 -06:00
Gregory Nutt
8ea1bc3188
SMP: Fix backward spinlock test
2016-02-15 11:06:54 -06:00
Gregory Nutt
8399938138
SMP: I think we have to spinlock before we are possibly suspended
2016-02-15 10:15:07 -06:00
Gregory Nutt
3c46fa3f9f
Fix a contention problem in the previous critical section design
2016-02-15 08:50:20 -06:00
Gregory Nutt
c7df82147f
SMP: First cut integration of enter/leave_critical_section and the scheduler. There are some issues.
2016-02-15 08:06:17 -06:00
Gregory Nutt
9cb2a6b1f9
Rename irqsave() and irqrestore() to up_irq_save() and up_irq_restore()
2016-02-14 16:19:15 -06:00
Gregory Nutt
e6bd3544f6
Fix a name collision introduced in last commit
2016-02-14 08:20:35 -06:00
Gregory Nutt
6e3107650d
nuttx/sched: Replace irqsave() with enter_critical_section(); replace irqrestore() with leave_critical_section()
2016-02-14 08:17:46 -06:00
Gregory Nutt
a604a86980
Fix an error introduced in a previous commit
2016-02-13 10:48:30 -06:00
Gregory Nutt
d017e3eb2e
SMP: Forgot to add a file before the last commit
2016-02-13 10:25:36 -06:00
Gregory Nutt
97cbd7112f
SMP: Implement enter/leave_critical_section
2016-02-13 10:23:16 -06:00
Gregory Nutt
8ac699b63d
SMP: Need to perform all IDLE task memory allocations on initializatin thread prior to starting the other CPUs
2016-02-13 09:04:54 -06:00
Gregory Nutt
f45166af32
SMP: Fix a IDLE task semaphore operation
2016-02-12 18:03:08 -06:00
Gregory Nutt
3f7f58de9d
SMP: Fix some debug assertion problems when DEBUG is enabled; Partial fix for one bring-up issue
2016-02-12 17:13:38 -06:00
Gregory Nutt
64b3ce8775
SMP: Add up_cpustart and up_cpurestart protoypes; fix some problems in sched_addreadytorun; first cut at SMP version of up_mergepending.
2016-02-12 16:13:14 -06:00
Gregory Nutt
85f663a8ee
SMP: Add non-reentrant spinlocks, fix pre-emption controls with SMP, and most of the basic scheduler support for SMP (still missing a few things)
2016-02-12 14:55:31 -06:00
Gregory Nutt
7d7f4e140c
OS: Add a RUNNABLE attribute to the tasklists to indicate if the task list includes the currently executing task. Use this additional bit of information to determine if a context switch could really occur when removing a TCB from a task list
2016-02-12 08:15:16 -06:00
Gregory Nutt
76e88c8963
SMP: Removed unused macros, update comments, update sched_removereadytorun for SMP
2016-02-11 17:24:19 -06:00
Gregory Nutt
c315479a04
SMP: Move IDLE thread init logic from sim to OS; need to assign unique IDs to each IDLE task
2016-02-11 14:11:26 -06:00
Gregory Nutt
ddbc948895
SMP: Minor SMP-related clean-up/improvements
2016-02-11 12:18:54 -06:00
Gregory Nutt
49227fa554
Scheduler: Replace the boolean 'prioritized' with a uint8_t bit set so that additional attributes of a list can be specified without adding more boolean values.
2016-02-11 08:06:33 -06:00
Gregory Nutt
0a7e136a5a
SMP: Idle thread must be assigned to a CPU
2016-02-11 08:01:09 -06:00
Gregory Nutt
89bea6917c
Kconfig: Architecture must indicate that it support multiple CPUs in order to enable SMP
2016-02-10 17:31:16 -06:00
Gregory Nutt
292d2fe648
Correct naming of a TCB flag; update some comments
2016-02-10 16:53:34 -06:00
Gregory Nutt
96223cedf1
SMP: A little more
2016-02-10 15:43:05 -06:00
Gregory Nutt
3147dfc7d5
SMP: Add some tentative initialization logic
2016-02-10 13:49:27 -06:00
Gregory Nutt
47a5663f8c
SMP: A few preliminary data structure definitions
2016-02-10 11:45:26 -06:00
Gregory Nutt
f5a3b1e89d
Add EXPERIMENTAL configuration option to investigate some SMP issues
2016-02-10 10:27:48 -06:00
Gregory Nutt
bf8120d51d
Fix some odd logic in CC3000 semaphore handling. Noted by Vladimir Komendantskiy
2016-02-10 09:50:28 -06:00
Gregory Nutt
2c0ad2564f
Add CONFIG_SPINLOCK. Also need spinunlock() and spinlock_initialize()
2016-02-09 15:31:14 -06:00
Gregory Nutt
74db48202e
sched/: Replace explict references to g_readytorun with indirect references via the this_task() macro
2016-02-06 17:44:41 -06:00
Gregory Nutt
2dc258986d
Add a state variable that provides the current level of OS initialization. This is needed by some logic that may attempt to run early in the start-up sequence, but cannot run if a sufficient level of initializaitn has not not yet occurred
2016-02-05 08:34:03 -06:00
Gregory Nutt
61819c0e3e
Fix a typo in last commit that was not noticed until CONFIG_SIG_EVTHREAD was enabled
2016-01-28 16:50:20 -06:00
Gregory Nutt
da5115e3e6
Correct an error in timer_created intoduced when SIGEV_THREAD support was added.
2016-01-28 16:38:54 -06:00
=?UTF-8?Q?Manuel_St=c3=bchn?=
2bacc40350
Fix mismatched prototype error in work_queue()
2016-01-24 12:48:24 -06:00
Gregory Nutt
84d4cb007b
clock_systimer: 64-bit timer accesses are not atomic. Noted by Freddie Chopin.
2016-01-22 12:24:36 -06:00
Gregory Nutt
2de5be34e5
Update ChangeLog
2016-01-21 19:29:43 -06:00
Gregory Nutt
032ad1b70b
Remove clock_systimer32 and clock_systimer64. There is now only clock_systimer
2016-01-21 16:49:24 -06:00
Gregory Nutt
b04e2ea021
Trivial improvement to comments
2016-01-21 16:28:36 -06:00
Gregory Nutt
a4f5254cbe
Fix a typo introduced into the last commit
2016-01-21 13:48:35 -06:00
Gregory Nutt
e001f37593
sched/clock/clock_timespec.c: Fix an error in the time conversion
2016-01-21 13:31:00 -06:00
Gregory Nutt
f348e68069
Update to use 64-bit timer when available
2016-01-21 11:54:26 -06:00
Gregory Nutt
8ee75a96fe
Update TODO list and Kconfig help
2016-01-13 07:44:44 -06:00
Dimitry Kloper
b48ca00cd5
The delay parameter has 'int' type while explicit int32_t is used in sigtimedwait() (sig_timedwait.c) This can lead to wrong argument for systems that have default int size different than int32 (namely AVR).
2016-01-05 07:58:04 -06:00
Gregory Nutt
c1fff4706c
signals: Adds a very limited, minimal implementation for SIGEV_THREAD
2015-12-30 15:01:14 -06:00
Gregory Nutt
849df03d22
Update dates on files modified for SIGEV_THREAD support
2015-12-30 13:28:39 -06:00
Gregory Nutt
9835eeb181
signals: Basic framework to support SIGEV_THREAD
2015-12-30 13:20:31 -06:00
Gregory Nutt
198cfd0224
Forgot to add a file needed in the last commit
2015-12-22 12:06:05 -06:00
Gregory Nutt
b90da3f27b
waitpid: CRITICAL BUGFIX. Add a reference counting mechansim to prevent wait from using stale memory that was freed by the exiting task
2015-12-22 11:48:17 -06:00
Gregory Nutt
8f540fd81a
Trivial fix to typo in a comment
2015-12-21 22:24:43 -06:00
Gregory Nutt
a2e1ece873
RTC: Handle RTC failures. If mktime is called with garbage, it may crash
2015-12-21 14:39:40 -06:00
Gregory Nutt
e8d0f85c8b
Modules: Add mod_setsymtab to set global symtol table once. Now we can remove symbol table parameters from the insmod call. This will make implementing an NSH insmod command much easier
2015-12-13 08:10:01 -06:00
Gregory Nutt
076f382f79
Module: Remove some unused members of a structure
2015-12-13 06:48:30 -06:00
Gregory Nutt
917dbc8540
modules: Add more information to registry just for procfs
2015-12-12 18:56:32 -06:00