📄 rfc120.txt
字号:
NETWORK PL1 SUBPROGRAMS April 21, 1971 Mark Krilanovich Computer Research Lab University of California Santa Barbara, California [Page 1]RFC 120 NETWORK PL1 SUBPROGRAMS PREFACE The subroutines described in this document have been implemented at UCSB and make the Network (via the NCP) accessible to PL1 programs executing in the 360/75. They are callable from within any PL1 main program or subroutine compiled at UCSB. A set of assembly-language written subprograms is provided to facilitate the use of the Network by PL1 programmers. They serve as an interface between the user and the Network Control Program (NCP), which supervises all Network operations at this site. A concept fundamental to PL1 Network operations is that of a completion code variable. Associated with each socket that is not in the closed state is a unique variable, called a completion code variable. This variable serves two purposes: it identifies the local socket referenced, and upon completion of the operation it contains a completion code to indicate the outcome of the operation to the programmer. It may be used at any time for any purpose other than Network operations. Its value at the beginning of a Network operation is immaterial; rather, it is the variable itself that is important. In all Network operations, whenever a completion code variable is called for, the only acceptable attributes for the variable are BINARY FIXED(31,0)ALIGNED. In general, the subprograms will initiate the operation, and enter the WAIT state (consume no CPU time) until notified by the NCP of the completion of the operation. For such operations, the programmer supplies a time limit, with attributes BINARY FIXED(31,0), which specifies, in tenths of a second, the maximum length of time the subprogram is to wait for the operation to complete. If this time limit is exceeded, a completion code is supplied to indicate the error, and control is returned to the calling program, with the operation still pending. In those operations requiring a socket to be specified by its socket identifier, the following format is used. The identifier is specified as a BINARY FIXED(31,0) array, singly dimensioned with at least two elements, and with a lower subscript bound of one. The first element is taken to be the site number, and the second element the socket number. A socket number may have any value, positive, negative, or zero. Since negative numbers are represented internally in two's complement form, for the purposes of the gender of a socket, a socket number is even or odd according to whether its absolute value is even or odd, respectively. [Page 2]RFC 120 NETWORK PL1 SUBPROGRAMS Following is a description of each subprogram, its function and calling sequence.(1) OPEN By invoking this subprogram, the user requests that the specified local socket be removed from the closed state and thus be prepared to participate in data transfer. There are three distinct operations that can be performed by this subprogram, and these are described below: (A) CONNECT By initiating this operation, the user requests that the specified local socket be logically connected to the specified foreign socket, and that data transfer between the two sockets be enabled. The subprogram will wait until the foreign socket either accepts or rejects the connection attempt. This operation is valid only when the socket is in the closed state. The calling sequence is as follows: CALL @OPEN(cmpcd, time,lclsck,fgnsck,ws); where 'cmpcd' is the completion code variable to be associated with the local socket. 'time' is the length of time the subprogram is to wait for the completion of the operation. 'lclsck' is the socket identifier of the local socket. 'fgnsck' is the socket identifier of the foreign socket. 'ws' is a workspace which has the same attributes as a socket identifier, and, if the operation if successful, will become associated with the local socket for the life of the connection. In response to certain future operations, information may be returned to the programmer in this workspace. The following completion codes are possible for this operation: 0, The operation was successful and the connection has been established 4, The specified completion code variable is already assigned to a socket; the operation was suppressed 8, The specified local socket is not in the closed [Page 3]RFC 120 NETWORK PL1 SUBPROGRAMS state; the operation was suppressed 12, All communication paths to the specified foreign site are in use; the operation was suppressed 16, Local resources are insufficient to support another connection; the operation was suppressed 20, The connection attempt was rejected by the foreign process 24, The specified local socket is not local to UCSB; the operation was suppressed 28, The specified foreign site is invalid; the operation was suppressed 32, An addressing or protection exception was encountered with respect to the specified workspace; the operation was suppressed 36, Either hardware at the foreign site is inoperative or the NCP's counterpart at the foreign site does not exist or has failed 40, Local and foreign sockets are both either send or receive sockets; the operation was suppressed 44, By operator command, all Network operations were terminated; the socket will be closed 60, An NCP control transmission error occured; the operation was suppressed 252, The specified time limit was exceeded; the operation was initiated but not completed (B) LISTEN This operation is a request for notification of any connection attempt directed toward the specified local socket. The subprogram waits until such a call is received, at which time the calling process' socket identifier is returned to the calling program. This operation is valid only when the designated local socket is in the closed state. The calling sequence is as follows: CALL @OPEN(cmpcd, time,lclsck,ws); where 'cmpcd' is the completion code variable to be associated with the local socket. 'time' is the length of time the subprogram is to wait for the completion of the operation. 'lclsck' is the socket identifier of the local socket. 'ws' is a workspace which, if the operation is successful, will contain the socket identifier of the calling socket, and will become associated with [Page 4]RFC 120 NETWORK PL1 SUBPROGRAMS the local socket for the life of the connection. 'ws' has the same attributes as a socket identifier. The following completion codes are possible for this operation: 0, The operation was successful and a call has been received 4, The specified completion code variable is already assigned to a socket; the operation was suppressed 8, The specified local socket is not in the closed state; the operation was suppressed 12, Local resources are insufficient to support another connection; the operation was suppressed 16, The specified local socket is not local to UCSB; the operation was suppressed 20, An addressing or protection exception was encountered with respect to the specified workspace; the operation was suppressed 44, By operator command, all Network operations were terminated; the socket will be closed 252, The specified time limit was exceeded; the operation was initiated but not completed (C) ACCEPT This operation accepts connection with the foreign socket whose call caused successful completion of a previous LISTEN operation by the specified local socket. After completion of this operation, data may be transferred to or from the local socket, depending on its gender. This operation is valid only when the last operation referencing the local socket was a LISTEN operation. The subprogram will wait until the operation is completed. The calling sequence is as follows: CALL @OPEN(cmpcd, time); where 'cmpcd' is the completion code variable associated with the local socket by a previous LISTEN operation. 'time' is the length of time the subprogram is to wait for the completion of the operation. The following completion codes are possible for this operation: [Page 5]RFC 120 NETWORK PL1 SUBPROGRAMS 0, The operation was successful, and the connection is established 4, The specified local socket is in the closed state (the NCP may have received an abort notification from the foreign process); the operation was suppressed 8, The previous operation specifying the designated local socket was not a LISTEN; the operation was suppressed 12, All communication paths to the specified foreign site are in use; the socket has been returned to the closed state 252, The specified time limit was exceeded; the operation was initiated but not completed
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -