实现SEQPACKET类型的socketpair系统调用

socketpair被ruststd在子进程创建时使用,NovaShell和DragonReach都需要使用,可见实现socketpair是当务之急

目前DragonOS只有tcp(Stream)、udp(Dgram)和raw(Raw)三种类型的socket实现,而Seqpacket类似于Stream和Dgram的结合体,不确定能否使用现成的实现,或许可以使用raw来实现

貌似 个人资料 - Jomocool - DragonOS开源社区 正在做socketpair的调用,但是我不清楚他做到什么程度。

在linux内核中是使用面向消息的套接字(Seqpacket)实现的,但是他主要就是用来进行进程间通信的,就目前来说,如果说急的话,我觉得简要实现(实现类似pipe的功能)就可以支持NovaShell和DragonReach的使用,但是不确定之后的使用场景会不会出现问题。

1 个赞

就是说可以用pipe2临时顶替一下对吧?

对的,之前drstd还是DragonReach来着,貌似 @GnoCiYeH 就是这么干的。

不是哦,当时是改的条件编译 :rofl:,直接绕开socketpair那条路哈哈哈。

不行,因为对socketpair的读写实质上还是对socket的读写,pipe和它都不是一个文件系统。我的意思是在内核以相同的思路简要实现。

确实,ruststd里对这俩的处理方法也不同