The test consists of two parts:
- A tester that tries to trigger wrong states of work queue
- A verifier that checks whether the wqueue is still working properly
The tester is trying to queue and cancel work several times with
priority lower/same/higher than the work queue.
Most wrong cases are likely to happen with high priority like:
- If `cancel` never decreases semcount, the count may keep growing
and finally overflow
- If `cancel` is decreasing semcount too much, the `work_thread` may
be waken up less times than expected
The lower/same priority testers are just added for covering other
unexpected situations.
The verifier is trying to queue some works and check they are called as
expected:
- Frist queue a 'sleep' worker, to let a work queue thread be in busy
status and not waiting on sem, while other work queue thread(s) (if
any) still waiting for sem. If sem is in wrong state, it may cause
wrong behavior in either thread waiting/not waiting on the sem.
- Then queue a few count works, if the work queue(s) are still working
properly, these works should finally be all called once.
Signed-off-by: Zhe Weng <wengzhe@xiaomi.com>
The timer is for connect timeout, but is not cancelled on connect error,
then it may be triggered after ftpc quit and cause heap-use-after-free.
Signed-off-by: Zhe Weng <wengzhe@xiaomi.com>
The tarball from github has same file layout as git repo while the tarball from ftp doesn't.
Update Makefile to accommodate this change.
Signed-off-by: Xu Xingliang <xuxingliang@xiaomi.com>
Previously, if the read bytes were less than the requested, the
file was closed immediately. This behavior, however, does not
consider the fact that the read operation may be blocking when
no bytes are available at the moment. That is true for a named pipe
(FIFO), for instance. Thus, reading it again lets to the underlying
file system the decision of 1) blocking until bytes become
available or 2) return 0 immediately (the case for actual files) or
3) read available bytes.
If the code only change c_oflag, c_iflag and c_lflag, not c_cflag in termios.
Follow up the change from kernel: https://github.com/apache/nuttx/pull/8843
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Fix https://github.com/apache/nuttx/issues/8731, don't rely on the vt100 to report
the cursor position.
This avoid the implicit input (response of get cursor command) during the user inputs.
Notice: This assume that the nsh prompt is always shown at line start.
Signed-off-by: Huang Qi <huangqi3@xiaomi.com>
nsh_vars.c: In function 'nsh_setvar':
nsh_vars.c:285:3: error: incompatible implicit declaration of built-in function 'sprintf' [-Werror]
285 | sprintf(pair, "%s=%s", name, value);