Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
rt-thread
提交
3aa144d0
R
rt-thread
项目概览
BaiXuePrincess
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3aa144d0
编写于
5月 05, 2015
作者:
B
Bernard Xiong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[DFS] add select implementation.
上级
6ea06b4b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
99 addition
and
1 deletion
+99
-1
components/dfs/filesystems/lwip/dfs_lwip.c
components/dfs/filesystems/lwip/dfs_lwip.c
+3
-1
components/dfs/filesystems/lwip/lwip_select.c
components/dfs/filesystems/lwip/lwip_select.c
+96
-0
未找到文件。
components/dfs/filesystems/lwip/dfs_lwip.c
浏览文件 @
3aa144d0
...
...
@@ -35,7 +35,9 @@ int dfs_lwip_getsocket(int fd)
_dfs_fd
=
fd_get
(
fd
);
if
(
_dfs_fd
==
RT_NULL
)
return
-
1
;
return
0
;
if
(
_dfs_fd
->
type
!=
FT_SOCKET
)
return
-
1
;
return
(
int
)
_dfs_fd
->
data
;
}
int
dfs_lwip_ioctl
(
struct
dfs_fd
*
file
,
int
cmd
,
void
*
args
)
...
...
components/dfs/filesystems/lwip/lwip_select.c
0 → 100644
浏览文件 @
3aa144d0
#include <rtthread.h>
#include <sys/select.h>
#ifdef RT_USING_LWIP
int
select
(
int
maxfdp1
,
fd_set
*
readset
,
fd_set
*
writeset
,
fd_set
*
exceptset
,
struct
timeval
*
timeout
)
{
int
index
,
result
;
int
sock
,
maxfd
;
fd_set
sock_readset
;
fd_set
sock_writeset
;
fd_set
sock_exceptset
;
FD_ZERO
(
&
sock_readset
);
FD_ZERO
(
&
sock_writeset
);
FD_ZERO
(
&
sock_exceptset
);
maxfd
=
0
;
for
(
index
=
0
;
index
<
maxfdp1
;
index
++
)
{
if
(
readset
&&
FD_ISSET
(
index
,
readset
))
{
sock
=
dfs_lwip_getsocket
(
index
);
if
(
sock
>
maxfd
)
maxfd
=
sock
;
FD_SET
(
sock
,
&
sock_readset
);
}
if
(
writeset
&&
FD_ISSET
(
index
,
writeset
))
{
sock
=
dfs_lwip_getsocket
(
index
);
if
(
sock
>
maxfd
)
maxfd
=
sock
;
FD_SET
(
sock
,
&
sock_writeset
);
}
if
(
exceptset
&&
FD_ISSET
(
index
,
exceptset
))
{
sock
=
dfs_lwip_getsocket
(
index
);
if
(
sock
>
maxfd
)
maxfd
=
sock
;
FD_SET
(
sock
,
&
sock_exceptset
);
}
}
if
(
maxfd
==
0
)
return
-
EBADF
;
maxfd
+=
1
;
result
=
lwip_selscan
(
maxfd
,
&
sock_readset
,
&
sock_writeset
,
&
sock_exceptset
,
timeout
);
if
(
readset
)
FD_ZERO
(
readset
);
if
(
writeset
)
FD_ZERO
(
writeset
);
if
(
exceptset
)
FD_ZERO
(
exceptset
);
if
(
result
!=
-
1
)
{
for
(
index
=
0
;
index
<
maxfd
;
index
++
)
{
/* check each socket */
if
((
FD_ISSET
(
index
,
&
sock_readset
))
||
(
FD_ISSET
(
index
,
&
sock_writeset
))
||
(
FD_ISSET
(
index
,
&
sock_exceptset
)))
{
int
fd_index
;
/* Because we can not get the corresponding fd, we have to search it one by one */
for
(
fd_index
=
0
;
fd_index
<
maxfdp1
;
fd_index
++
)
{
sock
=
dfs_lwip_getsocket
(
fd_index
);
if
(
sock
==
index
)
/* found it */
{
if
(
readset
&&
FD_ISSET
(
index
,
&
sock_readset
))
{
FD_SET
(
sock
,
readset
);
}
if
(
writeset
&&
FD_ISSET
(
index
,
&
sock_writeset
))
{
FD_SET
(
sock
,
writeset
);
}
if
(
exceptset
&&
FD_ISSET
(
index
,
&
sock_exceptset
))
{
FD_SET
(
sock
,
exceptset
);
}
/* end of search */
break
;
}
}
}
}
}
return
result
;
}
#endif
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录