mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-09-20 17:44:20 +08:00
sync smart & dfs (#8672)
Signed-off-by: xqyjlj <xqyjlj@126.com> Signed-off-by: Shell <smokewood@qq.com> Co-authored-by: xqyjlj <xqyjlj@126.com>
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
* 2023-08-12 Meco Man re-implement RT-Thread lightweight timezone API
|
||||
* 2023-09-15 xqyjlj perf rt_hw_interrupt_disable/enable
|
||||
* 2023-10-23 Shell add lock for _g_timerid
|
||||
* 2023-11-16 Shell Fixup of nanosleep if previous call was interrupted
|
||||
*/
|
||||
|
||||
#include "sys/time.h"
|
||||
@@ -544,20 +545,24 @@ int nanosleep(const struct timespec *rqtp, struct timespec *rmtp)
|
||||
unsigned long ns = rqtp->tv_sec * NANOSECOND_PER_SECOND + rqtp->tv_nsec;
|
||||
rt_ktime_boottime_get_ns(&old_ts);
|
||||
rt_ktime_hrtimer_ndelay(ns);
|
||||
if (rt_get_errno() == -RT_EINTR)
|
||||
if (rt_get_errno() == RT_EINTR)
|
||||
{
|
||||
if (rmtp)
|
||||
{
|
||||
rt_base_t rsec, rnsec;
|
||||
rt_ktime_boottime_get_ns(&new_ts);
|
||||
|
||||
rmtp->tv_sec = 0;
|
||||
rmtp->tv_nsec =
|
||||
(old_ts.tv_nsec + ns) - ((new_ts.tv_sec - old_ts.tv_sec) * NANOSECOND_PER_SECOND + new_ts.tv_nsec);
|
||||
|
||||
if (rmtp->tv_nsec > NANOSECOND_PER_SECOND)
|
||||
rsec = old_ts.tv_sec + rqtp->tv_sec - new_ts.tv_sec;
|
||||
rnsec = old_ts.tv_nsec + rqtp->tv_nsec - new_ts.tv_nsec;
|
||||
if (rnsec < 0)
|
||||
{
|
||||
rmtp->tv_nsec %= NANOSECOND_PER_SECOND;
|
||||
rmtp->tv_sec += rmtp->tv_nsec / NANOSECOND_PER_SECOND;
|
||||
rmtp->tv_sec = rsec - 1;
|
||||
rmtp->tv_nsec = NANOSECOND_PER_SECOND + rnsec;
|
||||
}
|
||||
else
|
||||
{
|
||||
rmtp->tv_sec = rsec;
|
||||
rmtp->tv_nsec = rnsec;
|
||||
}
|
||||
}
|
||||
rt_set_errno(EINTR);
|
||||
|
||||
@@ -32,9 +32,13 @@ extern "C" {
|
||||
|
||||
#define DT_UNKNOWN 0x00
|
||||
#define DT_FIFO 0x01
|
||||
#define DT_SYMLINK 0x03
|
||||
#define DT_CHR 0x02
|
||||
#define DT_DIR 0x04
|
||||
#define DT_BLK 0x06
|
||||
#define DT_REG 0x08
|
||||
#define DT_LNK 0x0a
|
||||
#define DT_SOCK 0x0c
|
||||
#define DT_SYMLINK DT_LNK
|
||||
|
||||
#ifndef HAVE_DIR_STRUCTURE
|
||||
#define HAVE_DIR_STRUCTURE
|
||||
|
||||
@@ -15,6 +15,10 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_MUSLLIBC
|
||||
#include_next <sys/ioctl.h>
|
||||
#else
|
||||
|
||||
struct winsize
|
||||
{
|
||||
unsigned short ws_row;
|
||||
@@ -23,9 +27,6 @@ struct winsize
|
||||
unsigned short ws_ypixel;
|
||||
};
|
||||
|
||||
#ifdef RT_USING_MUSLLIBC
|
||||
#include <bits/ioctl.h>
|
||||
#else
|
||||
/*
|
||||
* Direction bits, which any architecture can choose to override
|
||||
* before including this file.
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define _POSIX_VDISABLE 0
|
||||
|
||||
#define STDIN_FILENO 0 /* standard input file descriptor */
|
||||
#define STDOUT_FILENO 1 /* standard output file descriptor */
|
||||
#define STDERR_FILENO 2 /* standard error file descriptor */
|
||||
|
||||
@@ -13,12 +13,37 @@
|
||||
|
||||
#include_next <fcntl.h>
|
||||
|
||||
#ifndef O_DIRECTORY
|
||||
#define O_DIRECTORY 0x200000
|
||||
#endif
|
||||
#define O_CREAT 0100
|
||||
#define O_EXCL 0200
|
||||
#define O_NOCTTY 0400
|
||||
#define O_TRUNC 01000
|
||||
#define O_APPEND 02000
|
||||
#define O_NONBLOCK 04000
|
||||
#define O_DSYNC 010000
|
||||
#define O_SYNC 04010000
|
||||
#define O_RSYNC 04010000
|
||||
#define O_DIRECTORY 040000
|
||||
#define O_NOFOLLOW 0100000
|
||||
#define O_CLOEXEC 02000000
|
||||
|
||||
#define O_ASYNC 020000
|
||||
#define O_DIRECT 0200000
|
||||
#define O_LARGEFILE 0400000
|
||||
#define O_NOATIME 01000000
|
||||
#define O_PATH 010000000
|
||||
#define O_TMPFILE 020040000
|
||||
#define O_NDELAY O_NONBLOCK
|
||||
|
||||
#ifndef O_BINARY
|
||||
#define O_BINARY 0x10000
|
||||
#define O_BINARY 00
|
||||
#endif
|
||||
|
||||
#ifndef O_SEARCH
|
||||
#define O_SEARCH O_PATH
|
||||
#endif /* O_SEARCH */
|
||||
|
||||
#ifndef O_EXEC
|
||||
#define O_EXEC O_PATH
|
||||
#endif /* O_EXEC */
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user