Commit Graph

928 Commits

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