Gregory Nutt
8ae5450268
pthreads: Move pthread_yield from sched/pthreads to libc/pthreads. it is a simple wrapper for sched_yield and does not belong within the OS.
2017-06-14 07:31:10 -06:00
Gregory Nutt
0fe9c2f3f9
pthread mutex: Remove bogus DEBUGASSERT. Problem noted by Jussi Kivilinna
2017-06-01 06:28:23 -06:00
Gregory Nutt
90dda9357e
pthread robust mutexes: Fix memmory trashing problem: the main task may also use mutexes; need to check thread type before accessing pthread-specific mutex data structures. Problem noted by Jussi Kivilinna.
2017-05-31 10:55:37 -06:00
Gregory Nutt
a8708424c2
pthread_trylock: Fixes a problem in pthread_trylock() noted by initialkjc@yahoo.com. When CONFIG_PTHREAD_MUTEX_UNSAFE=y, the special return value EAGAIN was not being detected due to differences in reporting of returned values.
2017-05-29 07:05:06 -06:00
Gregory Nutt
0de294a586
Fix lots of occurrences of 'the the', 'the there', 'the these', 'the then', 'the they.
2017-05-11 13:35:56 -06:00
Gregory Nutt
ba12817f9c
Upate some comments
2017-05-11 13:15:31 -06:00
EunBong Song
03bd3688bc
pthread: Fix compilation error on pthread_cond_wait when CONFIG_CANCELLATION_POINTS and CONFIG_PTHREAD_MUTEX_UNSAFE are enabled.
2017-05-02 07:14:04 -06:00
Jussi Kivilinna
e835803166
yslog: use monotonic clock for timestamp when available
2017-04-26 10:38:15 -06:00
Gregory Nutt
d5207efb5a
Be consistent... Use Name: consistent in function headers vs Function:
2017-04-21 16:33:14 -06:00
Jussi Kivilinna
33ddaa0b10
clock: add testing for 32-bit overflow of 64-bit system timer
2017-04-21 08:55:07 -06:00
Jussi Kivilinna
c57d49f420
clock: Add new type ssystime_t for relative 64-bit ticks, change ticks<->time conversion functions to use ssystime_t
2017-04-21 08:51:31 -06:00
Jussi Kivilinna
325ba1a803
clock: add clock_resynchronize and use subseconds RTC
...
Add clock_resynchronize for better synchronization of CLOCK_REALTIME and CLOCK_MONOTONIC to match RTC after resume from low-power state.
Add up_rtc_getdatetime_with_subseconds under CONFIG_ARCH_HAVE_RTC_SUBSECONDS to allow initializing (and resynchronizing) system clock with subseconds accuracy RTC.
2017-04-21 08:45:57 -06:00
Nobutaka Toyoshima
150036eb8b
sched: Fix tg_flags check with GROUP_FLAG_NOCLDWAIT
...
Jira: PDFW15IS-208
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2017-04-14 14:50:44 +09:00
Juha Niskanen (Haltian)
b4747286b1
Add logic to disable cancellation points within the OS. This is useful when an internal OS function that is NOT a cancellation point calls an OS function which is a cancellation point. In that case, irrecoverable states may occur if the cancellation is within the OS.
2017-04-11 11:03:25 -06:00
Gregory Nutt
c08ba10d32
include/: Add some definitions needed by apps/wireless/wapi
2017-04-10 14:56:23 -06:00
Gregory Nutt
c36bf090f0
pthread: Minor logic fix in pthread_mutex_consistent. Updat some comments.
2017-04-10 10:10:41 -06:00
Gregory Nutt
948332ca34
pthreads: Backed most of last pthread changes. Found the 'real' root poblem. A one like error in pthread_mutex.c.
2017-04-10 09:51:03 -06:00
Gregory Nutt
b51b72b2db
pthreads: Re-order some operations so that mutexes are placed in the inconsistent state BEFORE the clean-up callbacks are called.
2017-04-10 08:11:16 -06:00
Jussi Kivilinna
dffb8a67e3
Add entropy pool and strong random number generator
...
Entropy pool gathers environmental noise from device drivers, user-space, etc., and returns good random numbers, suitable for cryptographic use. Based on entropy pool design from *BSDs and uses BLAKE2Xs algorithm for CSPRNG output.
Patch also adds /dev/urandom support for using entropy pool RNG and new 'getrandom' system call for getting randomness without file-descriptor usage (thus avoiding file-descriptor exhaustion attacks). The 'getrandom' interface is similar as 'getentropy' and 'getrandom' available on OpenBSD and Linux respectively.
2017-03-30 07:38:37 -06:00
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