IP Library Granted Patent US 8,819,311
Granted Patent B2
US 8,819,311 · App. 11/752,914 · Granted Aug 26, 2014

Universal user input/output application layers

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,819,311
App. No.
11/752,914
Granted
Aug 26, 2014
Kind
B2
Abstract

Files on a secondary storage are accessed using alternative IO subroutines that buffer IO requests made by a user and mimic the IO subroutines provided by an operating system. The buffer used by the alternative IO subroutines is maintained by the user and not the operating system. User applications are not recompiled or relinked when using the alternative subroutines because the library that provides these subroutines intercepts requests for buffered IO made by user applications to the operating system's IO subroutines and replaces the requests with calls to the alternative IO subroutines that utilize the buffer maintained by the user.

Claims (33)

1. A method of executing a software application for a user, on a computer system executing an operating system, the operating system providing a standard library having buffering subroutines that buffer data transfers between user applications and a secondary storage via system calls to a kernel of the operating system in a non-user controlled buffer, the standard library also having unbuffered subroutines that transfer data, without buffering, between the user applications and the secondary storage via system calls to the kernel of the operating system, the method comprising:

defining a plurality of user subroutines in a user software library distinct from the software application and distinct from the standard library, each user subroutine in the user software library mimicking an input functionality or an output functionality of a corresponding one of the buffering subroutines in the standard library that uses the non-user controlled buffer by utilizing a user-controlled buffer;

intercepting input/output requests by the software application to the standard library buffering subroutines that use the non-user controlled buffer;

determining if the request requires the non-user controlled buffer or the user controlled buffer;

passing the request to the user subroutine that uses the non-user controlled buffer if the request requires the non-user controlled buffer; and

replacing each intercepted input/output request with a request to the user subroutine in the user software library that mimics the buffering subroutine of the intercepted input/output request that uses the non-user controlled buffer if the request requires the user controlled buffer, whereby the user subroutine performs the requested input/output functionality using the user-controlled buffer and an unbuffered subroutine of the standard library rather than the non-user controlled buffer.

2. The method as recited in claim 1 , further comprising accessing the secondary storage using the user subroutines.

3. The method as recited in claim 2 , wherein said accessing of the secondary storage is performed with simultaneous read and write access to contents thereof.

4. The method as recited in claim 1 , wherein the buffering subroutines include open, read, and write access.

5. The method as recited in claim 1 , wherein the buffering subroutines include at least one of file stream and file descriptor requests.

6. The method as recited in claim 1 , wherein the buffering subroutines include POSIX compliant requests for at least one of input and output.

7. A computer system having secondary storage, the computer system executing an operating system that provides a standard library having buffering subroutines that buffer data transfers between a user application and the secondary storage via system calls to a kernel of the operating system in a non-user controlled buffer, the standard library also having unbuffered subroutines that transfer data, without buffering, between the user application and the secondary storage via system calls to the kernel of the operating system, the computer system comprising:

a user memory storing a user software library distinct from the application and distinct from the standard library, the software library comprising a plurality of user subroutines, each user subroutine in the software library mimicking an input functionality or an output functionality of a corresponding one of the buffering subroutines in the standard library that uses the non-user controlled buffer by utilizing a user-controlled buffer;

a central processing unit configured to:

intercept a request by the user application to the standard library to perform at least one of the buffering subroutines that use the non-user controlled buffer;

determine if the request requires the non-user controlled buffer or the user controlled buffer;

pass the request to the user subroutine that uses the non-user controlled buffer if the request requires the non-user controlled buffer; and

pass the request to the user subroutine in the user software library that mimics the buffering subroutine of the intercepted request that uses the non-user controlled buffer if the request requires the user controlled buffer, whereby the user subroutine performs the requested input/output functionality using the user-controlled buffer and an unbuffered subroutine of the standard library rather than the non-user controlled buffer;

a network interface connected to at least one remote apparatus, wherein said network interface receives commands from the remote apparatus, the commands causing the central processing unit to alter data stored in a buffer controlled by the user.

8. The computer system as recited in claim 7 , wherein said secondary storage operates with simultaneous read and write access.

9. A computer program product for use with a computer system having secondary storage, the computer system executing an operating system that provides a standard library having buffering subroutines that buffer data transfers between a user application and the secondary storage via system calls to a kernel of the operating system in a non-user controlled buffer, the standard library also having unbuffered subroutines that transfer data, without buffering, between the user application and the secondary storage via system calls to the kernel of the operating system, the computer program product comprising a non-transitory computer-readable medium having program code thereon, the program code comprising:

program code for defining a plurality of user subroutines in a user software library distinct from the application and distinct from the standard library, each user subroutine in the software user library mimicking an input functionality or an output functionality of a corresponding one of the buffering subroutines in the standard library that uses the non-user controlled buffer by utilizing a user-controlled buffer;

program code for intercepting input/output requests by the software application to the standard library buffering subroutines that use the non-user controlled buffer; and

program code for determining if the request requires the non-user controlled buffer or the user controlled buffer;

program code for passing the request to the user subroutine that uses the non-user controlled buffer if the request requires the non-user controlled buffer; and

program code for replacing each intercepted input/output request with a request to the user subroutine in the user software library that mimics the buffering subroutine of the intercepted input/output request that uses the non-user controlled buffer if the request requires the user controlled buffer, whereby the user subroutine performs the requested input/output functionality using the user-controlled buffer and an unbuffered subroutine of the standard library rather than the non-user controlled buffer.

10. The method as recited in claim 1 , wherein intercepting input/output requests includes using an LD_PRELOAD function to dynamically preload the unbuffered user subroutines into the software application before loading the buffering subroutines.

11. The method as recited in claim 1 , wherein the plurality of user subroutines further comprises non-vector processing based subroutines.

12. The computer system as recited in claim 7 , wherein the plurality of user subroutines further comprise non-vector processing based subroutines.

13. The computer program product as recited in claim 9 , wherein the plurality of user subroutines further comprise non-vector processing based subroutines.

14. The method as recited in claim 1 , wherein the user application comprises a High Performance Computing and High Performance Technical Computing (HPC) application.

15. The computer system as recited in claim 7 , wherein the user application comprises a High Performance Computing and High Performance Technical Computing (HPC) application.

16. The computer program product as recited in claim 9 , wherein the user application comprises a High Performance Computing and High Performance Technical Computing (HPC) application.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Oct 26, 2020
From: JEFFERIES FINANCE LLC
To: RPX CORPORATION
Reel/Frame 054486/0422 →
SECURITY INTEREST Recorded Jun 29, 2018
From: RPX CORPORATION
To: JEFFERIES FINANCE LLC
Reel/Frame 046486/0433 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 4, 2013
From: GRAPHICS PROPERTIES HOLDINGS, INC.
To: RPX CORPORATION
Reel/Frame 029564/0799 →
CHANGE OF NAME Recorded Sep 30, 2009
From: SILICON GRAPHICS, INC.
To: GRAPHICS PROPERTIES HOLDINGS, INC.
Reel/Frame 023304/0677 →
SECURITY AGREEMENT Recorded Dec 16, 2008
From: SILICON GRAPHICS, INC.
To: MORGAN STANLEY & CO., INCORPORATED
Reel/Frame 021985/0269 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2008
From: LIAO, CHENG
To: SILICON GRAPHICS, INC.
Reel/Frame 021825/0755 →