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



Reply via email to