← Back to Patent Explorer
US5819112A Expired / Lapsed US ⏱️ 0.0 years remaining

Apparatus for controlling an I/O port by queuing requests and in response to a predefined condition, enabling the I/O port to receive the interrupt requests

Assignee: Microsoft Technology Licensing LLC
•
Filing: 1995-09-08
•
Granted: 1998-10-06
•
Expires: 2015-09-08
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract An improved operating system for a personal computer including a method for controlling a parallel I/O port for peer-to-peer communication is disclosed. The improved operating system includes a port driver which supports communication with multiple peripheral devices through a single parallel port. The peripheral devices are connect to the parallel port via a multiplexer and may include non-interrupt devices, master/slave devices, and peer-to-peer devices. The parallel port driver includes a port arbitrator and a plurality of class device drivers to control access to the parallel port. Each class device driver communicates with a particular class of devices connected to the port. The port arbitrator controls access to port by the various class device drivers. The parallel port includes configurable control registers that include interrupt control bits for enabling and disabling interrupts communicated by peripheral devices. A device driver may set the interrupt control bits so as to disable the port for receiving certain interrupt requests from peer-to-peer devices. The port arbitrator monitors the status of the port and enables the port to receive interrupt requests from peer-to-peer devices when a predefined condition is detected.

Inventors

  • 👤 Norbert Paul Kusters

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-09 02:06
CPC Classifications
G; G06; G06F; G06F13/00; G06F13/14; G06F13/20; G06F13/24

Claims Analysis

Total Claims: 18
Claim 1
Independent Claim 257 words
A method for controlling the flow of data through an I/O port in a computer system having a memory and a CPU, the I/O port being connected to the CPU and to first and second peripheral devices, the CPU being operable for creating I/O request packets for transmitting data to and receiving data from the first and second peripheral devices, comprising the steps of: transmitting a first I/O request packet from the CPU to a first device driver for delivery to the first peripheral device; allocating control over the I/O port to the first device driver; commencing transmission of the first I/O request packet from the first device driver to the first peripheral device via the I/O port; transmitting a second I/O request packet from the CPU to a second device driver for delivery to the second peripheral device; queuing an allocate request associated with the second I/O request packet in a queue; completing transmission of the first I/O request packet from the first device driver to the first peripheral device via the I/O port; freeing the I/O port from control of the first device driver; retrieving the allocate request from the queue; allocating control over the I/O port to the second device driver; transmitting the second I/O request packet to the second peripheral device; and in response to a predefined condition, enabling the I/O port to receive first and second device interrupt requests from the first and second peripheral devices and to transmit first and second CPU interrupt requests to the CPU in response to thereto.
Claim 2
Independent Claim 257 words
A method for controlling the flow of data through an I/O port in a computer system having a memory and a CPU, the I/O port being connected to the CPU and to first and second peripheral devices, the CPU being operable for creating I/O request packets for transmitting data to and receiving data from the first and second peripheral devices, comprising the steps of: transmitting a first I/O request packet from the CPU to a first device driver for delivery to the first peripheral device; allocating control over the I/O port to the first device driver; commencing transmission of the first I/O request packet from the first device driver to the first peripheral device via the I/O port; transmitting a second I/O request packet from the CPU to a second device driver for delivery to the second peripheral device; queuing an allocate request associated with the second I/O request packet in a queue; completing transmission of the first I/O request packet from the first device driver to the first peripheral device via the I/O port; freeing the I/O port from control of the first device driver; retrieving the allocate request from the queue; allocating control over the I/O port to the second device driver; transmitting the second I/O request packet to the second peripheral device; and in response to a predefined condition, enabling the I/O port to receive first and second device interrupt requests from the first and second peripheral devices and to transmit first and second CPU interrupt requests to the CPU in response to thereto.
Claim 3
Dependent Claim 42 words
The method of claim 1, wherein the method further includes the steps of: configuring a control register to define a first protocol for the first peripheral device and reconfiguring a control register to define a second protocol for the second peripheral device.
Claim 4
Dependent Claim 23 words
The method of claim 2, wherein enabling the I/O port includes setting the first and second interrupt control bits in the control register.
Claim 5
Dependent Claim 36 words
The method of claim 1, wherein in response to the predefined condition, the port arbitrator causes the control register to be configured to enable the I/O port to receive interrupt requests from the second peripheral device.
Claim 6
Dependent Claim 20 words
The method of claim 1, wherein the predefined condition comprises: the queue is empty and the I/O port is idle.
Claim 7
Dependent Claim 20 words
The method of claim 5, wherein the predefined condition comprises: the queue is empty and the I/O port is idle.
Claim 8
Independent Claim 220 words
A apparatus for controlling the flow of data through an I/O port in a computer system including a system bus interconnecting, a CPU, and a memory, comprising: an I/O card interconnecting the system bus and first and second peripheral devices by means of a multiplexer, wherein the I/O card includes a control register for defining first and second protocols for communicating with the first and second peripheral devices respectively, an operating system program comprising: first and second device drivers for transmitting allocate requests, for allocating control over the I/O port, for configuring the control register to define the first and second control protocols respectively, and for transmitting I/O request packets from the CPU to the first and second peripheral devices respectively and a port arbitrator for monitoring the status of the I/O port, for queuing allocate requests from the first and second device drivers that are transmitted while the I/O port is allocated, for allowing a selected device driver having an allocate request in the queue to allocate the I/O port when the I/O port becomes free, and in response to a predefined condition, for causing first device driver to configure the control register to enable the I/O port to device receive first device interrupt requests from the first peripheral device and transmit first CPU interrupt requests to the CPU.
Claim 9
Independent Claim 220 words
A apparatus for controlling the flow of data through an I/O port in a computer system including a system bus interconnecting, a CPU, and a memory, comprising: an I/O card interconnecting the system bus and first and second peripheral devices by means of a multiplexer, wherein the I/O card includes a control register for defining first and second protocols for communicating with the first and second peripheral devices respectively, an operating system program comprising: first and second device drivers for transmitting allocate requests, for allocating control over the I/O port, for configuring the control register to define the first and second control protocols respectively, and for transmitting I/O request packets from the CPU to the first and second peripheral devices respectively and a port arbitrator for monitoring the status of the I/O port, for queuing allocate requests from the first and second device drivers that are transmitted while the I/O port is allocated, for allowing a selected device driver having an allocate request in the queue to allocate the I/O port when the I/O port becomes free, and in response to a predefined condition, for causing first device driver to configure the control register to enable the I/O port to device receive first device interrupt requests from the first peripheral device and transmit first CPU interrupt requests to the CPU.
Claim 10
Dependent Claim 36 words
The apparatus of claim 7, wherein in response to the predefined condition, the port arbitrator causes the control register to be configured to enable the I/O port to receive interrupt requests from the second peripheral device.
Claim 11
Dependent Claim 20 words
The apparatus of claim 7, wherein the predefined condition comprises: the queue being empty; and the I/O port being idle.
Claim 12
Dependent Claim 265 words
A storage medium on which is stored a computer program for controlling the flow of data through an I/O port in a computer system having a memory and a CPU, the I/O port being connected to the CPU and to first and second peripheral devices, the CPU being operable for creating I/O request packets for transmitting data to and receiving data from the first and second peripheral devices, comprising the steps of: transmitting a first I/O request packet from the CPU to a first device driver for delivery to the first peripheral device; allocating control over the I/O port to the first device driver; commencing transmission of the first I/O request packet from the first device driver to the first peripheral device via the I/O port; transmitting a second I/O request packet from the CPU to a second device driver for delivery to the second peripheral device; queuing an allocate request associated with the second I/O request packet in a queue; completing transmission of the first I/O request packet from the first device driver to the first peripheral device via the I/O port; freeing the I/O port from control of the first device driver; retrieving the allocate request from the queue; allocating control over the I/O port to the second device driver; transmitting the second I/O request packet to the second peripheral device; and in response to a predefined condition, enabling the I/O port to receive first and second device interrupt requests from the first and second peripheral devices and to transmit first and second CPU interrupt requests to the CPU in response to thereto.
Claim 13
Dependent Claim 265 words
A storage medium on which is stored a computer program for controlling the flow of data through an I/O port in a computer system having a memory and a CPU, the I/O port being connected to the CPU and to first and second peripheral devices, the CPU being operable for creating I/O request packets for transmitting data to and receiving data from the first and second peripheral devices, comprising the steps of: transmitting a first I/O request packet from the CPU to a first device driver for delivery to the first peripheral device; allocating control over the I/O port to the first device driver; commencing transmission of the first I/O request packet from the first device driver to the first peripheral device via the I/O port; transmitting a second I/O request packet from the CPU to a second device driver for delivery to the second peripheral device; queuing an allocate request associated with the second I/O request packet in a queue; completing transmission of the first I/O request packet from the first device driver to the first peripheral device via the I/O port; freeing the I/O port from control of the first device driver; retrieving the allocate request from the queue; allocating control over the I/O port to the second device driver; transmitting the second I/O request packet to the second peripheral device; and in response to a predefined condition, enabling the I/O port to receive first and second device interrupt requests from the first and second peripheral devices and to transmit first and second CPU interrupt requests to the CPU in response to thereto.
Claim 14
Dependent Claim 43 words
The storage medium of claim 10, wherein the method further includes the steps of: configuring a control register to establish a first protocol for the first peripheral device and reconfiguring a control register to establish a second protocol for the second peripheral device.
Claim 15
Dependent Claim 25 words
The storage medium of claim 11, wherein the enabling the I/O port includes setting the first and second interrupt control bits in the control register.
Claim 16
Dependent Claim 37 words
The storage medium of claim 10, wherein in response to the predefined condition, the port arbitrator causes the control register to be configured to enable the I/O port to receive interrupt requests from the second peripheral device.
Claim 17
Dependent Claim 21 words
The storage medium of claim 10, wherein the predefined condition comprises: the queue is empty and the I/O port is idle.
Claim 18
Dependent Claim 21 words
The storage medium of claim 14, wherein the predefined condition comprises: the queue is empty and the I/O port is idle.

References Cited (Backward Citations)

US4654788A Cited
US4845609A Cited
US5280618A Cited
US5430879A Cited
US5276443A Cited
US5265239A Cited
US5379382A Cited
US5390321A Cited
US5553306A Cited
US5504929A Cited
US5555374A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-10-05 2002-04-06 2002-10-06 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-10-05 2006-04-06 2006-10-06 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-10-05 2010-04-06 2010-10-06 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag