Commit Graph

269 Commits

Author SHA1 Message Date
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