System for transferring a data directly from/to an address space of a calling program upon the calling program invoking a high performance interface for computer networks
First Claim
1. A computer messaging apparatus, comprising:
- (a) a processor coupled to a data communications device; and
(b) a high performance interface, executed by the processor, for sending data to a remote device and for receiving data from a remote device via the data communications device, where the high performance interface transfers the data directly to and from an address space of a calling computer program, executed by the processor, that invokes the high performance interface, thereby eliminating use of intermediate buffers obtained from an address space of an operating system executed by the processor,wherein the transferred data includes header information identifying a communications request it is associated with so that a plurality of communications requests can exist concurrently, andwherein the high performance interface stores the data in a predefined amount of the address space of the operating system prior to the calling computer program invoking the high performance interface.
2 Assignments
0 Petitions
Accused Products
Abstract
The present invention discloses a method, apparatus, and article of manufacture comprising a high performance interface for sending data to a remote device and receiving data from a remote device via a data communications device coupled to a processor. In performing these functions, the high performance interface supports asynchronous input/output operations. Moreover, the high performance interface transfers the data directly to and from the address space of a calling program, thereby eliminating use of intermediate buffers. In those instances where the calling program has not invoked the high performance interface, data can be stored in the address space of the operating system until the high performance interface is invoked by the calling computer program. Further, status can be returned to a remote device using back-channel capabilities.
51 Citations
16 Claims
-
1. A computer messaging apparatus, comprising:
-
(a) a processor coupled to a data communications device; and (b) a high performance interface, executed by the processor, for sending data to a remote device and for receiving data from a remote device via the data communications device, where the high performance interface transfers the data directly to and from an address space of a calling computer program, executed by the processor, that invokes the high performance interface, thereby eliminating use of intermediate buffers obtained from an address space of an operating system executed by the processor, wherein the transferred data includes header information identifying a communications request it is associated with so that a plurality of communications requests can exist concurrently, and wherein the high performance interface stores the data in a predefined amount of the address space of the operating system prior to the calling computer program invoking the high performance interface. - View Dependent Claims (2, 3)
-
-
4. A computer messaging apparatus, comprising:
-
(a) a processor coupled to a data communications device; and (b) high performance interface, executed by the processor, for sending data to a remote device and for receiving data from a remote device via the data communications device, wherein the high performance interface transfers the data directly to and from an address space of a calling computer program, executed by the processor, that invokes the high performance interface, thereby eliminating use of intermediate buffers obtained from an address space of an operating system executed by the processor, wherein the transferred data includes header information identifying a communications request it is associated with so that a plurality of communications requests can exist concurrently, and wherein the high performance interface manages one or more queues selected from a group of send queues comprising an active request send queue, a completed request send queue, and a global pending request send queue. - View Dependent Claims (5, 6, 7, 8, 9)
-
-
10. A method of transferring data in a computer, comprising the steps of:
-
(a) receiving a communications request from a calling computer program executed by the computer; (b) transferring data associated with the received communications request directly to and from an address space of the calling computer program to and from a remote device via a data communication device connected to the computer, thereby eliminating use of intermediate buffers obtained from an address space of an operating system executed by the computer, wherein the transferred data includes header information identifying the communications request it is associated with so that a plurality of communications requests can exist concurrently; and (c) managing the received communications request using one or more queues stored in the memory of the computer, wherein the queues are selected from a group of send queues comprising an active request send queue, a completed request send queue, and a global pending request send queue.
-
-
11. A method of transferring data in a computer, comprising the steps of:
-
(a) receiving a communications request from a calling computer program executed by the computer; (b) transferring data associated with the received communications request directly to and from an address space of the calling computer program to and from a remote device via a data communication device connected to the computer, thereby eliminating use of intermediate buffers obtained from an address space of an operating system executed by the computer, wherein the transferred data includes header information identifying the communications request it is associated with so that a plurality of communications requests can exist concurrently; and (c) storing the data in a predefined amount of the address space of the operating system prior to receiving the communications request. - View Dependent Claims (12, 13, 14)
-
-
15. An article of manufacture comprising a computer program carrier readable by a computer and embodying one or more instructions executable by the computer to perform a method for transferring data in a computer, the method comprising the steps of:
-
(a) receiving a communications request from a calling computer program executed by the computer; (b) transferring data associated with the received communications request directly to and from an address space of the calling computer program to and from a remote device via a data communication device connected to the computer, thereby eliminating use of intermediate buffers obtained from an address space of an operating system executed by the computer wherein the transferred data includes header information identifying the communications request it is associated with so that a plurality of communications requests can exist concurrently; and (c) managing the received communications request using one or more queues stored in the memory of the computer, wherein the queues are selected from a group of send queues comprising an active request send queue, a completed request send queue, and a global pending request send queue.
-
-
16. An article of manufacture comprising a computer program carrier readable by a computer and embodying one or more instructions executable by the computer to perform a method for transferring data in a computer, the method comprising the steps of:
-
(a) receiving a communications request from a calling computer program executed by the computer; (b) transferring data associated with the received communications request directly to and from an address space of the calling computer program to and from a remote device via a data communication device connected to the computer, thereby eliminating use of intermediate buffers obtained from an address space of an operating system executed by the computer wherein the transferred data includes header information identifying the communications request it is associated with so that a plurality of communications requests can exist concurrently; and (c) storing the data in a predefined amount of the address space of the operating system prior to receiving the communications request.
space="preserve" listing-type="tabular"> TABLE 1 ______________________________________ Outcome Description ______________________________________ HPI.sub.-- OK The request completed successfully. HPI.sub.-- ENOMEM HPI was unable to obtain enough memory (or another resource) to complete the request. If an HPI.sub.-- ASYNC.sub.-- WRITE request fails with this status, a resource was unavailable on either the sending host or the receiving host. This status should be viewed as a "flow control" indication. Ie., the sender should "back off" and try again later. HPI.sub.-- EBUFOVFLW A receive request overflowed the receive buffer. The extra data was thrown away. Otherwise, the operation was a success. HPI.sub.-- CANCELED The request was canceled by an HPI.sub.-- CANCEL ioctl. HPI.sub.-- EFAULT An internal (operating system) error prevented the request from completing. HPI.sub.-- HOSTDOWN The specified destination host is down. HPI.sub.-- HPIDOWN HPI is down on the specified destination host. HPI.sub.-- PORTDOWN The specified port is not open on the. destination host. ______________________________________
space="preserve" listing-type="tabular"> TABLE 2 ______________________________________ Cancel Flags Description ______________________________________ HPI.sub.-- CANCEL.sub.-- RCV.sub.-- PEND Cancel all pending receives on this port. The requests are completed with a value of HPI.sub.-- CANCELED in their cmplt.sub.-- status fields. HPI.sub.-- CANCEL.sub.-- RCV.sub.-- UNATT Remove all items from the unattached message queue for this port. These messages are thrown away. HPI.sub.-- CANCEL.sub.-- RCV This is the combination of the above two flags. HPI.sub.-- CANCEL.sub.-- SND.sub.-- PEND Cancel all pending sends on this port. The requests are completed with a value of HPI.sub.-- CANCELED in their cmplt.sub.-- status fields. HPI.sub.-- CANCEL.sub.-- SND This is equivalent to HPI.sub.-- CANCEL.sub.-- SND.sub.-- PENDING and is included for compatibility with the Unix version of HPI. HPI.sub.-- CANCEL.sub.-- ALL This is the combination of HPI.sub.-- CANCEL.sub.-- RCV and HPI.sub.-- CANCEL.sub.-- SND. All send requests, receive requests, and unattached messages are deleted from this port. ______________________________________
-
Specification