Gregory Nutt
d8cf3bfe25
Rethink some of the conditional logic of commit 1ac9558460
: If the Critical Section Monitor enabled, that that platform-specific timer should be used to measure interrupt processing time, no matter what.
2018-11-26 12:18:58 -06:00
Gregory Nutt
553c566650
sched/irq: Include a few ProcFS-related changes missed in commit 1ac9558460
2018-11-26 12:01:36 -06:00
Gregory Nutt
1ac9558460
sched/irq and sched/sched: Measurement of interrupt handler duration used to be available only in Tickless mode since it used the high resolution Tickless timer to measure interrupt time. This commit adds CONFIG_SCHED_IRQMONITOR_GETTIME which, if enabled, will force the interrupt duration caculation to use the same high-resolution, platform-specific timer as is used with the Critical Section Monitor. This leads to two improvements: (1) You can now measure interrupt duration in non-Tickless mode, and (2) in either mode, the interrupt duration and the critical section measures will use the same high-resulotion timer and should, therefore, never be any descripancy due to different clock sources.
2018-11-26 11:29:20 -06:00
Gregory Nutt
80e7107c9f
sched/irq/Make.defs: Fix warning about irq_csection.o appearing multiple times in the same rule.
2018-11-25 17:22:33 -06:00
Gregory Nutt
4ca7b72a98
sched/Kconfig: Simplify some configurations. This adds configuration settings that control individual features, rather than long complex OR expressions that determines if an individual feature is required.
2018-11-25 11:50:15 -06:00
Gregory Nutt
865cc85dfd
sched/sched/sched_critmonitor.c: A correct a logic error. arch/sim/src/up_critmon.c: Use higher resolution timer.
2018-11-25 09:49:21 -06:00
Gregory Nutt
491ef22b63
sched/sched/sched_critmon.c: Design simplication. Now that irqcount is always available, there is no need for the flags that were used to retain IRQ state.
2018-11-25 07:41:52 -06:00
Gregory Nutt
095b597d34
sched/sched and fs/procfs: Fix some bus in critical section monitor found in testing
2018-11-24 17:58:35 -06:00
Gregory Nutt
807d5bb4ae
Critical Section Monitor: Add low level timer support for simulation. Fix serial bugs and logic errors in initial implementation. Still does not work; takes assertions.
2018-11-24 15:07:12 -06:00
Gregory Nutt
85c31fd4a2
fs/procfs/fs_procfscritmon.c and sched/sched/sched_critmonitor.c: Add support for global pre-emption and global critical sections to monitor as suggested by Xiang Xaio.
2018-11-24 13:33:37 -06:00
Gregory Nutt
a1cb270478
configs/stm32f4discovery: Add timing support for the critical section monitor using the DWT CYCNT register.
2018-11-24 11:06:34 -06:00
Gregory Nutt
fc6084f311
Squashed commit of the following:
...
fs/procfs/fs_procfsproc: Extended the process ID ProcFS output to show per-thread maximum time for pre-emption disabled and maximum time within a critical section.
sched/sched/sched_critmonitor.c: Adds data collection logic in support of monitoring critical sections and pre-emption state.
2018-11-24 10:32:45 -06:00
Gregory Nutt
d2a11cdea5
sched/signal/sig_timedwait.c: Remove unnecessary disble of pre-emption.
2018-11-23 06:59:48 -06:00
Xiang Xiao
dbf01d12b7
Assertions: Identify the running task correctly when dumping task state information. It takes time to switch to the target task after g_readytorun has been modified. If panic/assert happen during this period, the dump will contain the incorrect and confusing information due to the difference between the real running task and the return value of this_task(). This change resolve this problem by adding g_running_task to track the real running task through the context switch.
2018-11-15 07:11:51 -06:00
Xiang Xiao
f337cc1380
sched/clock/ timekeeping: Use clock_basetime() to initialize g_clock_wall_time to get the best initial RTC value and initialize g_clock_last_counter too since the hardware may not start counting from zero.
2018-11-12 07:00:41 -06:00
Xiang Xiao
2bc709d4b9
sched/clock/clock_initialize.c: clock_inittime() needs to be done with CONFIG_SCHED_TICKLESS and clock_initialize should skip clock_inittime() for external RTC case since the RTC isn't ready yet.
2018-11-12 06:55:53 -06:00
Xiang Xiao
f0c5c75042
sched/clock/: Don't call up_timer_gettime in clock_gettime and clock_systimer to ensure the return value from them consistent with clock_systimespec
2018-11-12 06:52:56 -06:00
Xiang Xiao
46bd8798c5
ched/clock/: Remove g_monotonic_basetime and g_clock_monotonic_time since we don't need ensure monotonic time start from zero as state here: http://pubs.opengroup.org/onlinepubs/009696899/functions/clock_getres.html
2018-11-12 06:50:37 -06:00
Xiang Xiao
1ef2602933
sched/clock/clock_getres.c: Support CLOCK_MONOTONIC
2018-11-12 06:42:38 -06:00
Xiang Xiao
43706cd797
net/arp: Redesign ARP table aging to simplify the net initialization
2018-11-09 13:54:55 -06:00
ligd
712540b6a0
sched/wdog: improve accuracy of wd_gettime() in tickless mode
2018-11-09 09:27:40 -06:00
ligd
441cf6c207
sched/wdog: improve accuracy of wd_gettime() in tickless mode
2018-11-09 09:26:34 -06:00
Xiang Xiao
d32d9d4b24
fs/partition: Try MTDIOC_GEOMETRY IOCTL before bops's geometry
...
fs/driver/fs_blockpartition.c: Support MTD IOCTL
2018-11-08 09:41:54 -06:00
Xiang Xiao
a9ff43d93c
fs/aio, libs/libc/aio, sched/mqueue, sched/timer, and sched/signal: Remove the code duplication for SIGEV_THREAD.
2018-11-08 08:19:17 -06:00
dongjianli
057d555129
sched/signal and syscall/: Add support for pselect() and ppoll() functions
2018-11-08 07:45:23 -06:00
Xiang Xiao
27c7974cb1
sched/signal/sig_suspend.c: sigsuspend() shouldn't eat the pending signal but dispatch all instead
2018-11-08 07:39:37 -06:00
nchao
6509a0c0ca
binfmt/ and libs/libc: Make exepath_*() more common:
...
1. Move exepath_*() related code to libc/misc
1. Rename exepath_ to envpath_
2. Rename BINFMT_EXEPATH to LIB_ENVPATH
libs/libc/modlib: Add pre module library symbol table support
2018-11-08 07:27:14 -06:00
zhangyuan7
da737f3167
sched/group/group_foreachchild.c: group_foreachchild iterate by reverse order since the callback(e.g. group_killchildren) may remove the tcb from list
...
sched Kconfig and sched/task/exit.c: Add SCHED_EXIT_KILL_CHILDREN option to kill all child threads when the main thread of a task exits.
2018-11-08 07:03:30 -06:00
Gregory Nutt
4eeba49507
Documentation/NuttShell.html: Add a little more information for the NSH set command.
2018-10-02 11:57:39 -06:00
Gregory Nutt
af50ab0088
sched/environ/env_unsetenv.c: Fix a memory leak introduced by the previous commit.
2018-09-30 11:45:59 -06:00
Gregory Nutt
d3c2373940
sched/environ/env_unsetenv.c: Fix and error in unsetenv() when unsetting the last of the environment variables.
2018-09-30 11:40:10 -06:00
Gregory Nutt
7769bd490c
sched/signal/sig_nanosleep.c: Fix an error introduced with recent commit. Noted by Jussi Kivilinna.
2018-09-17 06:21:25 -06:00
Gregory Nutt
abc0e58799
sched/task/task_restart.c: Fix a compile error if CONFIG_DISABLE_SIGNALS defined.
2018-09-15 14:51:04 -06:00
Gregory Nutt
a7fd58c4db
Squashed commit of the following:
...
many locations: Change occurences of open() followed by file_detach() to file_open(). Change most non-controversion calls to open() to nx_open().
fs/inode/fs_fileopen.c: Flesh out file_open() with some interim, placeholder logic.
fs/inode/fs_fileopen.c: Add a framework for a file_open() implementation (no real logic in place yet).
fs/vfs/fs_open.c: Add nx_open() which is the same as open() except that it does not create a cancellation point nor does it modify the errno variable.
2018-09-15 10:49:41 -06:00
Gregory Nutt
dc48263a6a
libs/libc/wqueue/work_usrthread.c: Revise commit 49e725625a
. Use sigprocmask() so tht we do not lose a signal, not sched_lock() which will not do the job in SMP mode.
2018-09-14 09:02:03 -06:00
Gregory Nutt
9546481054
Fix some typographical errors.
2018-09-14 06:55:45 -06:00
Gregory Nutt
c9187c2928
task/task_restart.c: Restarted was had sigprocmask set. Noted by Jeongchan Kim
2018-09-14 06:51:38 -06:00
Gregory Nutt
a04d2eeb10
tools/Directories.mk: Correct the path to the installed libcxx directory.
2018-09-13 14:03:09 -06:00
Gregory Nutt
b3f0aab00a
Squashed commit of the following:
...
sched/wqueue/kwork_notifier.c: Redesign some data structures. struct works_s must appear at the beginning of the notifier entry structure. That is because it contains the work queue indices. This solves a harfault issue.
net/tcp/tcp_netpoll.c: tcp_iob_work() needs to free the allocated argument when it is finished.
net/tcp/tcp_send_buffered.c: Extend psock_tcp_cansend() so that it also requires that at least on IOB is also avaialble.
mm/iob: iob_navail() was returning the number of free IOB chain queue entries, not the number of free IOBs. Completely misnamed.
net/tcp/tcp_netpoll.c: Add logic to receive notifications when IOBs are freed (Needs CONFIG_NET_TCP_WRITE_BUFFERS and CONFIG_IOB_NOTIFIER). At present, does nothing because the logic in in psock_tcp_cansend() does not check for the availability of IOBs. That will change.
2018-09-12 08:57:06 -06:00
Gregory Nutt
a680553f35
net/tcp/tcp_netpoll.c: Add logic to receive notifications when IOBs are freed (Needs CONFIG_NET_TCP_WRITE_BUFFERS and CONFIG_IOB_NOTIFIER). At present, does nothing because the logic in in psock_tcp_cansend() does not check for the availability of IOBs. That will change.
2018-09-12 06:40:18 -06:00
Gregory Nutt
11a635dcb3
mm/iob: IOB free notifier should accept the work queue ID as a paramter. The notification may need to run on either the high- or low- priority work queue. sched/work: Change the default priority of the low-priority work queue to 100.
2018-09-11 08:49:39 -06:00
EunBong Song
91aa26774b
This patch prevent heap corruption as in below case.
...
TASK A TASK B
malloc()
mm_takesemaphore()
heap holder is set to TASK B
<--- preempt
...
task_exit()
Set to current task to
TASK B
Try to release tcb, and
stack memory
free()
mm_takesemaphore()
- Successfully obtain
semaphore because current
task and heap holder is
same.
Free memory....
Heap corrupt.
This change forces all de-allocations via sched_kfree() and sched_ufree()
to be delayed. Eliminating the immediate de-allocation prevents the
above problem with the the re-entrant semaphore because the deallocation
always occurs on the worker thread, never on TASK B.
There could be consequences in the timing of memory availability. We
will see.
2018-09-11 08:17:33 -06:00
Gregory Nutt
af0ee3c8f7
sched/wqueue: Add an option to work queue notifier so that the notification can occur on different work queues.
2018-09-11 07:22:23 -06:00
Gregory Nutt
39df7ed0c0
mm/iob and sched/semaphore: Work around some issues with the IOB throttle semaphore. It has some odd behaviors that can cause assertions in sem_post(). Also, it seems to get outside of its range occasionally. Need to REVISIT this.
2018-09-10 11:32:09 -06:00
Gregory Nutt
53930763f4
sched/sched/sched_waitpid.c: Remove a bad error check. I though Juha already removed this problem. Did I lose his change?
2018-09-10 06:57:12 -06:00
Gregory Nutt
4cb61bd8c2
sched/wqueue: Notifier design cleanup. The original concept used pre-allocated notification data structures. However, the notification dat must persist for an indeterminate amount of time. So the design was modified to use dynamically allocted data structures. This commit simplifies the design by removed some residual 'machinery' that is no longer needed.
2018-09-10 06:29:51 -06:00
Gregory Nutt
09d5d05b95
net/TCP: Extend the TCP notification logic logic so that it will also report loss of connection events.
2018-09-09 17:32:10 -06:00
Gregory Nutt
9d3148406c
Signals were not a good choice of IPC to implement the poll function for several reasons: In order to handle the asynchrnous poll-related event, a substantial amount of state information is needed. Signals are only capable of passing minimal amounts of data. There are also complexities with performing kernel space signal handlers in kernel space code that is better to avoid. So, instead of signals, the equivalent logic was converted to run via a callback that executes on the high-priority work queue.
...
Squashed commit of the following:
Fix up some final compile isses.
net/netdev: Convert the network down notification logic to use the new wqueue-based notification factility.
net/udp: Convert the UDP readahead notification logic to use the new wqueue-based notification factility.
net/tcp: Convert the TCP readahead notification logic to use the new wqueue-based notification factility.
mm/iob: Convert the IOB notification logic to use the new wqueue-based notification factility.
sched/wqueue: Signals are not good IPCs to support the target poll functionality for several reasons including the amount of data that can be passed with a signal and in the fact that in protected and kernel modes, user threads executing signal handlers in protected, kernel memory is problematic. Instead, convert the same logic to perform the notifications via function callback on the high priority work queue.
2018-09-09 15:01:44 -06:00
Gregory Nutt
20814acad2
sched/signal: In signal notification facility, use sigqueue() to notify vs. kill(). With sigqueue, we can pass more info (but still not enough).
2018-09-09 11:57:25 -06:00
Gregory Nutt
32e3e51678
net/netdev: Add signal notification for the case where the network goes down.
2018-09-09 10:39:25 -06:00