IP Library Granted Patent US 6,850,990
Granted Patent B1
US 6,850,990 · App. 09/353,211 · Granted Feb 1, 2005

Transfer of synchronized data from 16-bit code to a 32-bit process

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 6,850,990
App. No.
09/353,211
Granted
Feb 1, 2005
Kind
B1
Abstract

The 16-bit process receives synchronized data from a hooked data function. As memory becomes available in a shared memory buffer, the 16-bit process writes the synchronized data to the buffer. The 16-bit process then signals the 32-bit process that synchronized data is ready to be transmitted over the network. The 32-bit process reads the synchronized data, stores it in a send buffer to free the shared memory buffer, then signals the 16-bit process that the shared memory buffer has been read. The 32-bit process then sends the synchronized data out over the network. In this way, a “thunk” that improperly releases the mutual exclusion semaphore is avoided. There can be more than one shared memory buffer, to allow the 16-bit process and the 32-bit process to read and write synchronized data to the shared memory buffers at the same time. The 16-bit process can use a callback function to ensure that data does not wait in the shared memory buffers for too long before it is ready by the 32-bit process and sent out over the network.

Claims (53)

1. A method for transferring synchronized data from a remote computer to a local computer over a network connecting the local and remote computers, the method comprising:

generating the synchronized data with a 16-bit process of at least one operating system running on the remote computer;

storing the synchronized data with the 16-bit process;

retrieving the synchronized data with a first 32-bit process of at least one operating system running on the remote computer;

locking a semaphore, at least partly in response to the 16-bit process until at least after the synchronized data is retrieved with the first 32-bit process at least partly with a shared memory buffer coupled to the remote computer accessible to at least the 16-bit and first 32-bit processes; and

transmitting the synchronized data with a second 32-bit process of at least one operating system over the network to the local computer.

2. A method according to claim 1 wherein the remote computer includes the shared memory buffer coupled to the remote computer accessible to the 16-bit and first 32-bit processes.

3. A method according to claim 2 wherein storing the synchronized data includes storing the synchronized data in the shared memory buffer by the 16-bit process.

4. A method according to claim 2 wherein retrieving the synchronized data includes retrieving the synchronized data from the shared memory buffer by the first 32-bit process.

5. A method according to claim 1 wherein transmitting the synchronized data includes storing the synchronized data in a queue coupled to the remote computer by the second 32-bit process if the synchronized data cannot be immediately transmitted over the network to the local computer.

6. A method according to claim 5 further including transmitting the synchronized data stored in the queue over the network by the second 32-bit process to the local computer when transmission is possible.

7. A method according to claim 1 wherein the remote computer includes a data ready signal.

8. A method according to claim 7 wherein storing the synchronized data includes signaling the first 32-bit process from the 16-bit process with the data ready signal after the synchronized data has been stored.

9. A method according to claim 8 wherein the 16-bit process includes tracking how much synchronized data has been stored in order to signal the first 32-bit process with the data ready signal.

10. A method according to claim 8 wherein the 16-bit process includes timing how much time has passed since the synchronized data was stored in order to signal the first 32-bit process with the data ready signal if the synchronized data has been stored a predetermined amount of time.

11. A method according to claim 10 wherein timing how much time has passed includes activating a callback function from the 16-bit process to measure how much time has passed since the synchronized data was stored.

12. A method according to claim 1 wherein the remote computer includes a data retrieved signal.

13. A method according to claim 12 wherein retrieving the synchronized data includes signaling the 16-bit process from the first 32-bit process with the data retrieved signal after the synchronized data has been retrieved.

14. A method according to claim 1 further including calling a hooked function on the remote computer from the 16-bit process to generate the synchronized data.

15. A method according to claim 14 further including modifying the hooked function to return the synchronized data to the 16-bit process rather than to use the synchronized data on the remote computer.

16. A method according to claim 1 , wherein the semaphore is a mutual exclusion semaphore.

17. A method according to claim 16 , wherein at least one of the processes executes on a Windows operating system.

18. A system for transferring synchronized data, the system comprising:

a local computer for using the synchronized data;

a remote computer where the synchronized data is generated;

a network connecting the local computer and the remote computer for transmitting the synchronized data from the remote computer to the local computer;

a 16-bit process of at least one operating system running on the remote computer for generating the synchronized data and storing the synchronized data; and

a first 32-bit process of at least one operating system running on the remote computer for retrieving the synchronized data; and

a second 32-bit process of at least one operating system running on the remote computer for transmitting the synchronized data over the network to the local computer,

wherein the system locks a semaphore, at least partly in response to the 16-bit process until at least after the synchronized data is retrieved with the first 32-bit process at least partly with a shared memory buffer coupled to the remote computer accessible to at least the 16-bit process and the first 32-bit process.

19. A system according to claim 18 wherein the 16-bit process is constructed and arranged to store the synchronized data in the shared memory buffer coupled to the remote computer and accessible to the 16-bit and 32-bit processes.

20. A system according to claim 19 wherein the first 32-bit process is constructed and arranged to retrieve the synchronized data from the shared memory buffer.

21. A system according to claim 18 wherein the second 32-bit process is constructed and arranged to store the retrieved synchronized data in a queue coupled to the remote computer when the retrieved synchronized data cannot be immediately transmitted over the network to the local computer.

22. A system according to claim 21 wherein the second 32-bit process is constructed and arranged to transmit the retrieved synchronized data stored in the queue over the network to the local computer when transmission is possible.

23. A system according to claim 18 wherein the 16-bit process is constructed and arranged to signal the first 32-bit process after the synchronized data is stored.

24. A system according to claim 23 wherein the 16-bit process is constructed and arranged to signal the first 32-bit process if a predetermined amount of synchronized data is stored or if the synchronized data has been stored for a predetermined amount of time.

25. A system according to claim 18 wherein the first 32-bit process is constructed and arranged to signal the 16-bit process after the synchronized data is read.

26. A system according to claim 18 , wherein the semaphore is a mutual exclusion semaphore.

27. A system according to claim 26 , wherein at least one of the processes executes on a Windows operating system.

28. A computer-readable medium containing a program for transferring synchronized data from a remote computer to a local computer over a network connecting the local and remote computers, the program comprising:

16-bit data generating software runable on at least one operating system of the remote computer for generating the synchronized data;

16-bit data storing software runable on at least one operating system of the remote computer for storing the synchronized data;

32-bit data retrieving software runable on at least one operating system of the remote computer for retrieving the synchronized data; and

32-bit data transmitting software runable on at least one operating system of the remote computer for transmitting the synchronized data over the network to the local computer,

wherein the program locks a semaphore, at least partly in response to the 16-bit data storing software until at least after the synchronized data is retrieved with the 32-bit data retrieving software at least partly with a shared memory buffer coupled to the remote computer accessible to at least the 16-bit data storing software and the 32-bit data retrieving software.

29. A program according to claim 28 wherein the 16-bit data storing software includes the 16-bit data storing software runable to store the synchronized data in the shared memory buffer coupled to the remote computer accessible to the 16-bit and 32-bit processes.

30. A program according to claim 29 wherein the 32-bit data retrieving software includes the 32-bit data retrieving software runable to retrieve the synchronized data from the shared memory buffer.

31. A program according to claim 28 wherein the 32-bit data transmitting software includes the 32-bit data transmitting software runable to store the synchronized data in a queue coupled to the remote computer if the synchronized data cannot be immediately transmitted over the network to the local computer.

32. A program according to claim 31 further including the 32-bit data transmitting software runable to transmit the synchronized data stored in the queue over the network to the local computer when transmission is possible.

33. A program according to claim 28 wherein the 16-bit data storing software includes the 16-bit data storing software runable to signal the 32-bit data retrieving software after the synchronized data has been stored.

34. A program according to claim 28 wherein the 32-bit data retrieving software includes the 32-bit data retrieving software runable to signal the 16-bit process after the synchronized data has been retrieved.

35. A program according to claim 28 , wherein the semaphore is a mutual exclusion semaphore.

36. A program according to claim 35 , wherein at least one of the processes executes on a Windows operating system.

Assignments (17)
RELEASE OF SECURITY INTEREST : RECORDED AT REEL/FRAME - 41052/0762 Recorded Dec 1, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: CRIMSON CORPORATION
Reel/Frame 054560/0857 →
RELEASE OF SECURITY INTEREST : RECORDED AT REEL/FRAME - 41459/0387 Recorded Dec 1, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: CRIMSON CORPORATION
Reel/Frame 054637/0161 →
MERGER Recorded Apr 19, 2018
From: CRIMSON CORPORATION
To: IVANTI, INC.
Reel/Frame 045983/0075 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 40182/0345 Recorded Jan 23, 2017
From: JEFFERIES FINANCE LLC
To: CRIMSON CORPORATION
Reel/Frame 041463/0581 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 40183/0506 Recorded Jan 23, 2017
From: JEFFERIES FINANCE LLC
To: CRIMSON CORPORATION
Reel/Frame 041463/0457 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jan 20, 2017
From: CRIMSON CORPORATION
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 041459/0387 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jan 20, 2017
From: CRIMSON CORPORATION
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 041052/0762 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Sep 29, 2016
From: CRIMSON CORPORATION
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 040182/0345 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Sep 29, 2016
From: CRIMSON CORPORATION
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 040183/0506 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORDED AT R/F 032333/0637 Recorded Sep 28, 2016
From: JEFFERIES FINANCE LLC
To: CRIMSON CORPORATION
Reel/Frame 040171/0037 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORDED AT R/F 031029/0849 Recorded Sep 28, 2016
From: JEFFERIES FINANCE LLC
To: CRIMSON CORPORATION
Reel/Frame 040171/0307 →
NUNC PRO TUNC ASSIGNMENT Recorded Sep 21, 2016
From: LANDESK SOFTWARE, INC.
To: CRIMSON CORPORATION
Reel/Frame 039819/0845 →
SECURITY AGREEMENT Recorded Feb 25, 2014
From: LANDESK SOFTWARE, INC.; CRIMSON CORPORATION
To: JEFFERIES FINANCE LLC
Reel/Frame 032333/0637 →
SECURITY AGREEMENT Recorded Aug 16, 2013
From: LANDESK GROUP, INC.; LANDSLIDE HOLDINGS, INC.; CRIMSON ACQUISITION CORP.; LANDESKSOFTWARE, INC.; CRIMSON CORPORATION
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 031029/0849 →
RELEASE OF SECURITY INTEREST Recorded Aug 12, 2013
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: LANDESK SOFTWARE, INC.
Reel/Frame 030993/0622 →
PATENT SECURITY AGREEMENT Recorded Jul 13, 2012
From: LANDESK SOFTWARE, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
Reel/Frame 028541/0782 →
RELEASE OF SECURITY INTEREST Recorded Jun 20, 2012
From: WELLS FARGO CAPITAL FINANCE, LLC
To: LANDESK GROUP, INC.; LANDSLIDE HOLDINGS, INC.; LANDESK SOFTWARE, INC.; CRIMSON ACQUISITION CORP.; CRIMSON CORPORATION
Reel/Frame 028413/0913 →