Professional Documents
Culture Documents
EXHIBIT F
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 2 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 3 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 4 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 5 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 6 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 7 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 8 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 9 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 10 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 11 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 12 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 13 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 14 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 15 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 16 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 17 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 18 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 19 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 20 of 20
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 1 of 82
EXHIBIT G
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 2 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 3 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 4 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 5 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 6 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 7 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 8 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 9 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 10 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 11 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 12 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 13 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 14 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 15 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 16 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 17 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 18 of 82
EXHIBIT H
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 19 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 20 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 21 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 22 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 23 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 24 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 25 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 26 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 27 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 28 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 29 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 30 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 31 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 32 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 33 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 34 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 35 of 82
EXHIBIT I
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 36 of 82
U 7211387
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 37 of 82
111111 11/11111 111111111111111111/1111 111111111111111111111111111111/1111111
US005929852A
United States Patent [19J [l1J Patent Number: 5,929,852
Fisher et al. [45J Date of Patent: Jul. 27, 1999
VIEWING
EDITOR
§2Q
604
GRAPHIC
INTERFACE
OBJECT WINDOW
2SQ MANAGER
ill
a:
w
>
a:
0 W
--
0
~ ('-' C/)
~
~
0
~\. 0
0
cry
a
l.." (\j
I-
z
"-.~
z
w
::J
w ()
::J
() 0
-
-- a 0
'; 0
(\j
a: a:
w w
>
a: >
a:
w w
C/)
- C/)
!a I-
Z
W
aC')
r-'5
0
0
- ,...
(\j
a: a:
w w
>
a: >
a:
(' w w
a C/) C/)
g
.. - I-
Z
;;--
a
W
::J
0
0
cry
()
(\j
- r--
--
0
~
~
0
r
~
~ I"\... ~
0 W
a
(\j ::J
()
a
-
a
~
@~
~
~ r.:0
8~ tillj 9]
~
:. I I I
I
. .,
~~
-
- -
I.
L·"· • • •
~o. :::::
~ ~
:.
_ .~ J. ..
.~ 0 ~ ". I
. til I I
<Xl
(')
C\I
V
v
(\J
r
:;J: ."-. f---
r 12 ;:1j
0
0
(
C\I
r
(\J
C')
" "- ./l
U)
(')
(\J
(\J
...
-
co
C') ...
0
C')
"!"
.....
>-
0:
t.....
>-
0:
L..... 'L.
0 I- >-
0:
~- ::J ::J
W::'::: () a.. 0
~(/) -(' ~
0:
(/)8-
(/)
") () <D
.....
()
( UJ
~
« "!" 0
::::
C') C\I
.....
~ C\I
C')
C')
~
0
C\I
C')
C\I
C\I
C')
V,
0:::.:::
Wo:
1-
(" 0
0 ~~
~W
8z
l{)
o
I C')
oC')
~
\.rJ
,400 •
o ""d
b'
~ NE1WORK NE1WORK NE1WORK NE1WORK
/"'TVV~
( 490
e.
!'ll
."
<;
~.
COMPONENT COMPONENT COMPONENT COMPONENT
GOMP
·1 COMPo APPLIC. APPLIC.
....
==
Co
il. 1 1 I
~
ijj '--
8 , ~
a3 ~ ....,N,...
so NE1WORK
•
." 450 "- COMPONENT '"
1jj '"
3'
LAYER '"
•
~
•
![
gJ
~
••o
~
COMPONENT ARCHITECTURE LAYER 430 l '"~
....
~
~
....
o
,...
~"
g
....
OPERATING SYSTEM 420
t Ul
HARDWARE 410
19
~
FIG. 4 00
Ul
N
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 42 of 82
~
'J.J
•
/500 'i:!
b' 504 ....
~
('i'
:::1
""g COMPONENT
502
ICOMPONENT
LAYER
=
....
g:
Q.
506
C"
'<
c:
'"""d 508
'-<
3 F-
N
3 ,;-l
S-
o 516 544 ....
::g
ljj"" "C
NETWORK WINDOW SCREEN DISPLAY
3"
~ INTERFACE MANAGER BUFFER ADAPTER
o
540 514 Ji2Q .Q2§
~
C"
gJ
~
o
o
OPERATING SYSTEM '"'"
~
=~
510 532 '"...,o
~
oe
VI
N
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 43 of 82
a:
w
~
I-
Z
W
Z
oa..
:2
o()
C\I
~
co
o
....
r-..
'I
Cf) z
[Bvi 0
0 .... I-
Or-.. «
« 1-::;:':
zO:
wO "-.
ZLL CJ
O~ I.L
c.. z
w ::;:':0
0-
0
a: O~
::) C\JI 0'
0 .... 0
Cf)r-.. >
w z
a:
802 /800
r---.......-L--..-.
CVBERITEM
804 806
GOPHERITEM WEBITEM
ARTICLE
810
FIG. 8
/'900
. . . ._P'"""""-l,,r- 902
906 908
904
FIG. 9
Lj
•
1000~ lJ.J
•
~
j
-;-
1002 CVBERExTENSION
~
7
a 1008,"",- BASECOMPONENT ~-- -~ BASEE XTENSION
~N
3 .....
"• ."
.....
'"
ijj ~
3"
.l: 1010
•
~
~ GOPHERBROWSER r:n
ARTICLE BROWSER
~
~
•o I 1016
~
=-
'"'"
'C
"
~
~
1012 o...,
0;
.....
~
r
o
<0 WEBBROWSER TEXTVIEWER ~ 1018
"'"
r- 1014
~
1020
NEWSGROUpBROWSER PICTUREVIEWER 01
FIG. 10
18Ie
Oe
01
N
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 47 of 82
Q)
Cl.
Cl.
c:
«
(9
u..
0
~
~
~
(\J '<t
~
~
~
~
::?:
a::
~
~
w
w z I-
(fJ 0 0:
:s:0 (fJ
Z
w
I<tl
0..-
a:: ~. 02:
CO X
a:: W C!J'«
w a::
I
0
0.. W
0 co
C!J
>-
()
f 1100
...-------~1.".1110
GOPHERBROWSER
III GOPHERITEM
Happy Face
~GOPHERITE
1114 ~ Home Page
o GOPHERITEM
Apple
~------l.,.1120
WEBBROWSER
1124
~ GOPHERITEM
~ Home Page
FIG.118
...---------'''-1110
GOPHERBROWSER
IIiI GOPHERITEM
Happy Face
~GOPHERITE
1114 fi;IlI Home Page
o GOPHERITEM
Apple 1106
, . . - - - - - - -......1120
WEBB ROWSER
1130
GOPHERSTREAM
1124
~GOPHERITE
~ Home Page
FIG.11C
f1100
r----------';.1110
GOPHERBROWSER
GOPHERITEM
Happy Face
1106
~ GOPHERITEM
~ Home Page
o GOPHERITEM
Apple
1140
WEBBROWSER
Click Me!
Glick me tool
Click me first!
1124
~GOPHERITE
fI;III Home Page
FIG. 11 D
1202
START
<:)1204
I
USER DOUBLE·CLlCKS ON
HOME PAGE ICON
~ 1206
1208
S
GOPHERITEM COMPONENT CREATES WEBBROWSER
COMPONENT AND PASSES ITSELF TO NEWLV
CREATED CVBEREXTENSION COMPONENT
1210 .
)12 12
1214
FINISH
FIG. 12
5,929,852
1 2
ENCAPSULATED NETWORK ENTITY The Telnet service allows users to log onto computers
REFERENCE OF A NETWORK coupled to the networks, while the netnews protocol pro-
COMPONENT SYSTEM vides a bulletin-board service to its subscribers.
Furthermore, the various data formats of the information
This application is a continuation of U.S. patent appli- 5 available on the Internet include JPEG images, MPEG
cation Ser. No. 08/435,880, filed May 5, 1995, now aban- movies and p.Mlaw sound files.
doned. TWo fashionable services for accessing information over
the Internet are Gopher and the WorldMWide Web (''Web').
CROSS-REFERENCE TO RELATED Gopher consists of a series of Internet servers that provide
APPUCATIONS 10 a 'llistMoriented" interface to information available on tbe
This invention is related to the following copending U.S. networks; the information is displayed as menu items in a
patent applications: hierarchical manner. Included in the hierarchy of menus are
U.S. patent application Ser. No. 08/435,377, titled documents, which can be displayed or saved, and searchable
EXTENSIDLE, REPLACEABLE NETWORK COMPO- indexes, which allow users to type keywords and perform
NENT SYSTEM; 15 searches.
US. Pat. No. 5,784,619 issued Jul. 21, 1998, titled Some of the menu items displayed by Gopher are links to
information available on other servers located on the net-
REPLACEABLE AND EXTENSIBLE NOTEBOOK
works. In this case, the user is presented with a list of
COMPONENT OF A NETWORK COMPONENT SYS-
available information documents that can be opened. The
TEM;
20 opened documents may display additional lists or they may
U.S. patent application Ser. No. 08/435,862, titled contain various data~types, such as pictures or text;
REPLACEABLE AND EXTENSIDLE LOG COMPO- occasionally, the opened documents may "transport" tbe
NENT OF A NETWORK COMPONENT SYSTEM; user to another computer on the Internet.
U.S. Pat. No. 5,724,506, issued Mar. 3, 1998, titled The other popular information service on the Internet is
REPLACEABLE AND EXTENSIBLE CONNECTION 25 the Web. Instead of providing a user with a hierarchical
DIALOG COMPONENT OF A NETWORK COMPO- list-orieoted view of information. the Web provides the user
NENT SYSTEM; and with a "linked-hypertext" view. Metaphorically, the Web
U.S. Pat. No. 5,781,189 issued Jul. 14, 1998, titled perceives the Internet as a vast book of pages, each of which
EMBEDDING INTERNET BROWSER/BUTTONS
WITHlN COMPONENTS OF A NETWORK COMPO- 30 :~~;~ ~ct~~e:~r:xo\ ~~:~e~~~e~rd:=:~t~;:
NENT SYSTEM, each of which was :filed May 5, 1995 and written in HyperText Markup Language (HTML) and Web
assigned to the assignee of the present invention. servers transfer HTML documents to each other through the
HyperText Transfer Protocol (HTI'P).
FIELD OF THE INVENTION
35 The Web service is essentially a means for naming
This invention relates generally to computer networks sources of information on the Internet. Armed with such a
and, more particularly, to an architecture and tools for general naming convention that spans the entire network
building Internet-specific services. system, developers are able to build information servers that
potentially any user can access. Accordingly, Gopher
BACKGROUND OF THE INVENTION 40 servers, HTTPservers,FfPservers, and E--mail servers have
The Internet is a system of geographically distnbuted been developed for the Web. Moreover, the naming convenM
computer networks interconnected by computers executing tion enables users to identify resources (such as documents)
networking protocols that allow users to interact and share on any of these servers connected to the Internet and allow
information over the networks. Because of such wide~spread access to those resources.
information sharing, the Internet has generally evolved into 45 As an example, a user "traverses" the Web by following
an Ilopen" system for which developers can design software hot items of a page displayed 00 a graphical Web browser.
for performing specialized operations, or services, essen- These hot items are hypertext links whose presence are
tially without restriction. These services are typically imple M indicated on the page by visual cues, e.g., underlined words,
mented in accordance with a client/server architecture, icons or buttons. When a user follows a link (usually by
wherein the clients, e.g., personal computers or 50 clicking on the cue with a mouse), the browser displays the
workstations, are responsible for interacting with the users target pointed to by the link which, in some cases, may be
and the servers are computers configured to perform the another HTML document.
services as directed by the clients. The Gopher and Web information services represent
Not surprisingly, each of the services available over the entirely different approaches to interacting with information
Internet is generally defined by its own networking protocol. 55 on the Internet. One follows a listMapproach to information
A protocol is a set of rules governing the format and that "looks" like a telephone directory service, while the
meaning of messages or Ilpackets" exchanged over the other assumes a pageMapproach analogous to a tabloid newsM
networks. By implementing services in accordance with the paper. However, both of these approaches include applica M
protocols, computers cooperate to perform various tions for enabling users to browse information available on
operations, or similar operations in various ways, for users 60 Internet servers. Additionally, each of these applications has
wishing to "interact" with the networks. The services typi- a unique way of viewing and accessing the information on
cally range from browsing or searching for information the servers.
having a particular data format using a particular protocol to Netscape Navigator™ eNetscape") is an example of a
actually acquiring information of a different format in accor- monolithic Web browser application that is configured to
dance with a different protocol. 65 interact with many of the previously-described protocols,
For example, the file transfer protocol (F1P) service including HTTP, Gopher and FIF. When instructed to
facilitates the transfer and sharing of files across the Internet. invoke an application that uses one of these protocols,
5,929,852
3 4
Netscape "translates" the protocol to hypertext. This trans~ Since many editors may work together on the same
lation places the user farther away from the protocol document, the compound document is apportioned into
designed to run the application and, in some cases, actually individual modules of content for manipUlation by the
thwarts the user's Internet experience. For example, a dis- editors. The compound·nature of the document is realized by
cussion system requiring an interactive exchange between 5 embedding these .modules within each other to create a
participants may be bogged down by hypertext translations. document having a mixture of data types. The software
The Gopher and Web services may further require addi- component architecture provides the foundation for assem-
tional applications to perform specific functions, such as bling documents of differing contents and the present inven-
playing sound or viewing movies, with respect to the data tion is directed to a system for extending this capability to
types contained in the documents. For example, Netscape 10 network-oriented services.
employs helper applications for executing applications hav-
ing data formats it does not "understand". Execution of these To remotely access information stored on a resource ofthe
functions on a computer requires interruption of processing network. the user typically invokes a service configured to
and context switching (i.e., saving of state) prior to invoking operate in accordance with a protocol for accessing the
the appropriate application. Thus, if a user operating within resource. In particular, the user types an explicit destination
the Netscape application "opens" a MPEG movie, that 15 address command that includes a uniform resource locator
browsing application must be saved (e.g., to disk) prior to (URL). The URL is a rather long (approximately 50
opening an appropriate :MPEG application. e.g., Sparkle, to character) address pointer that identifies both a network
view the image. Such an arrangement is inefficient and resource ·and a means for accessing that resource. The
rather disruptive to processing operations of the computer. following is an example of a hypothetical URL address
Typically, a computer includes an operating system and 20 pointer to a remote resource on a Web server:
application software which, collectively, control the opera-
tions of the computer. The applications are preferably task- http://I.aall.bbb.cc/hypertext/DdddEeue/WWW/FlffffILhtml
specific and independent, e.g., a word processor application
edits words, a drawing application edits drawings and a It is apparent that having to type such long destination
database application interacts with information stored on a 25
address pointers can become quite burdensome for users that
database storage unit. Although a user can move data from frequently access information from remote resources.
one application to the other, such as by copying a drawing Therefore, it is among the objects of the present invention
into a word processing file, the independent applications to simplify a user's experience on computer networks with-
must be invoked to thereafter manipulate that data. out sacrificing the fleXIbility afforded the user by employing
Generally, the application program presents information 30 existing protocols and data types available on those net-
to a user through a window of a graphical user interface by works.
drawing images, graphics or text within the window region. Another object of the invention is to provide a system for
The user, in tum, communicates with the application by users to search and access information on the Internet
"pointing" at graphical objects in the window with a pointer without extensive understanding or knOWledge of the under-
that is controlled by a hand-operated pointing device, such 35 lying protocols and data formats needed to access that
as a mouse, or by pressing keys of a keyboard. information.
The graphical objects typically included with each win- Still another object of the invention is to provide users
dow region are sizing boxes, buttons and scroll bars. These with a simple means for remotely accessing information
objects represent user interface elements that the user can stored on resources connected to computer networks.
point at with the pointer (or a cursor) to select or manipulate. 40
For example, the user may manipulate these elements to
SUMMARY OF TIlE INVENTION
move the windows around on the display screen, and change Briefly, the invention comprises a network-oriented com-
their sizes and appearances so as to arrange the window in ponent system for efficiently accessing information from a
a convenient manner. When the elements are selected or network resource located on a computer network by creating
manipulated, the underlying application program is 45 an encapsulated network entity that contains a reference to
informed. via the window environment, that control has that resource. The encapsulated entity is preferably imple-
been appropriated by the user. mented as a network component stored on a computer
A menu bar is a further example of a user interface remotely displaced from the referenced resource. In
element that provides a list of menus available to a illier. addition, the encapsulated entity may be manifested as a
Each menu. in turn, provides a list of command options that 50 visual object on a graphical user interface of a computer
can be selected merely by pointing to them with the mouse- screen. Such visual manifestation allows a user to easily
controlled pointer. That is, the commands may be issued by manipulate the entity in order to display the contents of the
actuating the mouse to move the pointer onto or near the resource on the screen or to electronically forward the entity
command selection, and pressing and quickly releasing, i.e., over the network.
"clicldng" a button on the mouse. 55 In the illustrative embodiment of the invention, the ref-
In contrast to this typical application-based computing erence to the network resource is preferably a "pointer",
environment., a software component architecture provides a such as a uniform resource locator (URL), that identifies the
modular document-based computing arrangement using network address of the resource, e.g., a Gopher browser or
tools such as viewing editors. The key to document-based a Web page. In addition to storing the pointer, the encapsu-
computing is the compound document, i.e., a document 60 lated entity also contains information for invoking appro-
composed of many different types of data sharing the same priate network components needed. to access the resource.
:file. The types of data contained in a compound document Communication among the network components is achieved
may range from text. tables and graphics to video and sound. through novel application programming interfaces (APIs) to
Several editors. each designed to handle a particular data facilitate integration with an underlying software component
type or format, can work on the contents of the document at 65 architecture. Such a cooperating architecture allows the
the same time. unlike the application-based computing envi- encapsulated entity and network components to "transport"
ronment. the user to the network location of the remote resource.
5,929,852
5 6
Specifically, the encapsulated entity component is an hardware and software elements that provide resources or
object of the network·oriented component system that is services for use by the clients 200 to increase the efficiency
preferably embodied as a customized framework having a of their operations. It will be understood to those skilled in
set of interconnected abstract classes. A CyberItem class the art that, in an alternate embodiment, the client and server
defines the encapsulated entity object which interacts with 5 may exist on the same computer; however, for the illustra-
other objects of the network system' to remotely access tive embodiment described herein, the client and server are
information from the referenced resource. Since these separate computers.
objects are integral elements of the cooperating component Several types of computer networks 110, including local
architecture, any type of encapsulated network entity may be area networks (LANs) and wide area networks (WANs),
developed with consistent behaviors. i.e., these entities may 10 may be employed in the system 100,ALAN is a limited area
be manifested as visual objects that can be distributed and network that typically consists of a transmission medium,
manipulated iconically. such as coaxial cable or twisted pair, while a WAN may be
Advantageously, the inventive encapsulation technique a public or private telecommunications facility that inter-
descnbed herein provides a user with a simple means for connects computers widely dispersed. In the illustrative
accessing information on computer networks. 15 embodiment, the network system 100 is the Internet system
of geographically distributed computer networks.
BRIEF DESCRIPTION OF THE DRAWINGS Computers coupled to the Internet typically communicate
The above and further advantages of the invention may be by exchanging discrete packets of information according to
better understood by referring to the following description in 20 predefined networking protocols. Execution of these net-
conjunction with the accompanying drawings in which: working protocols allow users to interact and share infor-
FIG. 1 is a block diagram of a network system including mation across the networks. As an illustration, in response to
a collection of computer networks interconnected by client a user's request for a particular service, the client 200 sends
and server computers; an appropriate information packet to the server 300, which
performs the service and returns a result back to the client
FIG. 2 is a block diagram of a client computer, such as a 25
200.
personal computer. on which the invention may advanta-
geously operate; FIG. 2 illustrates a typical hardware configuration of a
client 200 comprising a central processing unit (CPU) 210
FIG. 3 is a block diagram of the server computer of FIG. coupled between a memory 214 and input/output (110)
1; circuitry 218 by bidirectional buses 212 and 216. The
FIG. 4 is a higWy scbematized block diagram of a layered 30 memory 214 typically comprises random access memory
component computing arrangement in accordance with the (RAM) for temporary storage of information and read only
invention; memory (ROM) for permanent storage of the computer's
FIG. 5 is a schematic illustration software of tbe interac- configuration and basic operating commands, such as por-
tion of a component, a software component layer and an 35 tions of an operating system (not shown). As described
operating system of the computer of FIG. 2; further herein, the operating system controls the operations
FIG. 6 is a schematic illustration of the interaction of the CPU 210 and client computer 200.
between a component, a component layer and a window The I/O circuitry 218, in turn, connects the computer to
manager in accordance with the invention; computer networks, such as the Internet networks 250, via a
FIG. 7 is a schematic diagram of an illustrative encapsu- 40 bidirectional bus 222 and to cursor/pointer control devices, ,
lated network entity object in accordance with the invention; such as a keyboard 224 (via cable 226) and a mouse 230 (via
FIG. 8 is a simplified class heirarchy diagram illustrating cable 228). Tbe mouse 230 typically contains at least one
a base class CyberItem, and its associated subclasses, used button 234 operated by a user of the computer. A conven-
to construct network component objects in accordance with tional display monitor 232 having a display screen 235 is
45 also connected to I/O circuitry 218 via cable 238. A pointer
the invention;
(cursor) 240 is displayed on windows 244 of the screen 235
FIG. 9 is a simplified class heirarchy diagram illustrating and its position is controllable via the mouse 230 or the
a base class CyberStream. and its associated subclasses, in keyboard 224, as is well-known. The I/O circuitry 218
accordance with the invention; receives information, such as control and data signals, from
FIG. 10 is a simplified class hierarchy diagram illustrating 50 the mouse 230 and keyboard 224, and provides that infor-
a base class CyberExtension, and its associated subclasses, mation to the CPU 210 for display on the screen 235 or, as
in accordance with the present invention; descnbed further herein, for transfer over the Internet 250.
FIGS. llA-llD are highly schematized diagrams illus- FIG. 3 illustrates a typical hardware configuration of a
trating the interactions between the network component server 300 of the network system 100. The setver 300 has
objects, including the encapsulated network entity object of 55 many of the same units as employed in the client 200,
FIG. 7; and including a CPU 310, a memory 314 and I/O circuitry 318,
FIG. 12 is an illustrative flowchart of the sequence of each ofwbich are interconnected by bidirectional buses 3]2
steps involved in invoking, and accessing, information from and 316. Also, the I/O circuitry connects the computer to
a referenced network resource. computer networks 350 via a bidirectional bus 322. These
60 units are configuretf to perform functions similar to tbose
DETAILED DESCRIPTION OF ILLUSTRATIVE provided by their corresponding units in the computer 200.
EMBODIMBNT maddition, the server typically includes a mass storage unit
FIG. 1 is a block diagram of a network system 100 320, such as a disk drive, connected to the I/O circuitry 318
comprising a collection of computer networks 110 intercon- via bidirectional bus 324.
nected by client computers C'clients") 200, e.g., worksta- 65 It is to be understood that the I/O circuits within the
tions or personal computers, and' server computers computers 200 and 300 contain the necessary hardware, e.g.,
("servers") 300. The servers are typically computers having buffers and adapters, needed to interface with the control
5,929,852
7 8
devices, the display monitor, the mass storage unit and the component's contents and, where appropriate, present a user
network. Moreover, the operating system includes the nec- interface for modifying those contents. Additionally, the
essary software drivers to control, e.g., network adapters editor may include menuS, controls and other user interface
within the I/O circuits when performing I/O operations, such elements. The network component layer 450 extends the
as the transfer of data packets between the client 200 and 5 functionality oftbe underlying component architecture layer
server 300. 430 by defining network~oriented components 480 that
seamlessly integrate with these components 460 to provide
The computers are preferably personal computers of the basic tools for efficiently accessing information from net-
Macintosh® series of computers sold by Apple Computer work reSources located on, e.g., servers coupled to the
Inc., although the invention may also be practiced in the 10 computer networks.
context of other types of computers, including the IBM® FIG. 4 also illustrates the relationship of applications 490
series of computers sold by International Business Machines to the elements of the document computing arrangement
Corp. These computers have resident thereon, and are con~ 400. Although they reside in the same ''user space" as the
trolled and coordinated by, operating system software, such components 460 and network components 480, the applica-
as the Apple® System 7®, IBM OS2®, or the Microsoft® tions 490 do not interact with these elements and, thus,
Windows@> operating systems. 15 interface directly to the operating system layer 420. Because
As Doted, the present invention is based on a modular they are designed as monolithic, autonomous modules,
document computing arrangement as provided by an under- applications (such as previous Internet browsers) often do
lying software component architecture, rather than the typi- not even interact among themselves. In contrast, the com~
cal application-based environment of prior computing sys~ ponents of the arrangement 400 are designed to work
tems. FIG. 4 is a higWy schematized diagram of the 20 together and communicate via the common component
hardware and software elements of a layered component· architecture layer 430 or, in the case of the network
computing arrangement 400 that includes the novel components, via the novel network component layer 450.
network-oriented component system of the invention. At the Specifically, the invention features the provision of the
lowest level there is the computer hardware, shown as layer network-oriented component system which, when invoked,
410. Interfacing with the hardware is a conventional oper- 25 causes actions to take place that enhance the ability of a 1L')er
to interact with the computer to create encapsulated entities
ating system layer 420 that includes a window manager. a
that contain references to network resources located on
graphic system, a file system and network~specific computer networks, such as the Internet. The encapsulated
interfacing, such as a TCP/IP protocol stack and an Apple- entities are manifested as visual objects to a user via a
talk protocol stack. 30 window environment, such as the graphical user interface
The software component architecture is preferably imple~ provided by System 7 or Windows, that is preferably dis-
mented as a component architecture layer 430. Although it played on the screen 235 (FIG. 2) as a graphical display to
is shown as overlaying the operating system 420, the com- facilitate interactions between the user and the computer,
ponent architecture layer 430 is actually independent of the such as the client 200. This behavior of the system is brought
operating system and, more precisely, resides side-by-side 35 about by the interaction of the network components with a
with the operating system. This relationship allows the series of system software routines associated with the oper-
component architecture to exist on multiple platforms that ating system 420. These system routines, in turn, interact
employ different operating systems. with the component architecture layer 430 to create the
In accordance with the present invention, a novel windows and graphical user interface elements, as described
network-oriented component layer 450 contains the under- 40 further herein.
lying technology for creating encapsulated entity compo- The window environment is generally part of the operat~
nents that contain references to netwoIk resources located on ing system software 420 that includes a collection of utility
computer networks. As descnbed further herein, communi- programs for controlling the operation of the computer 200.
cation among these components is achieved through novel The operating system, in turn, interacts with the components
application programming interfaces (APIs) to ensure inte- 45 to provide higher level functionality, inclUding a direct
gration with the underlying component architecture layer interface with the user. A component makes use of operating
430. These novel APIs are preferably delivered in the form system functions by issuing a series of task commands to the
of objects in a class hierarchy. operating system via the network component layer 450 or, as
It should be noted that the network component layer 450 is typically the case, through the component architecture
may operate with any existing system-wide component 50 layer 430. The operating system 420 then performs the
architecture, such as the Object Linking and Embedding requested task. For example, the component may request
(OLE) architecture developed by the Microsoft Corporation; that a software driver of the operating system initiate trans-
however, in the illustrative embodiment, the component fer of a data packet over the networks 250 or that the
architecture is preferably OpenDoc, the vendor-neutral, operating system display certain information on a window
open standard for compound documents developed by, 55 for presentation to the user.
among others, Apple Computer, Inc. FIG. 5 is a schematic illustration of the interaction of a
Using tools such as viewing editors, the component component 502, software component layer 506 and an
architecture layer 430 creates a compound document com~ operating system 510 of a computer 500, which is similar to,
posed of data having different types and formats. Each and has equivalent elements of, the client computer 200 of
differing data type and format is contained in a fundamental 60 FIG. 2. As noted, the network component layer 450 (FIG. 4)
unit called a computing part or, more generally, a ~'compo is integrated with the component architecture layer 430 to
nent" 460 comprised of a viewing editor along with the data provide a cooperating architecture that allows any encapsu-
content. An example of the computing component 460 may lated entity and network component to "transport" the user
include a MacDraw component. The editor, on the other to tbe network location of a remote resource; accordingly,
hand, is analogous to an application program in a conven- 65 for purposes of the present discussion, the layers 430 and
tional computer. That is, the editor is a software component 450 may be treated as a single software component layer
which provides the necessary functionality to display a 506.
5,929,852
9 10
The component 502, component layer 506 and operating represented by the data elements, and its behavior, which
system 510 interact to control and coordinate the operations can be represented by its data manipulation functions. In this
of the computer 500 and their interaction is illustrated way, objects can model concrete things like computers,
schematically by arrows 504 and 508. In order to display while also modeling abstract concepts like numbers or
information on a screen display 535, tbe component 502 and 5 geometrical designs.
component layer 506 cooperate to generate and send display Objects are defined by creating "classes" which are not
commands to a window manager 514 of the operating objects themselves, but which act as templates that instruct
system 510. The window manager 514 stores'information the compiler how to construct an actual object Aclass may,
directly (via arrow 516) into a screen buffer 520. for example, specify the number and type of data variables
The window manager 514 is a system software routine 10 and the steps involved in the functions which manipulate the
that is generally responsible for managing windows 544 that data. An object is actually created in the program by means
the user views during operation of the network component of a special function called a "constructor" which uses the
system. That is, it is generally the task of the window corresponding class definition and additional information,
manager to keep track of the location and size of the window such as arguments provided during object creation, to con-
and window areas which must be drawn and redrawn in 15 struct the object. Likewise objects are destroyed by a special
connection with the network component system of the function called a "destructor". Objects may be used by
present invention. manipulating their data and invoking their functions.
Under control of various hardware and software in the The principle benefits of OOP techniques arise out of
system, the contents of the screen buffer 520 are read out of three basic principles: encapsulation, polymorphism and
the buffer and provided, as indicated schematically by arrow 20 inheritance. Specifically, objects can be designed to hide, or
522, to a display adapter 526. The display adapter contains encapsulate, all, or a portion of, its internal data structure
hardware and software (sometimes in the form of firmware) and internal functions. More specifically, during program
which converts the information in the screen buffer 520 to a design, a program developer can define objects in which all
form which can be used to drive a display screen 535 of a or some of the data variables and all or some of the related
monitor 532. The monitor 532 is connected to display 25 functions are considered 'J1rivate" or for use only by the
adapter 526 by cable 528. object itself. Other data or functions can be declared "pub-
Similarly, in order to transfer information as a packet over lie" or available for use by other programs. Access to the
the computer networks, the component 502 and component private variables by other programs can be controlled by
layer 506 cooperate to generate and send network defining public functions for an object which access the
commands, such as remote procedure calls, to a network- 30 object's private data. The public functions form a controlled
specific interface 540 of the operating system 510. The and consistent interface between the private data and the
network interface comprises system software routines, such l'outside" world. Any attempt to write program code which
as "stub" procedure software and protocol stacks, that are directly accesses the private variables causes the compiler to
generally responsible for formating the information into a generate an error during program compilation which error
predetermined packet format according to the specific net- 35 stops the compilation process and prevents the program
work protocol used, e.g., TCP/IP or Apple-talk protocol. from being run.
Specifically, the network interface 540 stores the packet Polymorphism is a concept which allows objects and
directly (via arrow 556) into a network buffer 560. Under functions that have the same overall format, but that work
control of the hardware aod software in the system, the 40 with different data, to function differently in order to pro-
contents of the network buffer 560 are provided, as indicated duce consistent results. Inheritance, on the other hand,
schematically by arrow 562, to a network adapter 566. The allows program developers to easily reuse pre-existing pro-
network adapter incorporates the software and hardware, grams and to avoid creating software from scratch. The
i.e., electrical and mechanical interchange circuits and principle of inheritance allows a software developer to
characteristics, needed to interface with the particular com- 45 declare classes (and the objects which are later created from
puter networks 550. The adapter 566 is connected to the them) as related. Specifically, classes may be designated as
computer networks 550 by cable 568. subclasses of other base classes. A subclass llinherits" and
In a preferred embodiment, the invention described herein has access to all of the pUblic functions of its base classes
is implemented in an object-oriented programming (OOP) just as if these functions appeared in the subclass.
language, such as C++, using System Object Model (SOM) 50 Alternatively, a subclass can override some or all of its
technology and OOP techniques. inherited functions or may modify some or all of its inherited
The C++ and SOM languages are well~known and many functions merely by defining a new function with the same
articles and texts are available which describe the languages form (overriding or modification does not alter the function
in detail. In addition, C++ and SOM compilers are commer- in the base class, but merely modifies the use of the function
cially available from several vendors. Accordingly, for rea- 55 in the subclass). The creation of a new subclass which has
sons of brevity, the details of the C++ and SaM languages some of the functionality (with selective modification) of
and the operations of their compilers will not be discussed another class allows software developers to easily customize
further in detail herein. existing code to meet their particular needs.
As will be understood by those skilled in the art, OOP In accordance with the present invention, the component
techniques involve the definition, creation, use and destruc- 60 502 and windows 544 are ltobjects" created by the compo-
tion of "objects". These objects are software entities com- nent layer 506 and the window manager 514, respectively,
prising data elements and routines, or functions, which the latter of which may be an Object-oriented program.
manipulate the data elements. The data and related functions Interaction between a component, component layer and a
are treated by the software as an entity tbat can be created, window manager is illustrated in greater detail in FIG. 6.
used and deleted as if it were a single item. Together, the data 65 In general, the component layer 606 interfaces with the
and functions enable objects to model virtually any real- window manager 614 by creating and manipulating objects.
world entity in terms of its characteristics, which can be The window manager itself may be an object which is
5,929,852
11 12
created when the operating system is started. Specifically, services such as communications, printing, file systems
the component layer creates window objects 630 that cause support, graphics, etc. Commercial examples of application-
the window manager to create associated windows on the type frameworks include MacApp (Apple), Bedrock
display screen. This is shown schematically by an arrow (Syman'ec), OWL (Borland), NeXT Step App Kit (NeXl)
608. In addition. the component layer 606 creates individual 5 and Smalltalk-80 MVC (parcPlace).
graphic interface objects 650 that are stored in each window While the framework approach utilizes all the principles
object 630. as shown schematically by arrows 612 and 652. of encapsulation, polymorphism, and inheritance in the
Since many graphic interface objects may be created in object layer. and is a substantial improvement over other
order to display many interface elements OD the display programming techniques, there are difficulties which arise.
screen, the window object 630 communicates with the 10 These difficulties are caused by the fact that it is easy for
window manager by means of a sequence of c4"awing developers to reuse their own objects, but it is difficult for
commands issued from the window object to the window the developers to use objects generated by other programs.
manager 614, as illustrated by arrow 632. Further, frameworks generally consist of one or more object
As noted, the component layer 606 functions to embed "layers" on top of a monolithic operating system and even
components within one another to form a compound docu- 15 with the flexibility of the object layer, it is still often
ment having mixed data types aod formats. Many different necessary to directly interact with the underlying system by
viewing editors may work together to display, or modify, the means of awkward procedure calIs.
data contents of the document. In order to direct keystrokes In the same way that a framework provides the developer
and mouse events initiated by a user to the proper compo- with prefab functionality for a document. a system
nents and editors, the component layer 606 includes an 20 framework, such as that included in the preferred
arbitrator 616 and a dispatcher 626. embodiment, can provide a prefab functionality for system
The dispatcher is an object that communicates with the level services which developers can modify or override to
operating system 610 to identify the correct viewing editor create customized solutions, thereby avoiding the awkward
660, while the arbitrator is an object that informs the procedural calls necessary with the prior art frameworks. For
dispatcher as to which editor "owns" the stream of key- 25 example, consider a customizable network interface frame-
strokes or mouse events. Specifically, the dispatcher 626 work which can provide the foundation for browsing and
receives these "human-interface" events from the operating accessing information over a computer network. A software
system 610 (as shown schematically by arrow 628) and developer who needed these capabilities would ordinarily
delivers them to the correct viewing editor 660 via arrow have to write specific routines to provide them. To do this
662. The viewing editor 660 then modifies or displays, either 30 with a framework, the developer only needs to supply the
visually or acoustically, the contents of the data types. characteristic and behavior of the finished output, wbile the
Although OOP offers significant improvements over other framework provides the actual routines which perform the
programming concepts, software development still requires tasks.
significant outlays of time and effort, especially if no pre- 35 A preferred embodiment takes the concept of frameworks
existing software is available for modification. and applies it throughout the entire system, including the
Consequently, a prior art approach has been to provide a document, component, component layer and the operating
developer with a set of predefined. interconnected classes system. For the commercial or corporate developer, systems
which create a set of objects and additional miscellaneous integrator, or OEM, this means all of the advantages that
routines that are all directed to performing commonly- 40 have been illustrated for a framework, such as MacApp, can
encountered tasks in a particular environment. Such pre- be leveraged not only at the application level for things such
defined classes and libraries are typically called "frame- as text and graphical user interfaces, but also at the system
works" and essentially provide a pre-fabricated structure for level for such services as printing, graphics, multi-media,
a working document. file systems and, as described herein, network-specific
For example, a framework for a user interface might 45 operations.
provide a set of predefined graphic interface objects which Referring again to FIG. 6, the window object 630 and the
create windows, scroll bars, menus, etc. and provide the graphic interface object 650 are elements of a graphical user
support and ."default" behavior for these interface objects. interface of a network component system having a customi-
Since frameworks are based on object-oriented techniques, zable framework for greatly enhancing the ability of a user
the predefined classes can be used as base classes and the 50 to efficiently access information from a network resource on
built-in default behavior can be inherited by developer- computer networks by creating an encapsulated entity that
defined subclasses and either modified or overridden to contains a reference to that resource. The encapsulated entity-
allow developers to e),.1end the framework and create cus- is preferably implemented as a network component of the
tomized solutions in a particular area of expertise. This system and stored as a visual object, e.g., an icon, for display
object-oriented approach provides a major advantage over 55 on a graphical user interface. Such visual display allows a
traditional programming since the programmer is not chang- user to easily manipulate the entity component to display the
ing the original program, but rather extending the capabili- contents of the resource on a computer screen or to elec-
ties of that original program. In addition, developers are not tronically forward the entity over the networks.
blindly working through layers of code because the frame- Furthermore, the reference to the network resource is a
work provides architectural guidance and modeling and, at 60 pointer that identifies the network address of the resource,
the same time, frees the developers to supply specific actions e.g.• a Gopher browser, a Web page or an E-mail message.
unique to the problem domain. FIG. 7 is a schematic diagram of an illustrative encapSUlated
There are many kinds of frameworks available, depending network entity object 700 containing a pointer 710. In one
on the level of the system involved and the kind of problem embodiment of the invention, the pointer may be a uniform
to be solved. The types of frameworks range from high-level 65 resource locator (URL) having a first portion 712 that
frameworks that assist in developing a user interface, to identifies the particular network resource and a second
lower-level frameworks that provide basic system software portion 114 that specifies the means for accessing that
5,929,852
13 14
resource. More specifically, the URL is a string of approXl:- which is an abstraction that serves as an API between a
mately 50 characters that describes the protocol used to component configured to display a particular data format
address the target resource, the server on which the resource and the method for obtaining the actual data. Specifically, a
resides. the path to the reSOurce and the resource filename. CyberStream object contains the software commands nec-
It is to be understood, however, that other representations of 5 essary to create a "data stream" for transfering information
a l'pointer" are included within the principles of the from one object to another. According to the invention, a
invention, e.g., a Post Office Protocol (POP) account and GopherStream subclass 904 is derived from the Cyber-
message identification (ill). Stream base class 902 and encapsulates a network object
that implements the Gopher protocol.
In addition to storing the pointer, the encapsulated entity
10 FIG. 10 is a simplified class hierarchy diagram 1000 of
also contains information 720 for invoking appropriate the base class CyberExtension 1002 which represents addi·
network components needed to access the resource. Com-
tional behaviors provided to components of the underlying
munication among these network components is achieved
software component architecture. For example, CyberEx-
through novel application programming interfaces (APIs). tension objects add functionality to, and extend the APIs of,
These APIs are preferably delivered in the form of objects in 15 existing components so that they may communicate with the
a class hierarchy that is extensible so that developers can
novel network components, such as the encapsulated entity
create new components. From an implementation viewpoint, objects. As a result, the CyberExtension base class 1002
the objects can be subclassed and can inherit from base
operates in connection with a Component base class 1006
classes to build customized components that allow users to
through their respective subclasses BaseExtension 1004 and
see different kinds of data using different kinds of protocols,
20 BaseComponent 1008.
or to create components that function differently from exist-
CyberExtension objects are used by components tbat
ing components.
display the contents of CyberItem objects; this includes
In accordance with the invention, the customized frame w
5,929,852
15 16
In FIG. liC, the CyberExtension component 1122 then access the one or more data types associated with the
notifies the WebBrowser component 1120 that it has been network resource;
assigned a GopherItem component 1124 to display. The creating an encapsulated entity component containing a
WebBrowser component 1120 calls a method CreateCyber- reference to a location of the network resource on the
Stream of the GopherItem to create a GopherStream com- 5 computer network, the encapsulated entity component
ponent 1130 for downloading the appropriate data. also identifying the at least one network oomponent
Thereafter, the WebBrowser component 1120 begins asy- that was defined for the network resource;
chronously downloading an HTML document from the storing the encapsulated entity component as a visual
appropriate Gopher server (not shown). object on the computer;
Control of the execution of this process tben returns to the 10 in response to manipulation of the visual object with a
GopberItem component 1124 in FIG. lID. This component, pointing device, displaying the contents of the network
in tum, issues a call to an Open method of the WebBrowser resource on a screen of the computer by invoking the
component 1120, which causes the downloaded HTML object-oriented software components integrated by the
document to appear on the screen (now shown at 1140). For at least one identified network component
a further understanding of the invention, FIG. 12 provides an 15 2. The method of claim 1 wherein the step of displaying
illustrative flowchart 1200 of the sequence of steps involved comprises the step of invoking a fir.st network component for
in invoking, and accessing, information from a referenced displaying the contents of the referenced network resource
network resource, as described above. on the screen, the first network component comprisiilg a
In summary, the network-oriented component system browsing component.
provides a customizable framework that enables a user to 20 3. The method of claim 2 wherein the step of displaying
create an encapsulated entity containing a reference to a further comprises the step of invoking a second network
network resource on a computer network. Advantageously, component for transfering the contents of the referenced
the inventive encapsulation technique allows a user to network resource to the first network component, the second
simply manipulate visual objects when accessing informa- network component comprising a data stream component.
tion on the network. Instead of having to type the destination 2S 4. The method of claim 3 further comprising the step of.
address of a resource, the user can merely "drag and drop" creating objects for communication among the encapsulated
the icon associated with entity anywhere on the graphical entity and network components through application pro-
user interface. When the user "double clicks" on the icon, gramming interfaces.
the entity opens up in a window and displays the contents of 5. The method of claim 4 wherein the step of creating
the resource at that network location. Since the address is 30 comprises the step of constructing the encapsulated entity
encapsulated within the network reference entity, the user component from an Item object defined by an Item object
does not have to labor with typing of the cumbersome class.
character string. 6. The method of claim 5 wherein the step of creating
While there has been shown and described an illustrative 35 comprises the step of spawning a Stream object from the
embodiment for implementing an extensible and replaceable Item object, the Stream object representing the data stream.
network component system, it is to be understood that 7. Apparatus for efficiently accessing information from a
various other adaptations and modifications may be made network resource located on a computer network for display
within the spirit and scope of the invention. For example, on a computer coupled to the network, the network resource
additional system software routines may be used when 40 having one or more associated data types, each data type
implementing the invention in various applications. These being accessible by a corresponding object-oriented soft~
additional system routines include dynamic link libraries ware component, the apparatus comprising:
(DLL), which are program files containing collections of an object-oriented software component architecture layer
window environment and networking functions designed to configured to define at least one network component
perform specific classes of operations. These functions are 45 that integrates the object.oriented software components
invoked as needed by the software component layer to needed to access the one or more data types associated
perform the desired operations. Specifically, DLis, which with the network resource; and
are generally well-known, may be used to interact with the an encapsulated network entity component cooperating
component layer and window manager to provide network- with the component architecture layer and containing a
specific components and functions. reference to the network resource and an identifier for
50
The foregoing description has been directed to specific the at least one network component that was defined for
embodiments of this invention. It will be apparent, however, the network resource wherein, the encapsulated net-
that other variations and modifications may be made to the work entity component is manifested as visual object
described embodiments, with the attainment of some or all on a display screen of the computer and further
of their advantages. Therefore, it is the object of the 5S wherein, the encapsulated network entity component is
appended claims to cover all such variations and modifica- adapted for manipulation by a pointing device of the
tions as come within the true spirit and s.cope of the computer to display contents of the network resource
invention. on the screen by invoking the object-oriented software
What is claimed is: components integrated by the at least one identified
1. A method of efficiently accessing information from a 60 network component.
network resource located on a computer network for display 8. The apparatus of claim 7 further comprising:
on a computer coupled to the network, the network resource an operating system interfacing with the component archi-
having one or more associated data types, each data type tecture layer to control the operations of the computer;
being accessible by a corresponding object~oriented soft- and
ware component, the method comprising the steps of: 65 a network component layer coupled to the component
defining at least one network component that integrates architecture layer to form a cooperating component
the object~oriented software components needed to computing arrangement.
5,929,852
17 18
9. The apparatus of claim 8 wherein the cooperating means for storing the encapsulated entity component as a
component computing arrangement generates the encapsu~ visual object on the computer; and
lated network entity. .
means, responsive to manipulation of the visual object
10. The apparatus of claim 9 wherein the reference to the
with a pointing device, for displaying contents of the
network resource is a pointer that identifies the address of 5
the network resource on a computer network. network resource on a screen of the computer by
11. The apparatus of 'claim 10 wherein the pointer is a invoking the object-oriented software components inte-
uniform resource locator. grated by the at least one identified network compo-
12. The apparatus of claim 11 wherein the uniform nent.
resource locator has a first portion that identifies the network 10 16. The apparatus of claim 15 wherein the means for
resource and a second portion that specifies a means for displaying comprises means for invoking a first network
accessing that resource. component for displaying the contents of the referenced
13. The apparatus of claim 11 wherein the uniform network resource on the screen, the first network component
resource locator is a character string that descnbes a proto~
comprising a broWsing component.
col used to address the network resource, a server on which 15
17. The apparatus of claim 16 wherein the means for
the resource resides, a path to tbe resource and a resource
displaying further comprises means for invoking a second
filename.
14. The apparatus of claim lOwberein the pointer is a post network component for transfering the contents of the
office protocol account. referenced network resource to the first network component,
15. Apparatus for efficiently accessing information from a 20 the second network component comprising a data stream
network resource located on a computer network for display component.
on a computer coupled to the network, the network resource 18. The apparatus of claim 17 further c~mprising means
having one or more associated data types, each data type for creating objects for communication among the encapsu-
being accessible by a corresponding object-oriented soft~ lated entity and network components through application
ware component, the apparatus comprising: 25 programming interfaces.
means for defining at least one network component that 19. The apparatus of claim 18 wherein the means for
integrates the object-oriented software components creating comprises means for constructing the encapsulated
needed to access the one or more data types associated entity component from an Item objected defined by an Item
with the network resource; object class.
means for creating an encapsulated entity component 30 20. The apparatus of claim 19 wherein the means for
containing a reference to a location of the network creating comprises means for spawning a Stream object
resource on the computer network, the encapsulated from the Item object, the Stream object representing the data
entity component also identifying the at least one stream.
network component that was defined for the network
resource;
* * * * *
_,c_ ,"
"
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 62 of 82
PTO-1683
(Rev. 7-96)
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 63 of 82
EXHIBIT J
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 64 of 82
67OO74
UNITED STATES
FSE
DEPARTMENT OF COMMERCE
QjEtj
November 16 2007
By Authority of the
SWAIN
Certifying Officer
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 65 of 82
liii 11111 11111 11111 11111 11111 11111 11111 11111 111111111 11111 liii
US005915131A
United States Patent Number
Patent 5915131
Knight Ct al Date of Patent Jun 22 1999
5513365 4/1996 Cook et 395/800 different families of I/O services such as I/O devices
5535416 7/1996 Feeney et 395/834
MODE WORLD
KERNEL WORLD
208
TO OTHER
COMPONENTS
Cl
-I
-s
-L
FROM I/O
-J INTERFACE
140
CLOCK
GENERATOR
FIG.1
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 67 of 82
BLOCK
STORAGE
FPI SERVER
FIG.2
APPLICATION 302
FAMILY
PROGRAMMING
INTERFACE
301
FPI SERVER
304
PROCEDURE CALL
FAMILY
305
PROCEDURE CALL
PLUG-IN
PROGRAMMING
INTERFACE
PLUG-IN
306
307
FIG.3
WORLD
WORLD
FPI FPI
SERVER SERVER
408 410
401 403
FAMILY FAMILY
IMPLEMEN
TATION TATION
414 416
FIG.4
MODE WORLD
KERNEL WORLD
502
504
FIG
601 602
FIG.6
APPLICATION 710
711
APIs
KERNEL WORLD
701
ACCEPT
FPI SERVER
FUNCTION
703
STR EAMS
WORLD
PROTOCOL
SINGLE
PROTOCOL TASK
PROTOCOL
NETWORK
DEVICE
DRIVER
FIG.7
APPLICATION 801
802
WRAPPER
TASK
FIG.8
5915131
METHOD AND APPARATUS FOR FIG block diagram of one embodiment in the com
HANDLING I/O REQUESTS UTILIZING puter system of the present invention
SEPARATE PROGRAMMING INTERFACES FIG is an overview of the I/O architecture of the present
TO ACCESS SEPARATE I/O SERVICES invention
FIELD OF THE INVENTION FIG illustrates flow diagram of I/O service request
To gain access to I/O activation model according to the teachings of the present
resources applications generate
service requests to which are sent through an invention
application
20
programming interface API The service requests are con
DETAILED DESCRIPTION OF THE
verted the API to common set of functions that
PRESENT
by are
forwarded
INVENTION
to the operating system to be serviced The
operating system then sees that service are method and service
requests apparatus handling requests is
One problem in the art is that service are not invention However it will be apparent to one skilled in the
prior requests
sent directly to the I/O device or resource All service art that the present invention may be practiced without these
functions do not have meaning for all the various types of Some portions of the detailed descriptions which follow
I/O devices For instance high level request to play are presented in terms of algorithms and symbolic repre
sound may be converted into write function to sound sentations of on data bits within
operations computer
device However the write function is not the best method memory These algorithmic descriptions and representations
of communicating sound data to the sound device Thus are the means used those skilled in the data
by processing
another conversion of sound format most
write data to data may arts to effectively convey the substance of their work
be required Also some functions do not have one-to-one to others skilled in the art An and
algorithm is here
correspondence with the function set of some I/O devices generally conceived to be self-consistent of steps
40 sequence
Thus it would be desirable to avoid this added leading to desired result The are those
complexity steps requiring
and to take advantage of the similar characteristics of classes physical of
manipulations physical quantities Usually
of when
I/O devices handling I/O requests while providing though not necessarily these quantities take the form of
services and an environment in which to run those services electrical or of
magnetic signals capable being stored
that tuned needs and
is to the specific device requirements transferred combined compared and otherwise manipu
lated It has proven convenient at times principally for
SUMMARY OF THE INVENTION reasons of common usage to refer to these signals as bits
method and apparatus for handling I/O requests is values elements symbols characters terms numbers or
handled by the computer system having bus and It should be borne in mind however that of these and
memory so all
coupled to the bus that stores data and programming instruc similar terms are to be associated with the appropriate
tions The programming instructions include application physical quantities and are merely convenient labels applied
programs and an operating system processing unit is to these quantities Unless specifically stated otherwise as
coupled to the bus and runs the operating system and apparent from the following discussions it is appreciated
application programs by executing programming instruc that throughout the present invention discussions utilizing
tions Each have terms such
application programs multiple separate as processing or computing or calculating
programming interfaces available to access multiple sets of or determining or displaying or the like refer to the
service electronic
requests computing device that manipulates and trans
The present invention will be understood more from other data similarly represented as physical quantities within
fully
the detailed description given below and from the accom the computer system memories or registers or other such
to the specific embodiments but are for and the herein This
explanation forming operations apparatus may be spe
understanding only cially constructed for the required purposes or it
may
5915131
or reconfigured by computer program stored in the com as trackball stylus mouse or trackpad etc for control
puter The algorithms and displays presented herein are not ling cursor movement The system also includes sound
inherently related to any particular computer or other appa chip 125 coupled to I/O controller 130 for providing audio
ratus Various general purpose machines may be used with recording and play back Sound chip 125 may include
prove convenient to construct more specialized apparatus to various audio signals from the computer system I/O con
perform the required method steps The required structure troller 130 may also provide access to floppy disk and
for variety of these machines will appear from the descrip driver 126 The processor 103 controls I/O controller 130
tion below In addition the present invention is not 10 with its peripherals by sending commands to I/O controller
described with reference to any particular programming 130 via local bus 100 interface unit 140 and I/O bus 101
language It will be appreciated that variety of program Batteries or other power supply 152 may also be included
ming languages may be used to implement the teachings of to provide power necessary to run the various peripherals
the invention as described herein and integrated circuits in the computer system Power sup
Overview of the Computer System of the Present Invention 15 ply 152 is typically DC power source that provides
Referring to FIG an overview of computer system of constant DC power to various units particularly processor
the present invention is shown in block diagram form The 103 Various units such as processor 103 display 121 etc
present invention may be implemented on general purpose also receive clocking signals to synchronize operations
microcomputer such as one of the members of the Apple within the computer systems These clocking signals may be
family of personal computers one of the members of the 20 provided by global clock generator or multiple clock
IBM personal computer family or one of several other generators each dedicated to portion of the computer
devices which are presently commercially avail system Such clock generator is shown as clock generator
computer
able Of course the invention also be imple 160 In one embodiment clock 160 comprise
present may generator
mented on multi-user system while encountering all of the phase-locked loop PLL that provides clocking signals to
As illustrated in FIG the computer system of the thermal management Several additional devices are
present invention generally comprises local bus or other included within the computer system to operate with the
communication means 100 for communicating information control logic within I/O controller 140 timer 150 switch
103 coupled with local bus 100 for processing 30 153 and decoder 154 are included to function in connection
processor
information random access memory RAM or other with the control logic In one embodiment decoder 154 is
dynamic device 104 commonly referred to as included within bus interface unit 140 and timer 150 is
storage
main memory coupled with local bus 100 for storing included in I/O controller 130
information and instructions for processor 103 and read- Switch 153 is
p-channel power MOSFET which has its
only memory ROM or other non-volatile storage device 35 gate connected to the power signal 182 its source to the
106 coupled with local bus 100 for storing non-volatile power supply and its drain to processors DD pin
The computer system of the present invention also P0werPCTM family of processors such as those manufac
includes an input/output I/O bus or other communication tured by Motorola Corporation of Schaumberg Ill The
means 101 for communication information in the computer 40 memory in the computer system is initialized to store the
system data storage device 107 such as magnetic tape operating system as well as other programs such as file
and disk drive including its associated controller circuitry directory routines and application programs and data input
is coupled to I/O bus 101 for storing information and ted from I/O controller 130 In one embodiment the oper
instructions display device 121 such as cathode ray ating system is stored in ROM 106 while RAM 104 is
displaying information to the computer user as well as accesses memory in the computer system via an address bus
hard copy device 124 such as plotter or printer including within bus 100 Commands in connection with the operation
associated controller for providing visual of in the computer system are also sent from the
its circuitry memory
of the Hard device 50 the using bus 100 Bus 100 also
representation computer images copy processor to
memory
124 with 103 main 104 includes bi-directional data bus to communicate data in
is
coupled processor memory
non-volatile 106 and mass device 107 to the commands provided by processor 103 under
memory storage response
through I/O bus 101 and bus translator/interface unit 140 the control of the operating system running on it
modem 108 and an ethernet local area network 109 are also Of course certain implementations and uses of the
coupled to I/O bus 101 55 present invention may neither require nor include all of the
Bus interface unit 140 is coupled to local bus 100 and I/O above components For example in certain implementations
bus 101 and acts as gateway between 103 and keyboard or cursor control device for inputting informa
processor
the subsystem Bus interface unit 140 also provide tion to the system may not be required In other
I/O may
translation between being sent from units on one of implementations not be to provide
signals it
may required display
the buses to units the other bus to allow local bus 100 and oo device information the
on displaying Furthermore computer
I/O bus 101 to as single bus system may include additional processing units
co-operate
An I/O controller 130 is coupled to I/O bus 101 and The operating system running on processor 103 takes care
controls access to certain I/O peripherals in the computer of basic tasks such as starting the system handling
For instance I/O controller 130 is coupled to interrupts moving data to and from memory 104 and
system
controller device 127 that controls access to an alpha 65 peripheral devices via input/output interface unit 140 and
numeric input device 122 including alpha-numeric and other managing the memory space in memory 104 In order to take
keys etc for communicating information and command care of such operations the operating system provides
5915131
multiple execution environments at different levels e.g request may be communicated from application level to the
task level interrupt level etc. Tasks and execution envi file system family resulting in one or more requests to the
ronments are known in the art block storage family and finally one or more to the SCSI
Overview of the Present Invention family to complete service request Note that in one
provides access to given familys plug-ins which are FPI 301 provides access to the familys services to one or
dynamically loaded pieces of software that each provide an more applications such as application 302 The FPI 301 also
instance of the service provided by family For example provides access to plug-ins from other families and to
within the file systems family File Manager plug-in 25 system software That is an FPI is designed to provide
implements file-system-specific services In one callers with services appropriate to particular family
embodiment plug-ins are superset of device drivers such whether those calls originate from in the user domain or the
familys programming interface In one embodiment hard 30 video device display FPI tailored to the needs of video
ware is not directly accessible to application software nor is devices is used to gain access to display services Likewise
it vulnerable to application error Applications have access when an application desires to input or sound data
output
to hardware services only through an I/O familys program the application gains access to sound family of services
ming interface Also the context within which an I/O service through an FPI Therefore the present invention provides
runs and the method by which it interacts with the system is 35 family programming interfaces tailored to the needs of
FIG illustrates the relationship between an application Service requests from application 302 or other
several I/O families and their plug-ins Referring to FIG applications are made through an FPI library 303 In one
an application 201 requests services through one or more embodiment the FPI library 303 contains code that passes
family FPIs shown in FIG as File Manager API 202 40 requests for service to the family FPI server 304 In one
Block API 203 and SCSI Manager
Storage API 204 The embodiment the FPI library 303 maps FPI function calls
File Manager API 202 Block Storage API 203 and SCSI into messages e.g kernel messages and sends them to the
Manager API 204 are available to one or more applications FPI server 304 of the family for servicing In one
in the user domain embodiment family 305 may provide two versions of its
In one embodiment the service requests from application 45 FPI library 303 one that runs in the user domain and one that
201 and other applications are sent through File Manager runs in the operating system kernel domain
API 202 Block Storage API 203 and/or SCSI Manager API In one embodiment FPI server 304 runs in the kernel
204 etc and flow as messages to family FPI servers domain and responds to service requests from family clients
205207 which reside in the kernel domain In one e.g applications other families etc. FPI server 304
embodiment the messages are delivered using kernel- 50 responds to request according to the activation model not
supplied messaging service shown of the family 305 In one embodiment the activation
Any communication method may be used to communi model comprises code that provides the runtime environ
cate service requests to I/O families In one embodiment ment of the family and its plug-ins For instance FPI server
kernel messaging is used between the FPI libraries and the 304 may put in or call
request queue may plug-in
FPI server for given family between different families and 55 directly to service the request As shown the FPI server 304
between plug-ins of one family and another family The forwards request to the family 305 using procedure call
communication method used should be completely opaque Note that if FPI library 303 and the FPI server 304 use kernel
to client requesting family service messaging to communicate the FPI server 304 provides
Each of the FPI servers 205207 permit access to port
message
distinct set of services For example File Manager FPI 60 Each 305 includes an shown to
family expert not
server 205 handles service for the file manager family of maintain knowledge of the set of family devices In one
services Similarly the Block Storage FPI server 206 embodiment the expert comprises code within family 305
handles service requests for the block storage family of that maintains knowledge of the set of family plug-ins
services within the system At system startup and each time change
Note that FIG shows three families linked by kernel 65 occurs the expert is notified
messages Messages flow from application level through In one embodiment the expert may maintain the set of
family to another family and so on For instance service family services using central device registry in the system
5915131
The expert scans the device registry for plug-ins that and block
belong system storage plug-ins are not drivers in that
to its family For example display family looks for drivers back
expert hardware
display device entries When family expert finds an entry Applications from other
plug-ins I/O families and other
for family plug-in instantiates the
it
plug-in making it system software can request the services provided by
available to clients of the family In one embodiment the familys plug-ins through the familys FPI Note also that
system notifies the on an ongoing basis about
family expert plug-ins are designed to operate in the environment set forth
new and deleted plug-ins in the device As model
registry result by their family activation
families i.e low-level families whose responsibility is to task level in the main code section should be done at
discover devices by scanning hardware and installing and interrupt level In one embodiment all have main
plug-ins
removing information for the device registry These low- 15 code but not have
section all
interrupt level code sections
level families are the same the
as families previously dis The main code section executes and to client
responds
cussed above i.e high level in other
family ways i.e they service requests made through the FPI For example sound
have experts services an FPI an activation model
library family plug-ins respond to sound family specific requests
and plug-ins The low-level families such
clients are usually as sound playback mode setting stereo mono sample
other families rather than In
applications one embodiment 20 size and rate sound sound
play requests play cancellation
families from
are insulated knowledge of physical connec etc The interrupt level code section executes and responds
tivity Experts and the device registry are discussed in more to interrupts from device In one
physical embodiment the
detail below
interrupt level code section performs only essential
plug-in programming interface PPI 306 provides functions deferring all other work to
higher execution
plug-in supports so that it can be called and plug-in-to- Also because of the services
all associated with par
family interface that defines the routines plug-ins call when ticular family are tuned to the same needs and requirements
certain such as an I/O
events completion occur In addition the drivers or plug-ins for given family may be as simple
PPI 306 defines the path through which the family and its as possible
plug-in exchange data 30 Family Programming Interfaces
services
family library not shown is collection of In the present invention family provides either user-
routines that provide services to the plug-ins of family The mode or kernel-mode FPI or both to the
library support
services are specific to given family and they may be familys FPI FIG illustrates one embodiment of the I/O
layered on of services provided the kernel Within
top by architecture of the present invention Referring to FIG
family the methods by which data of
is
communicated 35 three instances families 401403 are shown operating in
memory is allocated interrupts are registered and timing the kernel environment three families
Although are shown
services are provided may be implemented in the family the present invention may have any number of families
services library Family services libraries may also maintain In the user mode two user-mode FPI libraries Xlib 404
state information needed by family to dispatch and and Zlib shown
manage 405 are that support the FPIs for families
family API calls to access data across the SCSI bus on In the example the family 403 has both user-mode
physical disk Note that in the present invention 405 and
plug-ins are 65 library kernel-mode library 407 Therefore the
of device drivers For instance
superset plug-ins may services of the family may be accessed from both the user
include code that does hardware For instance mode and
not use file the kernel mode
5915131
10
In response to service request messages FPI server encountering problems related to simukaneous instantiation
408 FPI server 409 and FPI server 410 dispatch Referring to HG the first
plug-in 601 to be opened and
requests for services to their families In one embodiment initialized obtains access to the shared libraries At this
each of FPI servers 408410 receives kernel message point the first plug-in 601 does not share access When the
maps the message into FPI function called by the client second plug-in 602 is
opened and initialized new connec
and then calls the function in the family implementation tion to the shared libraries is created From that point the
414416 two plug-ins contend with each other for access to the shared
one there
In embodiment is one-to-one correspondence libraries
between the FPI functions called by clients and the function Sharing code or data may also be desirable in certain
called by FPI servers 408410 as resuk The calls from FPI 10 special cases For instance two or more separate device
serves 408410 are transferred via interfaces 411413 For drivers may share data as way to arbitrate access to
instance interface 411 represents the interface presented shared device An example of this is
single device that
same as the FPI available to applications or other system these functions belong to distinct family but may originate
software The same is true of interface 412 and interface 15 in single physical device
The family implementation 414 represents the family An activation model defines how the family is
imple
activation model that defines how requests communicated mented and the environment within which plug-ins of the
from server 408 are serviced by the family and plug-ins In family execute In one embodiment the activation model of
one embodiment family implementation 414 comprises 20 the family defines the tasking model family uses the
family code interfacing to plug-in code that completes the opportunities the family plug-ins have to execute and the
service requests from application 400 via server 408 context of those opportunities for instance are the plug-ins
Similarly the family implementation 415 and family called at task time during privileged mode interrupt
implementation 416 define their familys plug-in activation handling and so forth the knowledge about states and
models 25 processes that family and its plug-ins are expected to have
plug-in 417 plug-in 418 and plug-in 419 operate and the portion of the service requested by the client that is
within the activation model mandated by the family and performed by the family and the portion that is
performed by
provide code and data exports The required code and data the plug-ins
exports and the activation model for each family of drivers Each model provides distinctly different environment
is family specific and different 30 for the plug-ins to the family and different implementation
Extending Family Programming Interfaces options for the family software Examples of activation
plug-in may provide plug-in-specific interface that models include the single-task model the task-per-plug-in
extends its functionality beyond that provided by its family model and the task-per-request model Each is described in
This is useful in number of situations For example block further detail below Note that akhough three activation
storage plug-in for CD-ROM device may provide block 35 models are discussed the choice of activation model is
storage plug-in interface required of the CD-ROM device as design choice and different models may be used based on the
well as an interface that allows knowledgeable application needs and requirements of the family
audio volume and In one the activation model uses
software to control to play pause stop embodiment kernel
and so forth Such added capabilities require plug-in- messaging as the interface between the FPI libraries that
specific API 40 family clients link to and the FPI servers in order to provide
If device wishes to export extended functionality outside the asynchronous or synchronous behavior desired by the
by the device and an interface library for that portion of the requests are provided with task context In all cases the
device driver FIG illustrates the extension of family implementation of the FF1 server depends on the family
Referring to FIG plug-in module plug-in 501 The choice of activation model limits the plug-in imple
extends beyond the family boundary to interface to family mentation choices For example the activation model
implementation 502 as well plug-in that has an defines the interaction between drivers hardware interrupt
extended API offers features in addition to those available to level and the family environment in which the main driver
clients through its familys FF1 In order to provide extra 50 runs Therefore plug-ins conform to the activation model
Sharing Code and Data Between Plug-ins 55 model In the single-task activation model the family runs
In one embodiment two or more plug-ins can share data as single monolithic task which is fed from request queue
or code or both regardless of whether the plug-ins belong to and from interrupts delivered by plug-ins Requests are
the same family or to different families Sharing code or data delivered from the FPI library to an accept function that
is desirable when single device is controlled by two or enqueues the request for processing by the familys process
more families Such device needs plug-in for each family 60 ing task and wakes the task if it is sleeping Queuing
These plug-ins can share libraries that contain information synchronization and communicatinn mechanism within the
about the device state and common code FIG illustrates family follow set of rules specified by the family
two plug-ins that belong to separate families and that share The interface between the FPI Server and family imple
code and data mentation using the single-task model is asynchronous
Plug-ins can share code and data through shared libraries 65 Regardless of whether the family client called function
Using shared libraries for plug-ins that share code or data synchronously or asynchronously the FPI server calls the
allows the plug-ins to be instantiated independently without family code asynchronously The FPI server maintains set
5915131
11 12
of kernel message IDs that correspond to messages to which responsible for making the data associated with request
the FPI server has not The of maintain available to the family which in turn makes it available to
yet replied concept
ing kernel message IDs corresponding to pending I/O server the plug-in that services the request In some instances this
Consider which ated with the original message to move the data from
as an example family 700 uses the request
address the kernel level area
model shown in FIG user space to
activation to
single-task Referring
The code 804 consists in part of one or more tasks
FIG an application 710 is shown generating service family
one for each family plug-in The tasks act as wrapper for
request to the familys APIs 711 APIs 711 contain at least
the family plug-ins such that all tasking knowledge is
one library in which service requests are mapped to FP1
located in the family code wrapper is
piece of code that
functions The FPI functions are forwarded to the familys 10
insulates called code from the original calling code The
FPI server 701 FPI server 701 dispatches the FPI function
wrapper provides services to the called code that the called
to family implementation 703 which includes various pro code is not aware of
and network device driver that
tocols operate as single When plug-ins task receives service request by
task Each protocol layer provides different level of
whatever mechanisms the family implementation uses the
service 15 task calls its waits for the
plug-ins entry points plug-ins
The FPI server 701 is an accept function that executes in and then responds to the service
response request
response to the calling client via the FPI library not shown The the work to actually service the
plug-in performs
An accept function unlike message-receive-based kernel
request Each plug-in does not need to know about the
task is able to access data within the user and kernel bands tasking model used by the family or how to respond to event
directly The function messaging model requires that 20 and other family mechanisms it
only needs to know
accept queues
FPI server 701 be re-entrant because the caking client task how to perform its particular function
and information
may be preempted For
another client task service concurrent all state
by making drivers queuing
an I/O is contained within the
requests describing request plug-in
When an I/O request completes within the familys code and data and within any queued requests The FPI
environment notification is sent back to the 25 library forwards all requests regardless of the status of
completion
FPI server 701 which converts the completion notification outstanding I/O requests to the plug-in When the client
into the appropriate kernel ID reply The kernel makes synchronous service request the FPI library sends
message
ID reply is then forwarded to the application that synchronous kernel message This blocks the requesting
message
generated the service request client but the plug-ins task continues to run within its own
With single-task model the family implementation is 30 task context This permits clients to make requests of this
family code 702 is asynchronous and has internal knowl concurrent or nonconcurrent Nevertheless clients of the
edge of data structures and communication mechanisms of 35 family may make synchronous and asynchronous requests
the family even though the nonconcurrent drivers can handle only one
for families of devices that have one of several character that concurrent drivers cannot handle multiple requests
istics each I/O request requires little effort of the concurrently Therefore FPI server 803 provides mecha
processing unit This applies not only to keyboard or mouse 40 nism to queue client requests and makes no subsequent
devices but also to DMA devices to the extent that the requests to task until the task signals completion of an
instance the family does not allow interleaving of I/O FPI library sends an asynchronous kernel message to the FPI
requests This might apply to sound for example or to any 45 server and returns to the caller When client calls family
opposite of shared resource Little effort for the processor caller until the FPI server replies to the message thus
exists where the processor initiates an I/O request and then blocking the callers execution until the I/O request is
to be implemented provides its own scheduling mechanisms In either case the behaviors of the device manager FPI
independent of the underlying kernel scheduling This server 803 is exactly the same for all
incoming requests it
applies to the UnixTM stream programming model either queues the request or passes
it to the family task
For each instantiated by the family the family 55 plug-in signals that the I/O operation is
complete the FPI
plug-in
creates task that provides the context within which the server 803 replies to the kernel message When the FPI
FPI 802 kernel according to the family single-task and task-per-request models in terms of the
generates message
activation model 804 and driver such as plug-in driver number of tasks it
typically uses The task-per-plug-in model
805 is
advantageously used where the processing of I/O requests
varies
In one embodiment the FPI server 803 is simple among the plug-ins
widely
task-based message-receive loop or an accept function FPI 65 Task-Per-Request Model
server 803 receives requests from calling clients and passes The task-per-request model shares the following charac
those to the family code 804 The FPI server 803 is teristics with the two activation models already discussed
requests
5915131
13 14
the FPI library to FPI server communication provides the sented the and that contain reference
by entry to the driver
family clients and the FPI library and FPI server use Multiple low-level are used where each such
experts
kernel messages to communicate I/O requests between expert is aware of the connection scheme of physical devices
themselves However in the FPI to the system and installs and removes that information in
task-per-request model the
subtree pertinent to the I/O architecture of the present processing unit coupled to the bus and running the
invention The device tree describes the and 65 operating system and by executing
configuration applications pro
connectivity of the hardware in the system Each entry in the gramming instructions wherein an has
application
device tree has properties that describe the hardware repre first plurality of tailored distinct inter-
programming
5915131
15 16
faces available to access plurality of separate sets of 10 The defined in claim wherein the
computer system
computer system services provided the from
through oper first
programming interface is responsive to request
ating system of the computer system via service applications and from other program structures
The computer system defined in claim wherein each first programming interface comprises at least one library for
processing unit coupled to the bus and running the operating and
system applications by executing pro
and 20
operating system by executing wherein
applications pro- gramming instructions the operation system
graming wherein an has first
instructions application provides input/output I/O services through tailored
of the plurality of activation models two or more I/O services are different types
computer system comprising 17 The computer system defined in claim wherein the
model
INVENTORS Knight et al
It is certified that error appears in the above-identified and that said Letters Patent
patent is
hereby
corrected as shown below
Attest
TODD DICKINSON