【socketpair系统调用】开发进度

今天试验了通过TcpSocket或管道文件系统实现socketpair,均以失败告终。

计划:由于smoltcp没有适用于Seqpacket的Socket,准备实现一个SeqpacketSocket。

这个可以和 实现SEQPACKET类型的socketpair系统调用 - 内核开发 - DragonOS开源社区 合并在一起

你打算基于raw::Socket,还是从头写?

因为tcpsocket是最终会导向底层的virtio网卡。

ps:如果连接本机,我们没有实现本地回环的设备,从而不支持127.0.0.1. 如果将来写了,应该tcp也能发给本机

SeqPacket的实现用到Stream、Dgram和自己实现的函数
image
这咋搞才能复用函数(我觉得重复写一遍不优雅

应该不用,因为Seqpacket实际上是不绑定端口的,更像是全双工的pipe

2 个赞

由于SP在socket中用的少,我打算先为socketpair实现SP,不为socket实现

1:初步实现socketpair,能够读写SeqpacketSocket
next:
(1)完善SeqpacketSocket接口
(2)完善socketpair系统调用函数的功能

1 个赞

这么快实现了哈哈哈

据他所说,这个实现很简陋,目前SeqpacketSocket甚至没有对应的SocketHandleItem。仅仅是在需要获取HandleItem的时候做了判断

目前还只是一个很简陋的状态 :rofl:


如图,现在已经能运行用ruststd编译的DragonReach(#33)了

我正在整理项目,弄好了就开pr

你们俩是在合作开发吗,还是说各做个的哈哈哈,给我整蒙了

对的,他是为了解决DragonReach的问题所以也来开发socketpair了

会互相交流借鉴的

哈哈哈多个方式解决同一个问题挺好的

完工了!
请尽快检查代码
使用musl重构项目 by yuyi2439 · Pull Request #33 · DragonOS-Community/DragonReach (github.com)
添加socketpair by yuyi2439 · Pull Request #505 · DragonOS-Community/DragonOS (github.com)

我今天晚上继续review一下,今早简单看了看代码,今晚我做一下测试,白天现在在外面哈。

1 个赞

能不能顺便实现Stream类型的socketpair呢