dfs v2 修改 fd_new 的 startfd 起始值为 0 ;修复 futex_wait 超时时间换算异常; (#7705)
Signed-off-by: yangfasheng <yangfasheng@live.com>
This commit is contained in:
parent
3e4797c63c
commit
b4e59bac4e
|
@ -197,7 +197,7 @@ int fdt_fd_new(struct dfs_fdtable *fdt)
|
|||
dfs_file_lock();
|
||||
|
||||
/* find an empty fd entry */
|
||||
idx = fd_alloc(fdt, DFS_STDIO_OFFSET);
|
||||
idx = fd_alloc(fdt, 0);
|
||||
/* can't find an empty fd entry */
|
||||
if (idx < 0)
|
||||
{
|
||||
|
|
|
@ -30,15 +30,34 @@ int libc_system_init(void)
|
|||
dev_console = rt_console_get_device();
|
||||
if (dev_console)
|
||||
{
|
||||
int fd = libc_stdio_set_console(dev_console->parent.name, O_RDWR);
|
||||
if (fd < 0)
|
||||
int fd, ret;
|
||||
char name[STDIO_DEVICE_NAME_MAX];
|
||||
|
||||
rt_snprintf(name, sizeof(name) - 1, "/dev/%s", dev_console->parent.name);
|
||||
name[STDIO_DEVICE_NAME_MAX - 1] = '\0';
|
||||
|
||||
fd = open(name, O_RDWR);
|
||||
if (fd >= 0)
|
||||
{
|
||||
/* set fd (0, 1, 2) */
|
||||
ret = sys_dup2(fd, 0);
|
||||
if (ret != fd)
|
||||
{
|
||||
close(fd);
|
||||
}
|
||||
sys_dup2(ret, 1);
|
||||
sys_dup2(ret, 2);
|
||||
|
||||
ret = libc_stdio_set_console(dev_console->parent.name, O_RDWR);
|
||||
if (ret < 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
/* set fd (0, 1, 2) */
|
||||
sys_dup2(fd, 0);
|
||||
sys_dup2(fd, 1);
|
||||
sys_dup2(fd, 2);
|
||||
}
|
||||
#endif /* RT_USING_POSIX_STDIO */
|
||||
return 0;
|
||||
|
|
|
@ -124,7 +124,12 @@ int futex_wait(struct rt_futex *futex, int value, const struct timespec *timeout
|
|||
/* with timeout */
|
||||
if (timeout)
|
||||
{
|
||||
rt_int32_t time = rt_timespec_to_tick(timeout);
|
||||
rt_int32_t time = timeout->tv_sec * RT_TICK_PER_SECOND + timeout->tv_nsec * RT_TICK_PER_SECOND / NANOSECOND_PER_SECOND;
|
||||
|
||||
if (time < 0)
|
||||
{
|
||||
time = 0;
|
||||
}
|
||||
|
||||
/* start the timer of thread */
|
||||
rt_timer_control(&(thread->thread_timer),
|
||||
|
|
Loading…
Reference in New Issue