Please review the draft opinion by October 17th, 2008. The ms and txt versions are in the case directory.
Frank. --------------------- sun microsystems Systems Architecture Committee _________________________________________________________________ Subject: Volo -- Low Latency Socket Framework Submitted by: Rao Shoaib File: PSARC/2007/587/opinion.ms Date: August 20th, 2007 Committee: Kais Belgaied (opinion written by Frank Che), Mark Carlson, Garrett D'Amore Product Approval Committee: Solaris PAC solaris-pac at sun.com 1. Summary The Volo project delivers a framework to dynamically add function call based, low latency, and high performance sock- ets. It also delivers a kernel socket API. 2. Decision & Precedence Information The project is approved as specified in references [1] and [2] and as modified in section 7.1 below. The project may be delivered in a minor release of Solaris. 3. Interfaces The project exports the following interfaces. ____________________________________________________________________________ | Interfaces Exported | |_______________________|_______________________|__________________________| |Interface | Classification | Comments | |_______________________|_______________________|__________________________| |socket_create | Project Private | <fs/sockfs/sockcommon.h>| |socket_newconn | Project Private | <fs/sockfs/sockcommon.h>| |socket_bind | Project Private | <fs/sockfs/sockcommon.h>| |socket_listen | Project Private | <fs/sockfs/sockcommon.h>| |socket_accept | Project Private | <fs/sockfs/sockcommon.h>| |socket_connect | Project Private | <fs/sockfs/sockcommon.h>| |socket_sendmsg | Project Private | <fs/sockfs/sockcommon.h>| |socket_sendmblk | Project Private | <fs/sockfs/sockcommon.h>| |_______________________|_______________________|__________________________| PSARC/2007/587 Sun Proprietary/Need to Know - 2 - ____________________________________________________________________________ | Interfaces Exported | |_______________________|_______________________|__________________________| |Interface | Classification | Comments | |_______________________|_______________________|__________________________| |socket_recvmsg | Project Private | <fs/sockfs/sockcommon.h>| |socket_getpeername | Project Private | <fs/sockfs/sockcommon.h>| |socket_getsockname | Project Private | <fs/sockfs/sockcommon.h>| |socket_getsockopt | Project Private | <fs/sockfs/sockcommon.h>| |socket_setsockopt | Project Private | <fs/sockfs/sockcommon.h>| |socket_ioctl | Project Private | <fs/sockfs/sockcommon.h>| |socket_close | Project Private | <fs/sockfs/sockcommon.h>| |socket_destroy | Project Private | <fs/sockfs/sockcommon.h>| |socket_poll | Project Private | <fs/sockfs/sockcommon.h>| |socket_shutdown | Project Private | <fs/sockfs/sockcommon.h>| |SOCKET_SLEEP | Project Private | <fs/sockfs/sockcommon.h>| |SOCKET_NOSLEEP | Project Private | <fs/sockfs/sockcommon.h>| |sock_lower_handle_t | Consolidation Private| <sys/socket_proto.h> | |sock_upper_handle_t | Consolidation Private| <sys/socket_proto.h> | |sock_upcalls_t | Consolidation Private| <sys/socket_proto.h> | |sock_downcalls_t | Consolidation Private| <sys/socket_proto.h> | |struct sock_options | Consolidation Private| <sys/socket_proto.h> | |sock_gen_t | Consolidation Private| <sys/socket_proto.h> | |SOCK_GEN_INIT | Consolidation Private| <sys/socket_proto.h> | |SOCK_GEN_BUMP | Consolidation Private| <sys/socket_proto.h> | |SOCK_GEN_LT | Consolidation Private| <sys/socket_proto.h> | |sock_opctl_op_t | Consolidation Private| <sys/socket_proto.h> | |sock_opctl_action_t | Consolidation Private| <sys/socket_proto.h> | |so_sonodeops | Consolidation Private| <sys/socket_proto.h> | |so_upcalls | Consolidation Private| <fs/sockfs/sockcommon.h>| |so_vnodeops | Consolidation Private| <fs/sockfs/sockcommon.h>| |socket_create_common | Consolidation Private| <fs/sockfs/sockcommon.h>| |socket_destroy_common | Consolidation Private| <fs/sockfs/sockcommon.h>| |smod_reg_t | Consolidation Private| <fs/sockfs/sockcommon.h>| |ksocket_socket | Consolidation Private| <sys/ksocket.h> | |ksocket_bind | Consolidation Private| <sys/ksocket.h> | |ksocket_listen | Consolidation Private| <sys/ksocket.h> | |ksocket_accept | Consolidation Private| <sys/ksocket.h> | |ksocket_connect | Consolidation Private| <sys/ksocket.h> | |ksocket_send | Consolidation Private| <sys/ksocket.h> | |ksocket_sendto | Consolidation Private| <sys/ksocket.h> | |ksocket_sendmsg | Consolidation Private| <sys/ksocket.h> | |ksocket_recv | Consolidation Private| <sys/ksocket.h> | |ksocket_recvfrom | Consolidation Private| <sys/ksocket.h> | |ksocket_recvmsg | Consolidation Private| <sys/ksocket.h> | |ksocket_getpeername | Consolidation Private| <sys/ksocket.h> | |ksocket_getsockname | Consolidation Private| <sys/ksocket.h> | |ksocket_getsockopt | Consolidation Private| <sys/ksocket.h> | |ksocket_setsockopt | Consolidation Private| <sys/ksocket.h> | |ksocket_ioctl | Consolidation Private| <sys/ksocket.h> | |ksocket_close | Consolidation Private| <sys/ksocket.h> | |ksocket_setcallbacks | Consolidation Private| <sys/ksocket.h> | |ksocket_hold | Consolidation Private| <sys/ksocket.h> | |ksocket_rele | Consolidation Private| <sys/ksocket.h> | |_______________________|_______________________|__________________________| PSARC/2007/587 Sun Proprietary/Need to Know - 3 - ____________________________________________________________________________ | Interfaces Exported | |_______________________|_______________________|__________________________| |Interface | Classification | Comments | |_______________________|_______________________|__________________________| |ksocket_t | Consolidation Private| <sys/ksocket.h> | |ksocket_callbacks_t | Consolidation Private| <sys/ksocket.h> | |ksocket_event_t | Consolidation Private| <sys/ksocket.h> | |KSOCKET_CB_CONNECTED | Consolidation Private| <sys/ksocket.h> | |KSOCKET_CB_DISCONNECTED| Consolidation Private| <sys/ksocket.h> | |KSOCKET_CB_NEWDATA | Consolidation Private| <sys/ksocket.h> | |KSOCKET_CB_NEWCONN | Consolidation Private| <sys/ksocket.h> | |KSOCKET_CB_OOBDATA | Consolidation Private| <sys/ksocket.h> | |KSOCKET_CB_CANSEND | Consolidation Private| <sys/ksocket.h> | |KSOCKET_CB_CANTSENDMORE| Consolidation Private| <sys/ksocket.h> | |KSOCKET_CB_CANTRECVMORE| Consolidation Private| <sys/ksocket.h> | |KSOCKET_CB_ERROR | Consolidation Private| <sys/ksocket.h> | |KSOCKET_CB_PROPCHANGED | Consolidation Private| <sys/ksocket.h> | |KSOCKET_CB_RELEASED | Consolidation Private| <sys/ksocket.h> | |KSOCKET_SLEEP | Consolidation Private| <sys/ksocket.h> | |KSOCKET_NOSLEEP | Consolidation Private| <sys/ksocket.h> | |_______________________|_______________________|__________________________| 4. Opinion 4.1. Interface stability of kernel APIs delivered During the commitment review, one committee member asked how external users could use the kernel API delivered by this project if their stability level are private. The project team state that these interfaces will be kept private in the first phase of the project. The project team agreed to come back and revisit this issue when the interfaces are more mature to consider a more stable commitment level. 4.2. Version enforcement and extensibility During the commitment review, members of the committee had questions about the version enforcement and updates. While versionning the interfaces seemed appropriate to accommodate future evolutions of the interfaces, some committee member judged it useful to raise the project team's awareness to the cost of implementing and maintaining multiple coexisting versions, should they see the future need to do so. 4.3. Explicit sd_unbind During the commitment review, members of the committee thought it's better to provide sd_unbind() rather than rely on a magic combination of parameters to sd_bind() for an unbind operation. This issue resulted in a Technical Change Request as described in section 7.1 below. PSARC/2007/587 Sun Proprietary/Need to Know - 4 - 5. Minority Opinion(s) None. 6. Advisory Information None. 7. Appendices 7.1. Appendix A: Technical Changes Required 1. Add an explicit sd_unbind API. 7.2. Appendix B: Technical Changes Advised None. 7.3. Appendix C: Reference Material Path names are relative to the case directory PSARC/2007/587. 1. PSARC 20 Questions File: inception.materials/volo.psarc.txt 2. Volo design document File: commitment.materials/volo_design.pdf PSARC/2007/587 Sun Proprietary/Need to Know