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
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
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
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
0fb035f76b
Standardize some naming in code section comments
2016-02-21 18:09:04 -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
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
1780000777
SMP: Setting bit for wrong CPU. Assertion has cause false alarm crashes..
2016-02-18 12:31:21 -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
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
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
cfcd98ca89
SMP: Used wrong point to wrong TCB
2016-02-15 11:45:34 -06:00
Gregory Nutt
8ea1bc3188
SMP: Fix backward spinlock test
2016-02-15 11:06:54 -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
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
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
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
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
47a5663f8c
SMP: A few preliminary data structure definitions
2016-02-10 11:45:26 -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
f348e68069
Update to use 64-bit timer when available
2016-01-21 11:54:26 -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
c9925305b5
Same important bug as c623af03a0ee8ac041fc22051781047d6cb9cc75, but in a different location
2015-12-09 10:17:33 -06:00
Gregory Nutt
79d554939e
sched/: Fix some spacing issues
2015-10-07 19:59:14 -06:00
Gregory Nutt
af086c40ff
Remove dangling whitespace
2015-10-04 15:28:54 -06:00
Gregory Nutt
0b12dbf95d
Fix some spacing problems
2015-10-04 15:04:00 -06:00
Gregory Nutt
16b32bbadd
Standardize the width of all comment boxes in C files
2015-10-03 07:25:53 -06:00
Gregory Nutt
5b51a9fcdd
Standardize the width of all comment boxes in C files
2015-10-02 17:43:18 -06:00
Gregory Nutt
cb9e27c3b0
Standardize naming used for public data and function groupings
2015-10-02 16:30:35 -06:00
Gregory Nutt
cb2f84e288
Loosen up restriction a little in sched_ufree()
2015-09-07 15:28:58 -06:00
Gregory Nutt
d78d3ef4ab
Logic for delayed memory garbage collection for the case of user space memory will not work as implemented for the case of the kernel build. That is because the correct context is in place in order to free the user memory when sched_kufree is called, but will not be in place later when the memory garbage collection runs. If this feature is really needed, then some more substantial redesign is required
2015-09-07 14:40:18 -06:00
Paul A. Patience
3b89eabd50
Correct #if to #ifdef when the macro can be undefined. Fix bug in AT24XX driver: it should compare AT24XX_ADDRSIZE to 2.
2015-09-01 13:52:29 -04:00
Gregory Nutt
768d892188
Add si_errno to siginfo_t
2015-08-14 10:10:32 -06:00
Gregory Nutt
030573ba5c
More improvements to the sporadic scheduler
2015-08-01 09:08:48 -06:00
Gregory Nutt
5772813d29
Change the name of the local variable sigset to set to prevent name collisions with the function of the same name
2015-07-31 13:32:10 -06:00
Gregory Nutt
3a93be8902
Add strictly limit check: The current sporadic scheduler cannot handler duties > 50%
2015-07-30 07:36:01 -06:00
Gregory Nutt
a6ccb7f308
Sporadic scheduler: Third design. Now it looks closer to what I want
2015-07-28 14:26:31 -06:00
Gregory Nutt
dd5b065753
Sporadic: This interim version works pretty well, but the things that I had to do were nasty and mean that -- sigh -- there will be another redesign coming
2015-07-28 08:03:40 -06:00
Gregory Nutt
95ca3a1d1e
Fixes several more sporadic scheduler bugs
2015-07-27 18:08:21 -06:00
Gregory Nutt
a7322f5a6d
Sporadic scheduler: Fix how suspension time is calculated
2015-07-27 15:54:19 -06:00
Gregory Nutt
e33c727520
Sporadic scheduler: Move pending time into each timer instance
2015-07-27 14:48:21 -06:00
Gregory Nutt
e66e2f5c0f
Use the last budgeted time from the last timer started
2015-07-27 13:13:30 -06:00
Gregory Nutt
8c754ccd4f
Sporadic scheduler: misc bug fixes
2015-07-27 11:55:52 -06:00
Gregory Nutt
cc1c7731da
Sporadic scheduler: Fix budget computations when replenishment intervals are nested
2015-07-27 09:35:52 -06:00
Gregory Nutt
484f148001
Sporadic scheduler: Add instrumentation hooks to support GPIO outputs
2015-07-27 08:37:25 -06:00
Gregory Nutt
7c04ad8209
Sporadic scheduler: Cosmetic change to debug output and to comments
2015-07-26 15:33:27 -06:00
Gregory Nutt
99664b7811
Sporadic scheduler: Add logic to collection the partial timer expiration when a sporadic thread is suspended in tickless mode
2015-07-26 15:03:47 -06:00
Gregory Nutt
4bdbc387f5
Update TODO list; Fix a few errors introduced withe the last changes to the sporadic scheduler
2015-07-26 10:51:04 -06:00
Gregory Nutt
3e88b77540
Sporadic scheduler: Handle a case when the scheduler is resumed before it has even had a chance to run
2015-07-26 08:08:45 -06:00
Gregory Nutt
26fd7a7ccf
The redesigned sporadic scheduler now seems to be functional
2015-07-25 13:22:46 -06:00
Gregory Nutt
27e21710fd
This is basically a complete redesign of the sporadic scheduling logic due to limitations in the initial design
2015-07-25 12:50:53 -06:00
Gregory Nutt
a1031417e8
Comment out part of sporadic scheduler logic: Part of replenishment logic is bogus
2015-07-24 18:18:58 -06:00
Gregory Nutt
1d88dc1fb6
Fix some compilation error when both TICKLESS mode and the SPORADIC scheduler are enabled
2015-07-24 14:35:07 -06:00
Gregory Nutt
411941d8cd
Fix an syntax error in a debug asserion
2015-07-24 13:02:19 -06:00
Gregory Nutt
12cdd2a8fe
Fix some bad conditional compilation
2015-07-24 12:27:15 -06:00
Gregory Nutt
0d71260bf2
sched/: Separate the round-robin logic into a separate file so that it is symmetric with the sporadic stuff. Integrate the sporadic scheduler into the time tick interrupt handling and into the tickless operation.
2015-07-24 11:49:28 -06:00
Gregory Nutt
c6c424583d
Fix a test for valid scheduling policies
2015-07-24 10:20:22 -06:00
Gregory Nutt
4490744def
Add logic to reset the replenish the sporadic scheduler when a task is resumed
2015-07-24 09:55:02 -06:00
Gregory Nutt
ea7dbc984b
Add basic sporadic schedule state machine
2015-07-24 09:03:21 -06:00
Gregory Nutt
3b1306078b
Sporadic Scheduler: Ensure that the replenishment period is greater than or equal to the budget period
2015-07-23 15:08:41 -06:00
Gregory Nutt
5baa738019
Most cosmetic, but includes some fixes to some range checking
2015-07-23 14:36:49 -06:00
Gregory Nutt
53a17bfd99
Fix a newly introduced compilation error when round roben scheduling is disabled
2015-07-23 13:35:48 -06:00
Gregory Nutt
9095e8eab4
include/, sched/, and libc/: Add support for sporadic scheduling parameters in struct sched_param, posix_spawnattr_t, and pthread_attr_t. Update all user interfaces to pass sporadic scheduling parameters. Feature is dependent on EXPERIMENTAL and no changes have yet been made to core scheduling logic.
2015-07-23 13:16:32 -06:00
Gregory Nutt
146bdc3c93
TCB: Increase the size of the scheduling policy field from 1 to 2 bits to allow additional, planned scheduling policies
2015-07-23 10:15:07 -06:00
Gregory Nutt
e69d14d89b
Fix some warnings/errors detected by nuttx/tools/testbuilds.sh
2015-07-10 18:41:26 -06:00
Max Neklyudov
14e742b108
Implement WNOHANG for waitpid() only and for the case of CONFIG_SCHED_HAVE_PARENT not selected. From Max Neklyudov.
2015-07-02 09:34:58 -06:00
Gregory Nutt
b4423c1eed
Make some file section headers more consistent with standard
2015-04-08 06:47:36 -06:00
Gregory Nutt
af6d9e2684
sched: Do not use uninitialized boolean in waitpid(). From Juha Niskanen
2015-03-12 07:45:10 -06:00
Gregory Nutt
1d534ff896
Convert the 64-bit usec limit to a 32-bit tick limit
2015-02-03 07:18:17 -06:00
Gregory Nutt
a448e0f69f
On my platform I have just 16-bit timer clocked at 32kHz. As result oneshot timer max delay is 2s. The patch adds limit of maximum ticks in sched_timer_start (nuttx/sched/sched/sched_timerexpiration.c). From Macs N.
2015-02-03 06:25:19 -06:00
Gregory Nutt
1aa528a572
More fixes to problems noted by cppcheck. Some are kind of risky; some are real bugs.
2014-11-25 14:10:35 -06:00
Gregory Nutt
2da26f7884
More fixes to tickless operation, alarm/mode code. From Brandon Warhurst
2014-10-23 07:13:57 -06:00
Gregory Nutt
a7a5c8cff3
Fixes to tickless operation code. From Brandon Warhurst
2014-10-23 06:41:31 -06:00
Gregory Nutt
322f9f401c
Simplify how C source files are selected in the build
2014-10-07 07:42:36 -06:00
Gregory Nutt
1f2cc9f4fe
Complete re-implementation of mq_close
2014-09-29 15:33:34 -06:00
Gregory Nutt
701719b2ca
Don't release user stack in kernel build. Already destroyed with all of the address environment
2014-09-15 12:45:41 -06:00
Gregory Nutt
3649dab9bd
Initial integration of kernel stack (does not work)
2014-09-14 11:19:34 -06:00
Gregory Nutt
b4438e44c5
Restructuring of build to allow use of use-space allocators by kernel logic in the kernel build.
2014-09-02 11:22:09 -06:00
Gregory Nutt
64ab35b399
There used to be two ways to pass parameters to new tasks, depending upon the configuration: Either (1) argv[] as created as an array with each string strdup'ed. Or (1) argv[] array and strings were created on the stack before the new task was started. Now, there is only one way, way (1). Way (2) might be slightly more compact, but this is not worth carry the complexity of two different ways of doing the same thing.
2014-09-01 15:39:34 -06:00
Gregory Nutt
23147c40a5
Remove final traces of the 8015 from the NuttX source tree
2014-09-01 13:21:15 -06:00
Gregory Nutt
54fa3b0b59
Rename kfree to kmm_free for consistency with other naming conventions
2014-08-31 17:04:02 -06:00
Gregory Nutt
9ad7dae4c1
Rename kufree to kumm_free for consistency with other naming
2014-08-31 16:15:11 -06:00
Gregory Nutt
2904fb0420
Clean up some kernel build heap allocation issues. The Cortex-A kernel build now compiles without errors (but cannot link until brk() and sbrk() are implemented).
2014-08-31 12:50:05 -06:00
Gregory Nutt
e3ff0689bb
Rename CONFIG_NUTTX_KERNEL to CONFIG_BUILD_PROTECTED; Partially integrate new CONFIG_BUILD_KERNEL
2014-08-29 14:47:22 -06:00
Gregory Nutt
0ab1b0de25
nuttx/sched: Remove explicit references to errno. That is a problem from within the kernel for certain configurations
2014-08-28 17:00:24 -06:00
Gregory Nutt
1624e2fbcf
Change CONFIG_ADDRENV to CONFIG_ARCH_ADDRENV; change how it is selected -- the architecure must first declare support
2014-08-24 06:42:11 -06:00
Gregory Nutt
e79d6e3c8b
A few fixes for compilation errors due to recent address environment fixes
2014-08-22 15:55:00 -06:00
Gregory Nutt
1d586e6136
An address environment is the property of a task group, not of a thread
2014-08-22 12:32:34 -06:00
Gregory Nutt
569a0815ca
Updated comments
2014-08-12 13:50:18 -06:00
Gregory Nutt
6546fa39c7
Tickless Stuff: Back out the risky timer operations when the ready-to-run list is modified. That is unsafe. An ugly workaround is just to keep an interval timer going all of the time with a minimum duration equal to the timeslice interval.
2014-08-12 11:12:00 -06:00
Gregory Nutt
686e5d7e3d
Tickless: If using an ALARM, then really should report time of expiration
2014-08-12 10:00:32 -06:00
Gregory Nutt
e1fc925705
Minor update to handling of timeslick delay on tast switches
2014-08-11 15:07:15 -06:00
Gregory Nutt
56196ecea1
Fix a computation error in the fix for the last computational error
2014-08-11 12:07:49 -06:00
Gregory Nutt
b4bbe354fd
Fix inaccurate time conversion. Remove MSEC_PER_TICK and convert uint32_t to uin64_t.
2014-08-11 11:14:40 -06:00
Gregory Nutt
649ef76f71
Timers: In Tickless mode, need to stop the interval timer before inserted a new delay into the timer list. Otherwise, the time is incorrect on the first entry of the list
2014-08-11 08:25:25 -06:00
Gregory Nutt
f2058fa271
Comment out reassessment of timer in the middle of context switches. Need to revisit
2014-08-11 07:05:47 -06:00
Gregory Nutt
1f28365f55
Part of the last incomplete change
2014-08-08 17:45:54 -06:00
Gregory Nutt
ccf4ed2148
Partial (non-working) checked in before the big, risky automated change
2014-08-08 17:29:44 -06:00