Вы находитесь на странице: 1из 179

Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 1 of 42

EXHIBIT A
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 2 of 42

1700602

__ ML
UNITED STATES DEPARTMENT OF COMMERCE
United States Patent and Trademark Office

May 16 2008

THIS IS TO CERTIFY THAT ANNEXED HERETO IS TRUE COPY FROM


THE RECORDS OF THIS OFFICE OF

U.S PATENT 5519867

ISSUE DATE May 21 1996

of the
By Authority

Under Secretary of Commerce for Intellectual Property


lemark Office
and Director of the United States

Certifying Officer
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 3 of 42
11111 11111111 III 11111 11111 11111 10111111 11111 11111 11111111111 III 11111 liii

USOO5S 19867A

United States Patent Patent Number 5519867


Moeller et al Date of Patent May 21 1996

OBJECT-ORIENTED MULTITASKING 5404529 4/1 995 Chernihoff et al 395/700

SYSTEM
OTHER PUBLICATIONS

Inventors Christopher Moeller Los Altos


Proc of the Summer 1988 Usenix Conf 20 Jun 1988 San
Eugenic Bolton Sunnyvale Daniel
Francisco US pp 113 Using the Toolkit or How to

Cheraikoff Palo Alto Russell


Write Widget by McCormack et al
Nakano of Calif
Sunnyvale all
New Directions for Unix Proc Autumn 1988 EUUG Conf
Oct 1988 Cascais Portugal pp 2537 Berna
Assignee Taligent Inc Cupertino Calif
beuAuban et al CloudsA Distributed ObjectBased

Operating System Architecture and Kernel Implementa


Notice The tenn of this patent shall not extend
tion
beyond the expiration date of Pat No
5379432 ExaminerAlvin
Primary Oberley
Assistant ExaminerJohn Chavis

Appl No 94673 Attorney Agent or FirmKeith Stephens

Filed Jul 19 1993 ABSTRACT


list Cl.6 GO6F 9/40 An for enabling
apparatus an object-oriented application to

U.S Cl 395700 access in an manner


object-oriented procedural operating

Field of Search 395/650 700 system having native procedural interface is disclosed The

apparatus includes computer and memory component in

References Cited the code stored in the


computer library is
memory
component The code library includes computer program
U.S PATENT DOCUMENTS
logic implementing an object-oriented class library The
4821220 4/1989 Duisberg 364/578 object-oriented class library comprises related object-ori

4885717 12/1989 Beck et al 364/900 ented classes for enabling the application to access in an
4891630 1/1990 Friedman et al 340/706
object-oriented manner services provided by the operating
4953080 8/1990 Dysart et al 364/200 The for
system object-oriented classes include methods
5041992 8/1991 364/518
Cunningham et al
the
accessing operating system services using procedural
5050090 9/1991 Golub et al 364/478
function calls compatible with the native procedural inter
5060.276 10/1991 Morris et al 382/8
face of the operating system The computer processes
5075848 12/1992 Lai et al 3951425

5093.914 3/1992 et al 395/700 object-oriented statements contained in the application and


Coplien

5119475 6/1992 Smith et al 395/156 defined by the class library by executing methods from the

5125091 6/1992 Staas Jr et al 395/650 class library corresponding to the object-oriented state

5133075 7/1992 Risch 395/800 ments The object-oriented application includes support for

5136705 8/1992 Stuhhs et al 395/575


multi-tasking
5151987 9/1992 Abraham et al 395/575

5181162 1/1993 Smith et al 364/419

5379432 1/1995 Orton et al 395/700 53 Claims 17 Drawing Sheets

CODE
LIBRARY
ThREAD cLAssEs j_.A04
110

TA5KCLA55E5

VIRTUAL MEMORY
.40E
CLASSEs

pc cLAssEs
k410 CLAss
UBRARY
402
sYNCHRONIZATION
CLAsSEs k412
SCHEDUUNS
CLASsES f4I4

FAULT CLASSES
k4b6

MACHINE CLASSES I__.415

SECURITY CLA55ES I_..A20

Copy provided by USPTO from the PIRS Image Database on 05/15/2008


Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 4 of 42

132
102
130A 13DB k.- 134

114
0-

28-J WRAPPER1 F1
129

OPERATING SYSTEM
116

DEVICE DRIVERS
Cl

MICROiNSTRUCTION CODE -112

RAM 108
03
-o

j106
104 CODE__11ib0
LIBRARY
Co

CD

CD

CD
CD

126

___
124
CD

/118 TI 120

INPUT DATA
DISPLAY
DEVICE STORAGE IPRINTER

DATA STORAGE 122 f-li

MEDIUM
ICODE FIGURE
LIBRARY
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 5 of 42

U.S Patent May 21 1996 Sheet of 17 5519867

202

START 204

LOCATE IN PROGRAM
OBJECT-OR ENTED
206
STATEMENT ACCESSING
OPERATING SYSTEM

TRANSLATE OBJECT
ORIENTED STATEM ENT
TO PROCEDURAL
FUNCTION CALL
COMPATIBLE WITH
208
PROCEDURAL INTERFACE
OF OPERATING SYSTEM

EXECUTE PROCEDURAL
FUNCTION CALL __ 210

DONE 212

Figure

Copy provided by USPTO from the PIRS Image Database on 05/15/2008


Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 6 of 42

U.S Patent May 21 1996 Sheet of 17 5519867

3\
304

METHOD CODE IN
TASK ADDRESS
SPACE

312

ACCESS LIBRARY SERVER


AND COPY METHOD CODE
FROM CODE LIBRARY TO
TASK ADDRESS SPACE

316

318

Figure

Copy provided by USPTO from the PIRS Image Database on 0571 5/2008
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 7 of 42

U.S Patent May 21 1996 Sheet of 17 5519867

CODE
LIBRARY
THREAD CLASSES -404 110

TASK CLASSES ..A06

VIRTUAL MEMORY
CLASSES

IPC CLASSES CLASS


LIBRARY
402
SYNCH RON IZATION
CLASSES 12
SCHEDULING
CLASSES

FAULT CLASSES ..%/41

MACHINE CLASSES
j418

SECURITY CLASSES -.420

FIGURE

Copy provided by USPTO from the PIRS Image Database on 05/15/2008


Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 8 of 42

CD

-V
-I

512
CD

Cl

CO
CD

518
CD
UI

01

UI

1.

fJI

JI
Figure
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 9 of 42

601

disposition
.u

start address

length

CD

cn

CC
CD

Figure
eb

Cl

CD

I3

TlaskHandle TMemoryObject

622
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 10 of 42

702

CD

-v
-I

CD

712

CD

CD
710

eD

CD

UI
714 -.1
01

Figure
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 11 of 42

802

CD

Cl

start address
length
CD

Cl

CD

CO
CD

DC

CD
disposition
DC

CD

CD
TM emorySu rrogate

Figure
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 12 of 42

CD

Cl

-U

CD

CD

CO
CD

CD

CD

CD Figure
CD

Il

-L
01

J1

Handle Handle
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 13 of 42

1002
1004

Cl
.v
1006 1008

Cl

eD

CD

-I

JI

Figure 10
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 14 of 42

1102

1104

CD
CD

CD

11

118

CD

CD

CD
CD 1116
CD

CD

CD

Cn

CD

Cs

U. 1114
1110

Figure 11
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 15 of 42

U.S Patent May 21 1996 Sheet 12 of 17 5519867

1202

1205

1210

1212

1218

1220

1230

KraiipossiTh
68KfyJ
1226 1228

Figure 12

Copy provided by USPTO from the PIRS Image Database on 05/15/2008


Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 16 of 42

1302
1304

1326

Cl

-4

CI

1324

1310

Figure 13
1312 1314

cli

-L
cli

1318

JI
1316
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 17 of 42

U.S Patent May 21 1996 Sheet 14 of 17 5519867

iz

CD

Copy provided by USPTO from the PIRS Image Database on 05/15/2008


Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 18 of 42

1502

1504

eD

1506
CD
T386ThreadState _...-i 532

Cl

1508
CD

Cl

CD

1512 1524
eD

CD

UI 1526
UI

1514

Ui

1516
1528
FIGURE 15
1518
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 19 of 42

1602

1604

1618
CD

-v

CD

-v

Co

CD

CO

1608
CD

CD

eD

CD

1612

1614
Figure 16
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 20 of 42

1702 label

uses for interface


--

CD

Cn
1704
label
-I

uses for implementation

CD

CD

CD

CD

CD
1710
ml label
CD inherits compatible type
01

-L
UI

Figure 17
Ui
Ui
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 21 of 42

5519867

The fact that are produces another


OBJECT-ORIENTED MULTiTASKING objects encapsulated

important fringe benefit that is sometimes referred to as data


SYSTEM
abstraction Abstraction is the process by which complex
ideas and structures are made more understandable by the
portion of the disclosure of this patent application
removal of detail and the generalization of their behavior
contains material which is subject to copyright protection
From software perspective abstraction is in many ways the
The copyright owner has no objection to the facsimile
antithesis of hard-coding Consider software wmdowmg
by anyone of the disclosure as it
reproduction patent
example if detail of every window that appears on
every
in the Patent and Trademark Office files or
appears patent users screen in graphical user interface GUI-based
records but otherwise reserves all copyright nghts whatso- have of and behavior hard-coded
program had to all its state

ever then both the and the windows


into program program it

Field Of The Invention contains would lose almost all of their flexibility By
The present invention relates generally to object-oriented abstracting the of window into window object
concept
computing environments and more particularly to system object-oriented systems permit the programmer to think only

and method for providing an object-oriented interface for 15 about the specific aspects that make particular window

unique Behavior shared by all windows such as the ability


procedural operating system
Of the Invention to be dragged and moved can be shared by all window
Background

Object-oriented technology OOT which generally objects

includes object-oriented analysis OOA object-oriented This leads to another basic component of OOT which is

design COD and object-oriented programming OOP is 20 the class class includes set of data attributes plus set

earning its place as one of the most important new tech- of allowable operations that is methods on the data

in software COT has attributes Each object is an instance of some class As


nologies development already begun

to its ability to create significant increases in pro- natural outgrowth of encapsulation and abstraction OOT
prove

granimer productivity and in program maintainability By supports inheritance class called subclass may be
an environment in which data and the 25 derived from another class called base class parent
engendering proce-

dures that on the data are combined into packages class etc wherein the subclass inherits the data attributes
operate

called and rule that demands that and methods of the base class The subclass may specialize
objects by adopting

well- the base class code which overrides the data


objects communicate with one another only through by adding

defined messaging paths OOT removes much of the com- and/or methods of the base class or which adds new data

plexity of traditional procedure-oriented programming 30 attributes and methods Thus inheritance represents

The following paragraphs present brief overview of mechanism by which abstractions are made increasingly

some of the more important aspects of OOT More detailed concrete as subclasses are created for greater levels of

discussions of COT are available in many publicly available specialization Inheritance is primary contributor to the

documents including Object Oriented Design With Appli- increased programmer efliciency provided by COP Inherit

makes minimize the


cations by Grady Beech Benjamin/Cummings Publishing 35 ance it possible for developers to

1991 and Object-Oriented Requirements Analy- amount of new code they have to write to create applica
Company
sis and Logical Firesmith John Wiley tions By of the functionality
Design by Donald providing significant portion

Sons Inc 1993 The basic component of OOT is the needed for particular task classes in the inheritance

An includes and characterized by set of hierarchy give the programmer head start to program
object object is

data called and set of operations called 40 design and creation One potential drawback to an object-
also attributes

data environment in the of that


Generally an objects oriented lies objects
methods that can operate on the proliferation

data the of the objects must exhibit behavior which is similar and which one would
may change only through operation

methods like to use as single message name to describe Consider

method in invoked for example an object-oriented graphical environment if


an object is by passing message

to the this is called message passing The 45 Draw message is sent to Rectangle object the Rectangle
object process

method name and an argument list object responds by drawing shape with four sides
message specifies

When the object receives the message code associated with Triangle object on the other hand responds by drawing
of with sides sends the
the named method is executed with the formal parameters shape three Ideally the object that

the method bound to the values in the Draw message remains unaware of either the type of object
corresponding argu-

ment list Methods and message passing in COT are analo- so to which the message is addressed or of how that object that

receives the will draw in If this


gous to procedures and procedure calls in procedure-on- message itself
response

ented software environments However while procedures ideal can be achieved then it will be relatively simple to add

operate to modify and return passed parameters methods new kind of shape later for example hexagon and leave

to modify the internal state of the associated objects the code sending the Draw message completely unchanged
operate
The combination languages such
by modifying the data contained therein ss In conventional procedure-oriented

of data and methods in objects is called encapsulation linguistic approach would wreak havoc In COT environ-

Perhaps the greatest single benefit of encapsulation is the ments the concept of polymorphism enables this to be done

fact that the state of can only be changed by with impunity As one consequence methods can be written
any object

methods associated with that When the that generically tell other objects to do something without
well-defined object

behavior of an is confined to such well-defined 60 requiring the sending object to have any knowledge at all
object

locations and interfaces changes that is code modifica- about the way the receiving object will understand the

tions in the will have minimal impact on the other message Software programs be they object-oriented pro-
object

and elements in the second fringe ben- cedure-oriented rule based etc almost always interact with
objects system
efit of in object-oriented design and the operating system to access the services provided by the
good encapsulation

is that the resulting code is more modular and 65 operating system For example software program may
programming
traditional tech- interact with the in order to access data in
maintainable than code written using more operating system

memory to receive information relating to processor faults


niques

from the PIRS


Copy provided by IJSPTO Image Database on 05/15/2008
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 22 of 42

5519867

to communicate with other processes or to schedule the virtual memory classes for enabling an application to

execution of process access in an object-oriented manner operating system ser

Most conventional operating systems are procedure- vices to access and manipulate virtual memory in com
oriented and include native procedural interfaces Conse puter
the services these
quentty provided by operating systems interprocess communication IPC classes for

can only be accessed by using the procedures defined by enabling an application to access in an object-oriented
theft respective procedural interfaces If program needs to with
manner operating system services to communicate
access service provided by one of these procedural oper other threads during run-time execution of the application in

then the must include statement to


at.ing systems program computer
make the appropriate operating system procedure call This to
synchronixation classes for enabling an application to
is the case whether the software program is
object-oriented
access in an object-oriented manner operating system ser
procedure-oriented rule based etc Thus conventional
vices to execution of threads
synchronize
operating systems provide procedure-oriented environments
scheduling classes for enabling an application to
in which to develop and execute software Some of the
access in an manner ser
object-oriented operating system
advantages of OOT are lost when an object-oriented pro
vices to schedule execution of threads
gram is
developed and executed in procedure-oriented
fault classes for enabling an to access in an
environment This is true since accesses to the application
all proce
dural be implemented object-oriented manner operating system services to process
operating system must using proce
dure calls defined the native system and user-defined processor faults and
by operating systems proce
dural interface Consequently some of the modularity 20 machine classes for enabling an application to access

maintainability and reusability advantages associated with in an object-oriented manner operating system services to

are lost since it is not to define and host and sets


object-oriented programs possible modify processor

utilize classes objects and other OOT features to their Further features and advantages of the present invention
fullest extent possible as well as the structure and operation of various embodi
One solution to this
problem is to develop object-ori 25 the present in detail below
ments of invention are described
ented native inter
operating systems having object-oriented with reference to the accompanying drawings and in the

faces While this


may be the best solution claims In
it
ultimately the identical reference numbers indicate
drawings
is not solution since the resources
currently practical identical or functionally similar elements
required to modify all of the major procedural operating

systems would be enormous Also such modification of 30 BRIEF DESCRIPTEON OF THE DRAWINGS
these procedural operating systems would render useless
The present invention will be described with reference to
thousands of procedure-oriented software programs There
the accompanying drawings wherein
fore what is needed is mechanism for enabling an object-

oriented application to interact in an object-oriented manner


HG illustrates block diagram of computer platform

with in which wrapper of the present invention operates


procedural operating system having native proce- 35

dural interface HG is high-level flow chart illustrating the operation

of the invention
present

FIG is more detailed flowchart illustrating the opera


SUMMARY OF THE INVENTION tion of the present invention

The present invention is directed to system and method


40
HG is block diagram of code library containing an

of enabling an object-oriented application to access in an object-oriented class library of the present invention

object-oriented manner procedural operating system hav FIG is class of thread and task classes of the
diagram
ing native procedural interface The system includes invention
present

computer and memory component in the computer code


HG is class diagram of virtual memory classes of the
library is stored in the memory component The code library
present invention
includes an
computer program logic implementing object-

The
HGS 79 are class diagrams of interprocess communi
oriented class library object-oriented class library com
cation classes of the present invention
prises related classes for enabling the
object-oriented appli
cation to access in an object-oriented manner services
HG 10 is class diagram of synchronization classes of

the invention
provided by the operating system The object-oriented
present

classes include methods for accessing the operating system HG 11 is class diagram of scheduling classes of the

services using procedural function calls compatible with the present invention
native procedural interface of the operating system The FIGS 12is are class of fault classes of the
diagrams
system also includes means for processing object-oriented present invention
statements contained in the application and defined by the
HG 16 is class diagram of host and processor set
class library by executing methods from the class library
machine classes of the present invention and
corresponding to the statements
object-oriented
HG 17 illustrates well-known icons for representing
Preferably the class library includes
class relationships and cardinality in class diagrams
thread classes for enabling an application to access in
60

an object-oriented manner operating system services to DETAILED DESCRIPTION OF THE


spawn control and obtain information relating to threads PREFERRED EMBODIMENTS
task classes for enabling an application to access in an
Computing Environment
object-oriented manner operating system services to refer

ence and control tasks wherein the tasks each represents an 65 The present invention is directed to system and method
execution environment for threads respectively associated for providing an object-oriented interface to procedural

with the tasks operating system having native procedural interface The

Copy provided by USPTO from the PIRS


Image Database on 05/15/2008
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 23 of 42

5519867

invention emulates an software envi the 130 132 134 are adapted to
present object-oriented application programs
ronment on platform having procedural oper execute in different operating environments For example
computer
ating system More particularly the present invention is the application programs 130A and 130B may be adapted to

directed to and method of enabling an object- operate in an object-oriented environment The application
system
oriented application to access in an object-oriented manner program 132 may be adapted to operate in Microsoft

procedural operating system having native procedural Windows environment an IBM PSI2 environment or Unix

interface during run-time execution of the application in environment As will be appreciated by those skilled in the

computer The present invention is preferably part of the relevant art the application programs 130A 130B and 132

run-time environment of the computer in which the appli cannot interact directly with the operating system 114 unless

cation executes In this patent application the present inven the operating system 114 implements an environment in
10
tion sometimes called an object-oriented since it which the application programs 130A 130B and 132 are
is wrapper
to procedural operating system with an adapted to operate For example if the application 132 is
operates wrap
object-oriented software layer such that an object-oriented adapted to operate in the iBM PSI2 environment then the

application can access the operating system in an object- application 132 cannot directly interact with the operating

oriented manner system 114 unless the operating system 114 is the IBM PS/2

FIG illustrates block diagram of computer platform operating or compatible


system If the application pro
102 in which wrapper 128 129 of the present invention grams 130A and 130B are adapted to operate in an object-

operates It should be noted that the present invention oriented environment then the applications 130A 130B
129 in combi cannot with
alternatively encompasses the wrapper 128 directly interact the operating system 114 since

102 The computer


nation with the computer platform plat the operating system 114 has procedural interface In the
20
form 102 includes hardware components 103 such as
example shown in FIG the application 134 is
adapted to

random access memory RAM 108 and central processing


operate in the computing environment created by the oper
unit CPU 106 It should be noted that the CPU 106 may ating system 114 and therefore the application 134 is shown
represent single processor but preferably represents mul as connected to the 114
being directly operating system
tiple processors operating in parallel The computer platform
The wrapper 128 is directed to mechanism for providing
102 also includes peripheral devices which are connected to
interface
103 These devices
the operating system 114 with an object-oriented
the hardware components peripheral
The wrapper 128 enables the object-oriented applications
include an input device or devices such as keyboard
120 such as 130A 130B to directly access in an object-oriented manner
mouse light pen etc data storage device

hard 126 the procedural operating system 114 during run-time execu
disk or floppy disk display 124 and printer

The data storage device 120 may interact with removable 30


tion of the applications 130A 130B on the computer plat

medium 122 removable hard disk form 102 The wrapper 129 is conceptually similar to the
data storage such as
on the wrapper 128 The wrapper 129 provides an IBM PS/2
magnetic tape cartridge or floppy disk depending
such that the
of data device used The computer platform 102 interface for the operating system 114 appli
type storage
132 can PS/2 manner the
also includes 114 having
cation directly access in proce
procedural operating system
dural system 114 assuming that the
native procedural interface not shown The procedural 35
operating application

interface includes functions which are called to 132 is


adapted to operate in the IBM PS/2 environment The
procedural

102 discussion of the present invention shall be limited herein to


access services provided by the operating system
the wrapper 128 which provides an object-oriented inter
The computer platform 102 further includes device driv
face to having native
code 112 also procedural operating system
ers 116 and
may include microinstruction
interface
in FIG
procedural
called firmware As indicated in performing their 40

116 interact with The wrapper 128 is


preferably implemented as code
required functions the device drivers may
the 114 130 132 library 110 which is stored in the RAM 108 The code library
operating system Application programs
with the 110 may also be stored in the data storage device 120 and/or
134 described further below preferably interact

but the data medium 122 The code library 110 imple
device drivers 116 via the operating system 114 may storage

interact with the device drivers 116 It 45 ments an object-oriented class library 402 see FIG In
alternatively directly

should be noted accordance with the present invention the object-oriented


that the operating system 114 may represent
class 402 includes related classes for
full-function such as the library object-oriented
substantially operating system
Disk Operating System DOS and the UNIX operating enabling an object-oriented application such as the appli
cations 130A and 130B to access in an object-oriented
system However the operating system 114 may represent

manner services provided by the operating system 114 The


other types of operating systems For purposes of the present 50

that the object-oriented classes comprise methods which include


invention the only requirement is operating system
native procedural function calls compatible with the native proce
114 be procedural operating system having
the 114 dural interface of the operating system 114 Object-oriented
procedural interface Preferably operating system
statements defined by the object-oriented class library 402
limited functionality procedural operating sys
represents
such which invoke one or
tem such as the Mach micro-kernel developed by CMIJ 55 as object-oriented statements

which is well-known to those skilled in the relevant art For more of the methods of the class library 402 are insertable

the invention shall be into the application 130 to enable the application 130 to
illustrative only present
purposes
described herein with reference to the Mach micro-kernel In access in an object-oriented manner the operating system
130 on
preferred embodiment of the present invention the com services during run-time execution of the application

102 is an International Business Machines 60 the computer platform 102 The object-oriented class library
puter platform
402 below
IBM computer or an IBM-compatible computer In an is further described in sections

alternate embodiment of the present invention the computer The code library 110 preferably includes compiled

platform 102 is an Apple computer executable computer program logic which implements the

object-oriented class library 402 The computer program


Overview of Wrapper
65 logic of the code library 110 is not linked to application

Various 130 132 134 preferably programs Instead relevant portions of the code library 110
application programs
in parallel on the computer platform 102 Preferably are copied into the executable address spaces of processes
operate

Copy provided by USPTO from the PIRS Image Database on 0511 5/2008
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 24 of 42

5519867

mn-time This is explained in greater detail below substantive step of the flow chart 202 an object-oriented
during
statement which service the
Since the computer program logic of the code library 110 is accesses provided by operat

linked the ing system 114 is located in the application 130A during the
not to application programs computer program
be modified execution of the application 130A on the computer platform
logic can at
any time without having to modify
102 The object-oriented statement is defined by the object-
recompile and/or relink the application programs as long as
As oriented class library 402 For example the object-oriented
the interface to the code library 110 does not change
statement may reference method defined by one of the
noted be herein
above the present invention shall described
classes of the class library 402 The following steps describe
with reference to the Mach micro-kernel although the use of
the manner in which the statement is executed by the
the invention to other operating systems falls
present wrap
computer platform 102
within the scope of the present invention
In step 208 the object-oriented statement is translated to
The Mach micro-kernel provides users with number of
procedural function call compatible with the native pro
services with are grouped into the following categories
cedural interface of the operating system 114 and corre
threads tasks virtual memory interprocess communication
to the statement In performing
sponding object-oriented
IPC scheduling synchronization fault processing and
step 208 the statement is translated to the computer program
host/processor set processing The class library 402 of the 15

logic from the code library 110 which implements the


invention includes of related classes for each of
present set
method referenced in the statement As noted above the
the Mach service categories Referring to FIG the class
function which
method includes at least one procedural call

library 402 includes interface of the


is compatible with the native procedural

404 for an to
thread classes enabling application operating system 114 In step 210 the procedural function
20
access in an object-oriented manner operating system ser call from step 208 is executed in the computer platform 102
vices to spawn control and obtain information relating to to cause the 114 to the
thereby operating system provide
threads service on behalf of the application 130A Step 210 is

task classes 406 for enabling an application to access performed by executing the method discussed in step 208
in an manner system services to thereby causing the procedural function call to be invoked
object-oriented operating 25
reference and control tasks wherein the tasks each repre The of embodiment shall now be
operation preferred

sents an execution environment for threads respectively described in more detail with reference to FIG which

associated with the tasks illustrates detailed operational flow chart 302 of the

408 invention invention described


virtual memory classes for enabling an application present Again the present is

to access in an manner operating system in the context of executing the object-oriented application
object-oriented

services to access and manipulate virtual memory in 130A on the computer platform 102 More particularly the

present invention is described in the context of executing


computer
statement of the appli
410 single object-oriented object-oriented
IPC classes for enabling an application to access

cation 130A on the computer platform 102 The application


in an manner operating services to
object-oriented system
130A includes statements which access services provided by
communicate with other processes during run-time execu
the operating system 114 and it is assumed that such
tion of the in
application computer
statements are defined by the class library 402 in other
synchronization classes 412 for enabling an applica
words the created the application 130A with
programmer
tion to access in an object-oriented manner operating system
execution of threads
reference to the class library 402 As will be discussed in
services to synchronize
greater detail below the executable entity in the Mach
classes 414 for enabling an application to
scheduling micro-kernel is called thread The processing organization
access in an object-oriented manner operating system ser
entity in the Mach micro-kernel is called task task

vices to schedule execution of threads


includes one or more threads which may execute in paral
fault classes 416 for enabling an application to access which block of virtual
lel and an address space represents

in an manner operating services to threads execute At


object-oriented system memory in which the tasks can any

process system and user-defined processor faults and


time there may be multiple tasks active on the computer

machine classes 418 for enabling an application to platform 102 When executing on the computer platform

access in an manner operating system ser 102 the application 130A could represent an entire task
object-oriented

vices to define and modify host and sets having one or more threads or could represent few
processor
threads which are part of task in this case the task would
The class library 402 may include additional classes for
have other threads which may or may not be related to the
other service categories that are offered by Mach in the

operation of the application 130A The scope of the present


future For example security services are currently being
invention when the 130A
developed for Mach Accordingly the class library 402 may encompasses the case application

is an entire task or just few threads of task


also include security classes 420 for enabling an application

to access in an object-oriented manner operating system ss Referring now to FIG in step 308 it is determined

security services As will be appreciated the exact number whether the computer program logic also called computer

and of classes included in the class library 402 depends code from the code library 110 which implements the
type

on the of the underlying operating system method referenced in the statement is


present in the task
implementation
address space associated with the application 130A If the

60 is in the task address


Embodiment computer program logic present space
Operational Overview of Preferred
then step 316 is
processed described below If the com
The operation of the present invention shall now be puter program logic is not present in the task address space

generally described with reference to FIG which illus then the computer program logic is transferred to the task

trates operational flow chart 202 of the present address space in steps 310 312 and 314 In step 310 it is
high-level

invention The invention is described in the context 65 determined whether the library server not shown associ
present

of executing the object-oriented application 130A on the ated with the code library 110 is known The code library

102 In 206 which is the 110 code libraries not shown


computer platform step first
may represent multiple

Copy provided by USPTO from the PIRS


Image Database on 05/15/2008
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 25 of 42

5519867
10
the
to the 128 wherein each of the code particular compiler which compiles application program
related wrapper
for one of the 130A For example the run-time conventions may specify
libraries include the computer program logic

of the class 402 As those that when an instruction accessing an operating system
classes library
object-oriented
there also be service encountered corresponding code from the code
skilled in the relevant art will appreciate may is

to the 110 should be to the task address space


other code libraries not shown completely unrelated library transferred

128 the associated server and executed Compiler


wrapper via library

each run-Lime conventions are well known As will be


Associated with the code libraries are library servers generally
the
of which the resources of designated code library appreciated run-time conventions are specific to par
manages
The for use
processing entity which desires access to the computer ticular compilers used run-time conventions

of code makes request to the code with the invention and with particular compiler
logic library present
program
librarys library server The request may include for
would be apparent to one skilled in the art based on the

of desired program herein


example description the computer disclosure of the present
invention contained par
and destination address to which the computer with the flow chart 302
logic ticularly to the disclosure associated

should be sent The server processes 128 of the


program logic library in FIG As described above the wrapper
the request by accessing the desired computer program logic invention is as code library 110
15 present implemented
and the desired computer the
from the code library sending which includes computer program logic implementing
the
logic to the area of memory designated by class library 402 Alternatively the wrapper
program object-oriented
address The structure and operation of library mechanism which
destination 128 may be implemented as hardware

servers are well known to those skilled in the relevant art in accordance with the flow chart 302 of
essentially operates
determined whether the server
Thus in step 310 it is library 20 FIG to translate object-oriented statements defined by the

code 110 which contains the


associated with the library class 402 in application programs to procedural
library
is known Step 310 is
the interface of
relevant computer program logic function calls compatible with procedural
table be
performed for example by referencing library server the operating system 114 Or the wrapper 128 may
which identifies the known library servers and the code software on
as background process operating
implemented
which service If the server is known to the
libraries they library the computer platform 102 which captures all accesses

then step 314 is processed discussed below Otherwise 114 made by object-oriented statements
operating system
312 312 the server asso and which
step
is
processed In step library defined by the class library 402 translates the

ciated with the code library 110 is identified The identity of


function calls with the
accesses to procedural compatible
from the
the library server may be apparent for example interface of the operating system 114 Other
procedural
of the statement which is being 128 will be to
content object-oriented 30 implementations of the wrapper apparent

of the
processed those skilled in the relevant art based on the disclosure

After the library server associated with the code library present invention contained herein

110 is identified or if the library server was already known


314 In 314 request is sent to Mach Services
then step is processed step

the server to the


the library server asking library copy
This section an overview of the abstractions and
provides
with the method refer
logic associated
computer program the Mach micro-kernel The services
services provided by
ence in the statement to the task address space Upon
described for each of the major areas of the Mach
are
of 314 the library server has copied the
completion step threads tasks
micro-kernel As noted above these include
to the task address space
requested computer program logic
That is
virtual memory IPC scheduling synchronization services
the code 110 is shared library 40
Preferably library
and services also called
hardware faults host/privilege
110 accessed
the code library may be simultaneously by
The Mach micro-kernel is further dis
machine services
multiple threads However preferably the computer pro
cussed in many publicly available documents including
stored in
of the code library 110 is physically
gram logic
Mach Kernel Principles Open Software
Loepere editor
only one physical memory area The library server virtually
Foundation and Carnegie Mellon University Drafi Indus
from the code library 110 to
computer program logic
copies
trial September 1992 and November 1992
Specification
instead of copying
task address spaces That is physically
Mach Kernel Interfaces Open Software
Loepere editor
computer program logic from one part of physical memory
Foundation and Carnegie Mellon University Draft Indus
the server in the task address space
to another library places 1992 and November 1992
trial Spec jfication September
the rel
to the physical memory area containing
Guide Open
pointer
Loepere editor Mach Server Writers
evant computer program logic In step 316 the computer 50
Draft
Software Foundation and Carnegie Mellon University
associated with the object-oriented statement
program logic 1992 and November
Industrial Specification September
executed on the platform 102 As noted above
is computer
1992 Loepere editor Mach Server Writers Inter
accesses the
in the case where the object-oriented statement
Foundation and Carnegie Mellon
faces Open Software
114 the computer program logic associ
operating system Industrial September 1992
University Draft Specification
ated with the method contains at least one procedural 55
and November 1992 Silberschatz Peterson Galvin
function call which is compatible with the native procedural
Concepts Addison-Wesley July 1992
Operating System
system 114 Thus by executing the
interface of the operating
and Tanenbaum Modern Operating Systems Prentice
function
methods computer program logic the procedural
Hall 1992
the operating
call is invoked and executed thereby causing
service on behalf of the applica-
system 114 to provide the 60
Threads
lion 130A
in Mach known as thread
in the computer plat The executable entity is
The above-described performance
enable them to execute in
and 314 due Threads have several that
form 102 of steps 306308310312 is in large aspects

task which
to the run-time environment established in the com the system thread is always contained in
part
102 As will be appreciated by those skilled 65 represents most of the major resources e.g address space
puter platform
of the of which the thread can make use thread has an execution
in the relevant art the run-time environment computer
of the which the set of machine registers and
102 is defined by the run-time conventions state is basically
platform

Copy provided by USPTO from the PIRS Image Database on 05/15/2008


F-

Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 26 of 42

5519867
11 12

other data that make up its context thread is


always in one Tasks

of several states executing ready to execute or


scheduling
The basic organizational entity in Mach for which
blocked for some reason Threads are intended to be light
resources are managed is known as task Tasks have many
execution entities This to the
weight is
encourage program-
and attributes associated with them task funda
objects
mer to make use of multiple threads in applications thus
three task contains multiple
mentally comprises things
introducing more into the system than has been
concurrency in the
threads which are the executable entities system
found in traditional Although threads are
operating systems which virtual
task also has an address space represents
not without some cost they really are fairly minimal and the
memory in which its threads can execute And task has
typical application or server in Mach environment can take
port name space which represents the valid IPC ports
10
of this capability
advantage through which threads can communicate with other threads

Threads do have some elements associated with them in the system Each of these fundamental objects in task is

however The containing task and address space as well as discussed in greater detail in the following sections Note

the execution state have already been discussed Each that task is not of itself an executable entity in Mach
thread has scheduling policy which determines when and 15
However tasks can contain threads which are the execution

on which entities task has number of other entities associated with


how often the thread will be given processor to

it besides the fundamental ones noted above Several of


run The scheduling services are discussed in more detail in

these entities have to do with scheduling decisions the kernel


later section Closely tied to the scheduling policy of
needs to make for the threads contained by the task The
thread is the optional set designation which can
processor
scheduling parameters processor set designation and host
be used in systems with multiple processors to more closely 20

information all contribute to the scheduling of the tasks


control the of threads to for
assignment processors poten-
threads task also has number of distinguished interpro
tially greater application performance As indicated before
cess commumcation ports that serve certain pre-defined
an address space task can contain zero or more threads
functions Ports and other aspects of interprocess commu
which execute concurrently The kernel makes no assump-
25 nication are discussed at length in later section For now
lions about the relationship of the threads in an address space
it is sufficient to know that port resources are accumulated
indeed in the entire system Rather it schedules and
or over time in task Most of these are managed explicitly by
executes the threads to the scheduling parameters
according the The distinguished mentioned above
programmer ports
associated with them and the available processor resources have to do with connections to several
generally establishing

in the system In particular there is no arrangement e.g 30 important functions in the system Mach supplies three

of threads in an address and no assump- with each task The task self
hierarchical space special ports first is the port
tions about how they are to interact with each other In order which can be used to ask the kernel to perform certain

to control the order of execution and the coordination of operations on the task The second special port is the

threads to some useful end Mach several synchro- bootstrap which can be used for anything its OS
provides port
mecha- but locate other
nization mechanisms The simplest and coarsest 35 environment-specific generally serves to

nism is thread-level suspend and resume operations Each services The third special port that each task has is the host

thread has which incremented and name port which allows the task to obtain certain informa
suspend count is

decremented these operations thread whose suspend tion about the machine on which it is running Additionally
by
count is remains blocked until the count goes to Mach supplies several registered ports with each task that
positive
allow the threads contained in the task to communicate with
zero 40

certain higher-level servers in the system e.g the Network


Finer can be obtained the use of
synchronization through
or monitors and con- Name Server the Service Server and the Environment
synchronization objects semaphores
which allow of different Server
ditions variety synchronization

to be used Threads can also interact via Two other useful sets of ports exist for each task that
styles inter-process
be
communication IPC Each of these services is described in 45 allow fault processing and program state sampling to

more detail in later sections Basic operations exist to performed The fault ports of task provide common place

and and setting for processor faults encountered by threads in the task to be
support creation termination getting

attributes for threads Several other control operations exist processed Fault processing is described more fully in later

on threads that can be performed by any thread that has section The PC sample port allows profiling tools to repeat-

send threads control Threads can so monitor the execution state of the threads in the task
right to the intended port edly

be terminated can also be interrupted from Many operations are possible for tasks Tasks can be created
explicitly They
the various walt situations and caused to resume and terminated Creation of new task involves specifying
possible

execution with an indication that they were interrupted some existing task as prototype for the initial contents of

Threads can also be wired which means that they are the address space of the new task task can also be

marked as with to kernel resources i.e 55 terminated which causes all of the contained threads to be
privileged respect

when free terminated as well The threads contained in task can be


they can consume physical memory memory is

This used for threads in the default path enumerated and information about the threads can be
scarce is page-out

Finally threads also have several important lit ports more extracted Coarse-grain execution of task more precisely

precisely the send or receive rights to these ports which are the threads in the task can be controlled through suspend

used for certain functions In each thread has 60 and resume operations Each task has suspend count that
particular

thread self which can be used to certain is incremented and decremented by the suspend and resume
port perform

on the thread by itself thread also has set of operations The threads in the task can execute as long as the
operations

which is used when the thread encounters suspend count for the containing task is zero When the
fault ports

fault during its execution There is also distin- suspend count is positive all threads in the task will be
processor
that can be used for gathering samples of the 65 blocked until the task is subsequently resumed Finally the
guished port
other threads such various and attributes associated with task
threads execution state for monitoring by parameters

as debuggers or program profilers e.g scheduling priority can be queried and set as desired

djj provided by USPTO from the PIRS Image Database on 05/15/2008


Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 27 of 42

5519867
13 14
with the data from the byte addresses in the
Virtual Memory corresponding
To this the kernel
associated memory object accomplish
Mach several features in its virtual memory
supports
engages in well-defined and onerous protocol

VM subsystem Both the external client interfaces as well


actually

with the pager whenever it needs to get data for page faults
the internal offer features that are not
as implementation
or when it needs to page-out data due to page replacements
found in other In broadest terms
many operating systems
This protocol which is known as the External Memory
the Mach virtual memory system supports large sparsely

virtual address for each of the tasks running Management Interface or EMMI also handles the initial
populated space
ization for memory objects when they are mapped
in the Clients are with general services for sequences
system provided
by client tusks and the termination sequences when any
managing the composition of the address space Some
deallocated by client tasks
aspects of the VM system are actually implemented by
10 associated memory regions are

that are outside of the micro-kernel which There can be any number of pagers running in the system
components
allows in tailoring certain functions to which are in use the
great flexibility policy depending on memory objects by
different environments The internal architecture of various client tasks Pagers will typically be associated with
system
the Mach VM system has been divided into machine-
the various file
systems that are mounted at given time for

independent and machine-dependent modules for maximum database


Pagers could
15 also exist to support certain
example
architecture
portability Porting to new processorIMMU is
which might have needs for operations beyond
applications
generally small matter of implementing number of exist
what is
supported by the file system Pagers could also

functions that manipulate the basic hardware MMU struc


for certain servers that wish to supply data to their clients in

tures Mach has been to number of different


ported non-standard ways e.g generating the data computation-
architectures to the of the
subsystem The
attesting portability 20
processor ally rather than retrieving it from storage
and in particular
overall kernel the virtual memory system micro-kernel always expects to have certain distinguished

The of Mach task contains number of


address space known as the default pager running in the system The
pager
of virtual
virtual memory regions These regions are pieces default is responsible for managing the
memory
pager
that have been allocated in various for
address space ways associated with virtual memory such
objects anonymous
use by the task They are the only locations where memory and
stacks heaps etc Such memory is
temporary only of
be accessed All references to addresses
can legitimately use while client task is As described above the
running
outside of the defined regions in the address space
will result
main entities in the Mach VM system are regions memory
in an improper memory reference fault virtual memory and Most clients however will deal with
objects pagers
has several attributes It has page-
region interesting virtual through on ranges of memory
memory operations

aligned starting address and size which must be multiple 30 could


range can be of or it multiple
portion region span
of the size The pages in the region all have the
system page contiguous regions in the address space Operations are

same access these access protections can be


protections
provided by Mach that allow users to allocate new ranges of

read-only read-write or execute The pages in region also


and deallocate as
virtual in the address ranges
memory space
have the same inheritance characteristic which may be used desired Another important operation allows memory
when new tusk is created from the current tusk The
object to be mapped into range of virtual memory as

inheritance characteristic for pages in region can be set to


above also available to the
described Operations are change
indicate that new task should inherit read-write copy of
protections on ranges of memory change the inheritance

the that should inherit virtual of the region


region it copy characteristics and wire or lock the of into
pages range
inherit of the read-write
or that it should no copy region also to read ranges of
physical memory It is
possible

copy of region in new address space provides fully 40 from task write into in another
memory another or ranges
shared mapping of the region between the tasks while available
task that the control for the task is
provided port
that essen
virtual copy provides copy-on-write mapping Additional services are available that allow the user to

each task its own of the region but with


tially gives copy specify the expected reference pattern for range of
of the constituting the
efficient copy-on-write sharing pages the kernel advice on
memory This can be used by as ways
region 45 different situations
to adapt the replacement policy to
page
Every virtual memory region is really mapping of an Yet another service is available to synchronize or flush the

abstract entity known as memory object memory object contents of range of memory with the memory objects

is collection of data that can be addressed in some it Finally services are available to obtain informa
simply backing
fashion and about which the kernel makes no tion about and to enumerate the contents of tusks
byte-wise regions

It is best thought of as some pure piece of data 50 address described in terms of the regions it contains
assumptions space
that can either be explicitly stored some place or can be

produced in some fashion as needed Many different things


Interprocess Communication
can serve as memory objects Some familiar examples

include files ROMs disk partitions or foats Memory Mach has four concepts that are central to its interprocess

objects have no Fe-defined operations or protocol that they communications facilities Ports Port Sets Port Rights and

are expected to follow The data contained in memory Messages One of these concepts Port Rights is also used

object can only be accessed when it has been tied to VM by Mach as means to identify certain common resources in

memory has been threads tasks etc.


region through mapping After object the system such as memory objects

the data can be accessed via normal


mapped to region
read and write load and store operations 60
memory Ports

managed by special task


memory object is generally

known as an external or pager is Threads use to communicate with each other port
memory manager pager ports

task that executes outside of the micro-kernel much like is


basically message queue inside the kernel that threads

user-mode whose can add messages to or remove from if


they have
any other task in the system It is entity message

handle for the data of the 65 the proper to do so These permissions are
job is to certain requests memory permissions

reference the called Other attributes associated with port


supports As
it threads in client task port rights
objects

in region the kernel logically fills the pages besides port rights include limit on the number of mes
pages given

Copy provided by IJSPTO from the PIRS Image Database on 05/15/2008


-4
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 28 of 42

5519867
15 16
that be on the limit on the Port rights have several attributes associated with them
sages can enqueued port
be and or
maximum size of message that can sent to port the type of the right send send-once receive port set

count of how many rights to the port are in existence Ports dead name and reference count for each of the ahove

exist solely in the kernel and can only be manipulated via types of rights When task acquires right for port to

which it has send or receive the correspond


rights already rights
port

ing reference count for the associated port name is incre

mented name becomes dead name when its


port

associated port is destroyed That is all


port names repre
Port Rights
senting send or send-once rights for port whose receive

thread can add message to ports message queue if


right is deallocated become dead names task can request

it has send right to that port Likewise it can remove notification when one of its rights becomes dead The kernel

from if it has receive right of the number of send and


message ports message queue keeps system-wide count
Port considered to be resources of send-once each port that holds receive
to that port rights are rights for Any task

task not an individual thread There can be many send rights right such as server can request notification message be

to
port held by many different tasks however there can sent when this number goes to zero indicating that there are

be one created This no


only receive right to port In fact port is
no more senders clients for the port is called

by allocating receive right and port is destroyed only more senders notification The request must include send

when the receive right is deallocated either explicitly or


right for to which the notification should be sent
port
when the task dies In addition the attributes of
implicitly

port are manipulated through the receive right Multiple 20

threads on the same or different tasks can send to port at


ets
the same time and multiple threads on the same task can

receive from at the same time Port rights act as Port sets provide the ability to receive from collection of
port

permission or capability to send messages to or receive ports simultaneously That is receive rights can be added to

from and thus they implement low-level 25 port set such that when receive is done on the port set
messages port
form of security for the system The owner of port is the
message will be received from one of the ports in the set

task that holds the receive right The only way for another The name of the receive right whose port provided the

send if it is receive
task to get right for port is explicitly given message is reported by the operation
the the or task that holds
righteither by owner by any
valid send right for the port This is
primarily done by 30

the right in and the to


including message sending message Messa es
another task Giving task send right grants it permission

send to the as it wants There is Mach IPC message comprises header and an in-line
to as many messages port

another kind of called send-once right that only data portion and optionally some out-of-line memory
port right
at which and If the contains neither port
allows the holder to send one message to the port regions port rights message

time the send-once become invalid and cant be used rights nor out-of-line memory then it is said to be simple
right

again Note that ownership of port can be transferred by message otherwise it is complex message simple

the receive to another task contalns the header directly followed by


sending ports right in message message message
the in-line data portion The message header contains
Tasks rights either by creating them or
acquire port
destination send right an optional send right to which
receiving them in Receive rights can only be 40 port
message
send-once and the
created by doing port allocate as described reply may be sent usually right
explicitly
length of the data portion of the message The in-line data is
send can be created either from an
above rights explicitly
of variable length subject to maximum specified on
send or receive right or implicitly while being
existing
be created per-port basis and is copied without interpretation com
transmitted in message send-once right can
header with the same
explicitly or implicitly from receive right only When 45 plex message consists of message
format as for simple message followed by count of the
is in the sender can that the right
right sent message specify
number of out-of-line memory regions and ports disposition
either moved or new right created by the send
is copied
describing the kemels processing of these regions
Receive rights can only be moved of course arrays
operation
and and the out-of-line descriptors
When the and the ports arrays containing
right is moved the sender looses right
and the port rights
receiver gains it When copied the sender retains the right 50

desired
but of the right is created and given to the receiver The port right disposition array contains the
copy
When the sender receive right and new processing of the right i.e whether it should be copied
created provides

send send-once is created and to the receiver made or moved to the target task The out-of-line memory
or right given

means Mach each whether


When task acquires port right by whatever disposition array specifies for memory range

it name Note that ports themselves are not named 55 or not it should be de-allocated when the message is queued
assigns

but their port rights are Despite this fact the creators of and whether the memory should be copied into the receiving

with tasks into the address


Mach decided to refer to the name of port right the address space or mapped receiving

term of obvious name This space via virtual memory mechanism The
port name instead the port right copy-on-right

on Intel machines that out-of-line the size address and align-


name is scalar value 32-bits is descriptors specify

guaranteed unique only within task which means that 60 ment of the out-of-line memory region When task receives

are
several tasks could each have port name with the same message the header in-line data and descriptor arrays

to into the addresses in the to the


numeric value but that represent port rights totally dif- copied designated parameters
contains out-of-line then
ferent ports and is chosen at random Each distinct right receive call If the message data

held task does not necessarily have distinct port name virtual memory in the receiving tasks address space is
by
name hold the out-of-line
assigned to it Send-once rights always have separate 65 automatically allocated by the kernel to

each Receive and send that refer to the same data It is the responsibility of the receiving task to deallo
for right rights

have name cate these when are done with the data
port however will the same memory regions they

from the FIRS


Copy provided by LJSPTO Image Database on 05/15/2008
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 29 of 42

5519867
18
17
thread is unblocked and then
Transmission Semantics condition is true waiting
Message
execution thread
the lock before continuing
re-acquires

Mach IPC is basically asynchronous in nature thread


also broadcast operation on condition which
can perform
and once the message is queued the threads for that condition
sends message to port unblocks all of waiting

continues execution receive the condition wait


on the port the sending thread time-outs can also be set on
Optional
on the will wait for the
on will block if there are no messages queued to limit the time thread
port operations
combined send/receive call that
port For efficiency there is condition
block for
and immediately waiting
wifi send message
on specified reply port providing synchronous Scheduling
message
model timeout can be set on all message operations 10
for the
the is unable to be Since Mach is multiprocessor capable it
provides
which will abort the operation if message
of threads in multiprocessor environment
available to be received within the scheduling
sent or if no message is

to and it

send call will block if it uses Mach defines processor sets group processors
specified time period
that can be associated with them
has reached its maxi- defines scheduling policies
send-right whose corresponding port
timeshare and fixed
send-once right Mach provides two scheduling policies
mum number of messages If send uses

is The timeshare policy is based on the exponential


be queued even if the port priority
the is guaranteed to
message
are of the threads usage of the CPU This policy also
full delivery is reliable and messages guar- average
Message the number
that to optimize the time quantum based on
to be received in the order they are sent Note attempts
anteed
The fixed policy does not
in Mach which for the of threads and processors priority
there is
special-case code optimizes
on the
the fastest alter the but does round-robin scheduling
model over the asynchronous model 20
priority
synchronous the
that are at the same priority thread can use
achieved server doing receive threads
IPC round-trip time is by
of its set or explicitly
default processor
followed by repeated send/receives in loop and the client scheduling policy
enabled for its
one of the scheduling policies
send/receives in loop on its side use any
doing corresponding
maximum
set priority can be setfor processor
processor
lower value the
set and thread In Mach the the priority
Port Rights as Identifiers 25
the urgency
greater
the kernel both that port rights cannot
Because guarantees

be counterfeited and that messages cannot be misdirected or


Faults

reliable and secure


falsified port rights provide very
The Mach fault handling services are intended to provide
identifier Mach takes advantage of this by using port rights
and user-
almost in the system including
30 flexible mechanism for handling both standard
to represent everything
faults The standard kernel facilities of
defined
tasks threads memory objects external memory managers processor
used to the fault
threads messages and ports are provide
permissions to do system-privileged operations processor
uses the word fault
and since the kernel can send handling mechanism This document
allocations so on In addition

where Mach documentation uses the word exception


and receive itself it represents itself as special the
messages
has been herein to distinguish
of the kernel services are accessed via Such terminology changed
task the majority
has allowed hardware faults from the exception mechanism of the
of This
IPC messages instead system-call traps
differ in
where language Threads and task have fault ports They
services to be migrated out of the kernel fairly easily

their inheritance rules and are expected to be used in slightly


appropriate
different Error handling is expected to be done on
ways
basis and debugging is expected to be handled on
Synchronization per-thread

basis Task fault ports are inherited from parent to


per-task
for and
Currently Mach provides no direct support synchro-
child tasks while thread fault ports are not inherited

nization capabilities However conventional operating sys-


default to no handler Thread fault handlers take precedence
Such
tems routinely provide synchronization services Syn-
over task fault handlers When thread causes fault the

services many well-known sends fault to the


chronization employ kernel blocks the thread and message

such as semaphores and monitors and condi- handler is task


mechanisms threads fault handier via the fault port
which are described below Semaphores are syn- from the fault port The message
tions that receives message
both exclusive and
chronization mechanism which allows contains information about the fault the thread and the task

shared access to resource Semaphores can be acquired and


The handler performs its function accord-
causing the fault

released in either an exclusive or shared mode and they 50 If appropriate the handler can get
ing to the type of the fault
on the acquire caused the
thue-out periods execution state of the thread that
can optionally specify and modify the
recoverable in the the
are optionally to clear the fault to terminate
operations Semaphores fault Possible actions are

that when thread that is holding semaphore onto the task-level handler Faults
sense thread or to pass the fault
associated with the some
terminates prematurely the counters
are identified by types and data Mach defines

and threads are unblocked for all


semaphore are adjusted waiting machine-independent fault types that are supported

bad bad instruction


as appropriate Mach implementations e.g access
mecha- Other fault can be implementation
Monitors and conditions are synchronization breakpoint etc. types

which relatively more disciplined and e.g f-line co-processor violation etc.
nism implements dependent

safer style of synchronization than simple semaphores


binary 60
monitor lock also called mutex is essentially Host and Processor Sets

enables mutually exclusive access to some


semaphore that
and Mach the notion of the host which is essentially
variables can be used to wait for signify exports
data Condition
abstraction for the on which it is executing
certain Boolean expres an computer
the truth of programmer-defined
on the host depending
the monitor When thread that Various operations can be performed
sions within the context of
that task has for the host
to wait for condition the 65 on the specific port rights
holds monitor lock needs
task
thread blocked Later Information that is not sensitive can be obtained by any
monitor lock is relinquished and the is

name port Examples of


right to
that holds send the host
the lock notifies that the
when another thread that holds

from the PIRS Image Database on 05/15/2008


Copy provided by LJSPTO
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 30 of 42

5519867
20
19
include additional classes such as security
include the version of the kernel or the library 402 may
such information
the
Almost classes 420 depending on the services provided by
to the value of the system clock
right to gain access
described
operating system 114 Each area is

all other information is considered sensitive and higher underlying


class and text detailing the purpose and
is to or manipulate the with diagram
degree of privilege required get
Selected methods are presented and
is implied when function of each class
information This added level of privilege
the list of method is

port also known


send control defined where appropriate parameter
task holds right to the host

also Thus this section provides complete opera


must be given out provided
as the host privilege port This right very
of the class library
tional definition and description wrapper
carefully and selectively to tasks because having this right
The implementation of the methods of the wrapper
task to do everything possible to the 402
enables virtually
402 is discussed in later section
of the io class library
kernel thus by-passing the security aspects system
can be The the well-known
by the IPC services Various operations class diagrams are presented using
supported
altering the Booch icons for class relationships and cardi
with this added privilege including representing
performed
overall performance and These Booch icons are presented in FIG 17 for
systems clock setting obtaining nality

statistics for the system and causing the convenience purposes The Booch icons are discussed in
resource usage
15 Oriented Design With Applications by Grady Booch
machine to re-boot Object
above The wrapper class library 402 is prefer
arid processor referenced
Mach also exports the notions of processors
the well-known C-H- computer
specify when and ably implemented using
sets which allow tasks to more carefully
However other programming lan
threads should execute Processors programming language
on what processors
its
the class
with could alternatively be used Preferably
and sets can be enumerated and controlled guages
processor
20 are grouped into SPI System Programming
particular descriptions
the host privilege port processor represents
Interface Inter
set Interface API Application Programming
in the system and processor represents
processor
of Services exist to create new pro nal and Noose methodsindicated by ifndef statements
collection processors
the code in question or by comments for Noose
to set or remove them as bracketing
cessor sets and to add processors
to the corn-
entire tasks or methods SPI interfaces are specific particular
desired Services also exist to assign particu
For the
can
25
puter platform being used illustrative purposes
lar threads to set Through these services programmer
and described herein
and that wrapper class library 402 is
presented
control on coarse grain when the threads tasks

to operating in accordance
to execute This allows with respect computer platform
constitute an application actually get
IBM MicroKernel based on Mach Version
when certain threads should be with the which is
to specify
programmer relevant art will
Persons skilled in the
executed in parallel in set The default assign 3.0 or compatible
processor
30 to the SPI classes to accommodate
threads that do not explicitly use these find it
apparent modify
ment for tasks and
based on the teachings contained
which other computer platforms
is to the system default processor set
capabilities
in the that arent herein
generally contains any processors system
in the class library
used in other sets API interfaces are included wrapper
being
running on The
402 regardless of the platform the system is

for use low-level


Internal interfaces are intended only by
Security
to
implementors The Noose methods are provided solely

of services in addition 130 with the wrapper 128 to


Mach may include other categories enable an application operating
was
example Mach include 134 that
to those described above For may communicate with an application or server
accordance with the Mach Mach access to
services relating to security In written to run on 114 directly They provide
which 40 outside
services task carries security token the raw Mach facilities in such way that they fail
security every
Mach There is model estab
is scalar value that is uninterpreted by of the intended object-oriented programming

host port that is given to the bootstrap by the 128 Use of Noose methods is highly
port called the security lished wrapper
to the trusted security sever tasks The SPI and API and perhaps the Internal
task and passed on discouraged
task that holds sufficient to any appli
security token can be set or changed by any classes and methods are implement

send to the host security port while no special cation component or subsystem
right

needed to determine the value of tasks


permissions are

the tasks control of Thread Classes


security token other than holding port
IPC received the
course At the time Mach message is
404 and
FIG is class diagram 501 of the thread classes

of the sender of the message is returned as one


security token The 404 provide an
the task classes 406 thread classes
receive function Tasks that
of the output parameters to the
to the and threading func
object-oriented interface tasking
host can send message and assign
hold the security port number of the thread classes 404
tionality of Mach 114
so that it to
token to that appears
different security message
are handle classes so noted by their name which means
have come from another task These services can be used by kernel
reference to the corresponding
that they represent
various degrees of
layers of the system to implement handle classes create an
upper entity The null constructors on the

security An handle object does not


handle object empty
empty
must be initial
to kernel entityit
initially correspond any
Wrapper Class Library ized via streaming an assignment or copy operation

methods on an empty handle will cause an exception


of the Calling
an area-by-area description
This section provides handle can be
to be thrown Multiple copies of object
the services by the
object-oriented interface for provided The
same kernel
interface to the made each of which point to the entity
Mach micro-kernel This object-oriented the
reference-counted so that
handle objects are internally
class library 402 as
Mach services represents the wrapper
kernel entity can be deleted when the last object representing
the code library 110 The wrapper class
implemented by
406 it is destroyed
402 includes thread classes 404 task classes
library thread
TrhreadHandle concrete class that represents
IPC classes 410 synchroniza 65 is
virtual memory classes 408 for
in the the methods controlling
classes 414 fault classes 416 entity system It provides
tion classes 412 scheduling
about the thread It also pro-
The class and information
and machine classes 418 are discussed wrapper determining

USPTO from the PIRS Image Database on 05/15/2008


Copy provided by
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 31 of 42

5519867
21 22

vides the mechanism for new threads in the SetThreadSchedule const flhreadSchedule newS-
spawning
the in the thread to the
system Control operations include killing suspending/re- chedule sets scheduling object

death watch on newSchedule control the


suming and doing it Constructing object This allows one to way
TFhreadHandle and in TThreadProgram object thread is scheduled
passing

causes new thread to be constructed on the current task


GetS cheduleState TThreadHandle theBlocke
The first code run in the new thread are the Prepare and of
dOnThread allows one to query the current state the

Run methods of the TThreadProgram object Destroying


thread thefllockedOnThread on which this thread is

TrhreadHandle does not the thread it represents


destroy
blocked
There also be cancel on the TThreadllandle
may operation
CancelWaitAndPostException const causes blocking
that each TThreaclllandle contains send
object Note object
10
This information kernel call to be unblocked and TKernelException to be
right to the control port for the thread is

not exported by the interface in general but because it does thrown in the thread this
flhreadPro- watch the
contain port right the only stream object WaitForDeathOf coast performs death on

gram can be streamed into is TlPCMessageStream threadblocks calling thread until the thread this termi

to stream into other TStream objects will cause interest


Attempting nates CreateDeathinterest creates notification
15
be thrown.
an exception to for the death of the thread this When the thread termi

TmreadHandle provides number of methods for use by nates the flnterest gets notification
specified
and the runtime environment and for supporting
debuggers flhreadProgram is an abstract base class that encapsu
of envi-
interactions with Mach tasks running outside the
laths all the information required to create new thread This
ronment established the 128 These methods
by wrapper code be information
20 includes the to executed scheduling
include and setting the state of thread spawning an
getting
and the threads stack To use it must be subclassed and the
threads fault
empty thread in another task getting the
and Run methods and then an instantia
and Begin overridden
to the threads control port
ports returning right
tion of the object passed into the constructor for flhread
T1hreadHandle handle from thread control port
creating
Handle to spawn thread The Begin routine is
provided to
send right
aid startup synchronization Begin is executed in the new
As noted above the wrapper 128 establishes computing
thread before the TIhreadHandle constructor completes
environment in which the applications 130 operate For
and the Run routine is executed after the flhreadHandle
brevity this computing environment established by the
constructor The methods CopyThreadSchedule
wrapper 128 shall be called CE With regard to the wrapper
completes
and GetStackSize the default thread schedule and
128 flhreadHandle spawns
CE runtime thread on the return

another stack size lb provide values different from the default these
current task thread can also be spawned on task 30

methods should be overridden to return the desired thread


instead of on the current task by using the CreateThread
in of schedule and/or stack size includes the
methods in the flaskHandle class and subclasses flhreadProgram

flaskHandle thread on another task is not following methods


Creating
recommended as general programming model however TmreadProgram const flext taskDescripiion Thsk
To spawn CE thread on another CE task the TCETa5kHan- 35 Description provides text description of task that can be

dleCreateThread method is used by passing it Trhread- access via the ThskHandleGetThskDescription method

Program describing the thread to be run To spawn non-CE in effect if the object is passed TlaskHandle con-
Only
thread that is thread which does not operate in the structor If default constructor is used instead the interface

computing environment established by the wrapper 128 the will synthesize unique name for TraskHandle GetTask
CreateThread method is used on the subclass of to return
appropriate 40 Description

flaskHandle that is the subclass of T1askHandle that has


GetStackSize returns the size of the stack to be set up
heen created to with the other non-CE computing
operate for the thread Override this method if
you dont want the

environment For example to spawn an IBM OS2 thread on


default stack size

an 052 task might use


you threads stack Override
GetStack Used to set up the
TOS2TaskHandleCreateThread method It is not possible
this method if want to provide your own stack
you
to run CE thread on non-CE task nor is it possible to run
Run the entry for the code to be run in
non-CE thread on CE task represents point

the thread OVERRIDE THIS METHOD to provide the


T1hreadllandle includes the following methods
code the thread is to execute
flhreadHandle const TrhreadProgram copyThread

Code creates new thread in the calling taskmakes an

COPY of which deleted Thsk Classes


internal the TmreadProgram is

upon termination of the thread


See FIG for class diagram of the task classes 406
IThreadHandle TlhreadProgram adoptThreadCode
TTaskHandle is concrete base class that encapsulates all

creates new thread in the calling taskADOPTs adopt-


55 the attributes and operations of basic Mach task It can be
ThreadCode which is deleted termination of the thread
upon refer and control task on the
used to to any system
The resources owned by the thread are also discarded
flaskHandle cannot be used directly to create task
copy of the TThreadProgram is NOT made
however because it doesnt have any knowledge about any
IThreadHandle creates thead
EExecution yourself runtime environment It does sufficient protocol via
provide
handle for the calling thread for subclasses with runtime
60 protected methods specific

TStream streams in TIhreadHandle object to TIPC- to be created that can tasks


knowledge spawn

MessageStream TCETaskHandle below is an example of such class

CopyThreadSchedule returns pointer to the Schedul- TTaskHandle objects can only be streamed into and out of

TtJlSchedule etc that is TlPCMessageStreams and sent via IPC to other tasks and
ing object e.g TServcrSchedule
for the 65 returned in collection associated with
used to schedule the object Allocates memory they are

flhreadSchedule which has to be disposed of by the TCETaskHandle The task control operations associated
object
with flaskllandle include killing the task suspending and
caller

Copy provided by USPTO from the PIRS Image Database on 05/15/2008


-4
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 32 of 42

5519867
23 24
TCETaskHandte const TTaslcHandle aTask creates
deathwatch on the task The
resuming the task and doing
from task object
informational methods include getting its host getting and CE task object generic

or virtual ltibrarySearcher newLib


setting its registered ports enomerating its ports AddLibrarySearcher const
taskloader uses
memo regions getting its fault ports enumerating its
Searcher adds library searcher for the

methods referneces i.e the


includes the following resolve
threads etc TlhskHandle newLibraryScarcher first to lib

creates task handle is on the of the collection used


T1askHandle EExecutionThread newLibrarySearcher put top

for the specified thread to resolve references

returns
Suspend suspends the task i.e all threads contained by GetTaskDescription flext description const

from the
the task Resume resumes the task i.e all threads of the taskgets the string
string description
10 of the root thread passed to
contained by the task associated flhreadProgram
contained the The is to be unique and
Kill terminates the taskall threads by constructor string guaranteed
will be synthesized by the interface if no description
task are terminated string
constructor
WaitForDeathOf performs death watch on the task is passed to the flhreadProgram

this terminates Tlnterest notifyMe synchro


The calling thread blocks until the task NotifyupopCreation
the
notification interest for the notifies the calter of every new task creation in
CreateDeatbinterest creates nously
involved The task
death of the task The thread specified
in the Tinterest object system There is no this task object

terminates the receiver of the notifi


notification when the task this from which this call originates is
gets

TMemorySur cation
AilocateMemory size_t howManyBytes
allocates range of anonymous vir-
rogate newRange 20

in the tasks address space The


teal memory anywhere
Classes
desired size in is specified in howManyBytes The Virtual Memory
bytes
size of the
starting address after page alignment and actual
HG is class diagram 601 for the virtual memory
allocated memory are returned in newRange
newly classes 408 Note that TfaskHandle is class that represents

const TMemorySur- 25 has been discussed under the


AllocateReservedAddressMemory task TraskHandle already
allocates operations
rogate range TMemorySurrogate newRange Task classes 406 section For virtual memory
at reserved to the address
range of anonymous virtual memory specified objects of type lTaskHandle serve specify

address in the tasks address space The range argument in which the operation is to occur Most of the virtual
space
the address and size of the request The newRange that can be performed in Mach are
specifies memory operations

the address and size of the allocated 30 methods of T1askHandle The various meth
returns page aligned represented as
take
ods of flaskHandle that on virtual memory
memory operate

as See the various


GetRemotePorts TMemorySurrogate objects parameters
for further
thePortSet gets methods under the ITaskilandle description
TCollectioncRemotePortRightHandle
for number of classes have copy con
list of ports on this task The caller is responsible details the memory
Collection 35 and/or It should be noted
de-allocating the memory in the returned structors assignment operators
references to the memory
classes contain
void CreatepaultAssociationCollectiofl that the memory
virtual
itself Therefore when memory
Fault Ports and not the actual memory
TCollectionCFaultAssociation where retum
the references
class objects are copied or streamed only
registered for this Thsk
them and not the actual memory The
within are copied
TCETaskHandle is subclass of flaskHandle that rep for
40 class contains explicit methods
TMemorySurrogate
resents Mach task executing with the CE ruotime system
of the memory it references
environment doing copies
recall that that CE represents the computing
the is class that represents contiguous
established by the wrapper 128 and embodies all TMemorySurrogate
virtual address It has
of memory in the space
the CE object environment range
It
knowledge required to set up
flhreadPro starting address and size in bytes TMemorySurrogates
can be used to spawn new task by passing
can be used to specify ranges of memory on which certain
into constructot The new task is created with
gram its

to be performed They are typically supplied


operations are
thread which is described by the TIhreadProgram
single that
There as arguments to methods of flaskHandle manipulate
into the TCEmskHandle constructot is
object passed associated with the
in the address
will allow TCETaskHandle to be the virtual memory space
also constructor that
task This class used to specify/supply region of memory
constructed from T1askHandle To insure that non-CE is

50 not allocate
with size The class itself does any
runtime task not with TCETaskHandle the specific
is wrapped It is the
memory It existing memory
constructor consults the CE loader/library server that is the just encapsulates

caller to provide the actual memory


loader/library server operating in the CE environment to responsibility of the

to the constructor This


with in this class the argument
make the task wrapped has been registered specified
sure being
user interven class is NOT subclassable
it This is done automatically without any
abstract base class that manages
includes the following methods TChunkyMemory is an
tion TCETaskHandle
allocated
in chunks of size Memory is

TCETaskHandle flhreadProgram whatToRun memory specified


const
code in chunks of the specified chunkSize but the user still

new task and thread to execute specified


creates
memory series of bytes TChunkyMemory
The new thread executes the code in whatToRun views the as

includes the following methods


task of cur 60
TCETaskHandle EExecutionTask wraps
LocateChunk size_t where TMemorySurrogate
rently executing thread
looks in the collection of chunks
theContainingRange up
TCETaskHandle T1hreadProgram whatToRun
const the address of the
and returns in theContainingRange
library-
const
memory and the chunksize
and thread to execute
Searchers creates new task
where cuts back to the chunk con
search The library- 65 CutBackTo size_t
specified code with specified ibrary
where will
list of libraries to be used for resolv taining where i.e the chunk at the offset
searchers the
specifies
become the last chunk in the list

ing names

Copy provided by USPTO from the PIRS Image Database on 0511 5/20U8
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 33 of 42

5519867
25 26

theAllo streamed into it and the TiPCMessageStreamSend method


AllocateMemoryChunk TMemorySurrogate
destination send-right
clients to allocate new chunks of is called with an object representing
catedRange is called by
as an argument To receive message TIPCMes
needed Returns the allocated range passed
memory as
is instantiated and its Receive method called
that sageStreani
concrete class manages
THeapChunkyMemoly is
as an argumenL When the
in receive-right object
passing
chunky memory on heap of the T1PC-
Receive returns objects can be streamed out

concrete class that manages


TvMChunkymemory is
MessageStream object Note that the TlPCMessageStream

chunky memory using virtual memory reusable more detailed description of the IPC
objects are

TMemoryRegionlnfo is class used with virtual memory classes 410 follow with reference to FIG which illustrates

regions in tasks address space It


provides memory 10 class diagram 702 of IPC message classes FIG which

information like Inheritance Protection etc. It


class 802 of IPC out-of-line memory
attribute illustrates diagram

also provides access to the memory object associated with


region classes and PIG which illustrates class diagram

of and to the actual memory range 902 of JPC classes


the region memory port right

in the memoxyregion Nested inside TMemo


encapsulated
class that
is the TMemoryAttributeBundle
ryRegionlxifo 15

Classes
memory attributes of any memory region
defines all the Message

This is useful when one wants to get/set all the memory


abstract base class that represents
MlPCMessage is an
attributes with minimal
attributes or to re-use memory for
Mach IPC message It provides all the methods setting
is also used in the class
changes TMemoryAttributeBundle the and the
tip the fields of the header disposition array port
into
TlTaskHandle to deal with mapping memory objects 20 It also contains all the
and out-of-line arrays
includes the fol memory
tasks address space TMemoryRegionlnfo
for sending and receiving It provides
protocol message
lowing methods to
as interface
rudimentary protocol exported protected
kReadOnly kReadWrite kEx data The
EMemoryProtection child classes for setting tip
the in-line message
ecute specifies the protection for the memory classes and TlPCPrimitiveMessage
TlPCMessageStream
kReadWritelnherit 25 methods for
EMeinorylnheritance kDontlnherit derive from this class and provide the public

attribute for the includes the


the inheritance data to the IvllPCMessage
kCopylnherit specifies adding message

memory following methods

kReferenceSequential kRefer replyPort is


EMemoryBehavior GetReplyPort TPortSendSideHandle
how one
enceReverseSequential kReferenceRandom specifies valid for receive side only Returns reply port object if

30
the time this
might be referenced with the returns it first
memory was sent message Only
received Otherwise returns false
speci called after is
EMemoryAttribute kCacheable kMigrateable is message

how machine specific properties of memory might be GetSendersSecurityTokenO is valid for


fies TSecurityToken
token of the task that
managed receive side only Returns the security

kWillUse kWontUse how sent this message


EMemoryAdvice specifies

will be used SetSendersSecurityTokenconSt TSecurityToken


memory
class that represents the hostSecuri
TMemoryObjectHandle is base impostorSecurityTokenconstTPOrtSendRig11t8C
embodies the of valid for send side only The next time the message
notion of Mach memory object It piece tyPort is

servers will carry the security token instead of the


data that can be mapped into virtual memory System is sent it specified

clients will sub for the task that actually does the send Takes effect
that TMemoryObjectHandles to 40 one
provide
class from TMemoryObjectHandle in order to define spe ONLY FOR THE NEXT SEND and then reverts back to the

such as ifies device partitions actual senders security token value


cific
types of memory objects
the
etc For the client of general virtual memory services
Methods for sending/receiving IPC messages Note that
and the various sub TTime timeout value If
main use of TMemoryObjectHandle all these methods have an optional
for data these
classes is to provide common type and protocol 45
you dont want timeout specify kPositivelnfinity All

in
that can be mapped into tasks address space methods replace any existing value for reply port msg

is concrete class derived from Than header For those methods that allow specification of reply
TChunkyStream
random access stream the of the reply port right as well as the port
domAccessStream that embodies port disposition

chunks of The chunk size can be right itself is


passed via
backed by memory
the
or default used The chunks can be enumerated 50
position object This is the only way to set reply port
specified
theTMemory state valid for the duration of the
This class provides common function of since the disposition is only

the overhead of maintaining the send Objects for port rights whose dispositions are MOVE
class without incurring

If the remaining functionality of become invalid once the send takes place
memory as contiguous
other classes could be defined Send TPortSendSideHandle destinationPort
TMemory is required const
55
is concrete class that uses const TIinie timeout kPositivelnflnity is one-way
TContiguousMemoryStream
by the client Since it is
asynchronous send
contiguous memory supplied
from TRandomAccessStreaxn all random access TPortSendSideHandle destinationPort
derived Send const

like SeekO are applicable to TContiguous const TReplyPortDisposition replyPort const Tfime
operations

an asynchronous send with


MemoryStream objects timeout kPositivelnflnity is
60
send -once reply port specified

InterProcess Communication IPC Classes


Receive const TPortReceiveSideHandle8r sourcePort

IPC message const Tfime timeout kPositivelnfinity is blocking


Mach
The IPC classes 410 represent the

the receive
Note that all messaging behavior is on
abstraction
TPortSendSideHandle send
classes are basically for 65 SendAndReceive const
classes the port right
message
const TPortReceiveSideHandle receivePort const
the The usage model is preferably as Port
addressing message
is instantiated objects axe TFime timeout kPositivelnfinity sends message
follows TlPCMessageStream

from the PIRS Image Database on 0511 5/2008


Copy provided by IJSPTO
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 34 of 42

5519867
27 28
the
blocks and receives reply reply port is send-once right style send and then blocks in receive to pick up reply

constructed from receivePort message ReplyAndReceive does server-side send of pre


and then blocks in
SendAndReceive TPortSendSideHandle send sumably reply message immediately
const
const TPortReceiveSideHandle receivePort MIPC receive awaiting the next request Both calls require that
Port

Message receiveMsg const TTime timeoutkPosi destination port and receive port be specified Additionally

SendAndReceive method automatically creates the


tiveinfinity send message block and receive replyreply the

from send-once from the receive right


port is send-once right constructed receivePort appropriate right supplied

avoid
Message is received into new message object to and passes it along as the reply port
overwrite concrete class that derives
TlPCPrimitiveMessage is

TPortSendSideHandle io from MlPCMessage and provides more rudimentary low


ReplyAndReceive const reply-

const TPortReceiveSideHandle receivePort const level interface to the Mach message system Data is pro
ToPort
T1ime timeout kPositivelnfinity sends back reply vided to and from the message header and body via get and

blocks and receives new message set calls There is no streaming capability This is concrete

TPortSendSideHandle reply class that represents Mach JPC message In-line data is

ReplyAndReceive const
added to the in TMemorySurrogate
ToPort const TPortReceiveSidellandle receivePort 15 message by passing

MlPCMessage receiveMsg const Tlime timeout Port rights arrays and OOLdata must be added and

receives extracted using the appropriate methods


kPositivelnfinity sends back reply blocks and explicitly

an out-of-line
new TOutOfLineMemorySurrogate represents
message
Subclasses methods for right fields in memory range that is to be included in an IPC message It
getting/setting port

header Remote and Local Ports On SEND side REMOTE 20 uses TMemorySurrogate in its
implementation and only

LOCAL PORT adds and


PORT specifies the destination port and disposition infonnation to the startAddress length

This
specifies the reply port On RECEIVE side REMOTE information already contained in TMemorySurrogate

same it includes
PORT specifies the reply port port to be replied to and class is the as TMemorySurrogate except

information used when sending message and


LOCAL PORT specifies the port received from The way the disposition the

the associated with the This


was or is to be transmitted is returned in theDisposi- 25 may represent storage range
port
methods to the
tion Itvalues MACH_MSG_TYPE_MOVE_
can have class includes streaming operators set/get

RECEIVE MOVE_SEND MOVE_SEND_ONCE range and methods to set/get disposition information

COPY_SEND MAKE_SEND MAKE_SEND_


ONCE Port Rights
GetRemotePort in the remote port right and specify 30
pass
The classes all the valid types of
following represent
the disposition
Mach rights These classes all share the following
PORT RIGHT methods port

general behaviors In general when port right object is


sender the
MovePortRightDescriptor is giving away port
instantiated it increments the kernels reference count for
to the destination Works on Send SendOnce and
right
that right and when port right object is destroyed it
35
Receive rights
decrements the kernels count However
is port right reference
sender creating copy
CopyPortSendRightDescriptor
note that right objects are handles for the real kernel
port
of the send right at the destination
right entities They can be copied in which case there
send be port
MakePortSendRightDescriptor new right will
be two that refer to the same kernel port right
created at the destination may objects

counted so that
entity These copies are reference internally
MakePortSendOnceRightDescriptor new send once 40
deleted the
when all the objects that refer to port tight are
right will be created at the destination
kernels reference count is decremented When
that port right
TlPCMessageStream is concrete class provides
right becomes dead name i.e when the port it

stream-based IPC messaging abstraction This is the recom port


the
belonged to is destroyed attempts to use methods on
mended class to be used for IPC operations It derives from
object will throw an exception excluding
MlPCMessageDescriptor and from TStream To send 45 representative
the reference that are
those operations like setting counts
user of streams in the data
message TlPCMessageStream
be sent deriva
valid on dead names
to including port-rights TPortRightHandle
TPortRightHandle an abstract base class that represents
tives out-of-line memory regions TOutOfLineMemory is

the notion of It contains all the protocol common


port-right arrays TPortRightHandleAxray port right
Surrogate
or of these and other object 50 to each type of port right such as getting the port name
objects containing any all any
the
data desired will automati requesting dead name notification testing to see if port
or type TlPCMessageStream

cally set the appropriate data structures for the port rights right is dead name etc The port name is returned as
up
and to
and in the message mach_port_name_t type is provided as way
port right arrays out-of-line memory
and holder in the stream so that these interact with Mach servers not written using the object
header put place
allow
elements will be streamed out of the in the appro- 55 wrappers It also serves as common super class to
message
been streamed all of to be passed
priate place in the stream Once the data has generic type representing types ports

Send the polymorphically TPortSenderHandle and TPortReceiver


in the message is sent using the method supplying
Handle derive from these classes This class includes meth
destination port right TPortSenderHandle and
appropriate
class and classes that
To receive the Receive ods for streaming support lhis any
optionally reply port message
receive right TPortReceiver- 60 contain it can only be streamed into or out of the TIPCMes
method is called supplying
stream into other
Handle for the to be received from The data just sageStream class Attempting to any
port
of the TStream will throw an exception at runtime Getters
received can then streamed Out TlPCMessageStream

also two methods for Setters and methods for requesting notifications Must
TlPCMessageStream provides

to send-once right that the notification is to be sent


doing combined send and receive operation designed provide

message transmission semantics 65 to MAKE send-once right by passing by reference


provide commonly-used
of in the Mach micro- receive right MOVE send-once right by ADOPTING
and to take advantage fast-paths

SendAndReceive does client-side synchronous- send-once tight


kernel

USPTO from the PIRS Image Database on 05/15/2008


Copy provided by
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 35 of 42

5519867
30
29
It has methods for
port set
TPortSetflandle represents
abstract class that represents any
TPortSenderHandle is an
removing and enumerating the TPortReceiveRight
that an IPC message can be sent to E.g this is the adding
port right the receive contained in
and rights
takes as the destination Handle objects representing
type MlPCMessageSend
that
methods for and setting its make send
and TPort the set getting
The classes TPortSendRightHandle port
reply ports with default
class TPortSetHandle is instantiated
derive from this class This count etc If
SendOnceRightHafldle is
be created If it
and Getters and constructor it causes port set to
includes methods for streaming support
alias created for
instantiated using the copy constructor an is

setters
send right It the same port set When the last object representing
represents port
TPortSendRightHandle set This
the port
that can be performed on particular port set is deleted it destroys
all the typical operations
supports
created valid TPortReceiv- 10 class cannot be streamed
send right It is by passing
into the construc concrete class that represents
eRightHandle or TPortSendRightHandle TportRightHandleArray
is

This as an out-of-line
tor or by streaming it out of TlpCMessageStreanl
an array of port rights that can be sent

methods an empty TPortSend can contain any kind of port


class includes that create
descriptor in an IPC message It

without affecting the kernel reference


and the disposition of the port right i.e how it is to
RightHandle object right
in the for each
constructors that create new Send Right transferred to the target task is specified port
counts be
Support and Getters This class an array of port
current task methods for Streaming right in the array implements
out-of-line in an IPC
and setters rights that can be sent as an descriptor

send-once along with port rights and out-of-line memory


TportSendOnceRightllandle represents port message
that can be methods for Streaming Support
Meth
the operations This class includes
It all typical
right supports

on send-once right It is created by passing ods to add elements to the array SEND SIDE and Methods
performed 20
into the constructor or by to remove elements from the array RECEIVE SIDE
valid TPortRecieveRightHandle
When message is concrete class that is used
streaming it out of TlPCMessageStream TRemotePortRightHandle
the send-once right does not contain
to an of this class making to refer to right in another task It
is sent object port
this will intended
attempts to send to object usual methods since it is not
invalid all subsequent most of the port right
the object will to
cause an exception to be thrown In addition
be used to those types of functions but merely
25 to perform
of the
as invalid and attempts to use methods remote right Construct
be marked act as name or handle for the port
for
to be thrown except
object will also cause exceptions
ing this class DOES NOT create port rightit only
This class
methods for initializing the object obviously exists in another task
right that already
represents port
that create prt5endOnceRight-
includes Constructors

Constructors thatcreate new Send


Handle object without Wait Groups
for Streaming 30
on the current task methods
Once right
classes that provide for
and Getters and setters MWaltable and TWaitGroup are
Support
to wait for more than
an abstract class that represents dispatching and the ability
TPortReceiverHandle is message
from same time TWaltGroup
that IPC message can be received
an one type of message source at the
any port right
as to set collection of
that MlPCMessageReceive takes is class that provides the ability up
E.g this is the type
that thread can use
The TportRightReceive- 35 from MWaitable such
the to receive from classes objects derived
port
this class This receive front any of the
and TPortSetHandle derive from the Walt method to message
Handle
and Getters also for automatic dispatch
includes methods for Streaming Support MWaitable objects It provides
class
Multi-Walt are
Operations
ing of the received message
and setters
receive They are
called repeatedly by task to messages
represents port receive right
TPortReceiveRightHandle there can be more than one thread
multi thread safe so
be performed 40
the operations that can for
It supports all typical This class includes methods
no-more-senders servicing messages
such
on receive right as requesting
the members of the TWaitGroup For example
mes manipulating
and the ports maximum MWaitables in this
notification setting getting returns list of
GetListOfWaitables
and setting its make-send
size and queue length getting base class that associates
sage MWaltable is an abstract
instantiated group
is
count etc If TPortReceiveRightHandle internal hatidler method HandlelPCMessage
port with an
it causes 45
the null or constructors class for collecting together
other than with copy It also provides common base

and receive to be created The copy constructor


class Receive Rights and other classes
port right via the TWaitGroup
the same
creates another object an alias that references
based on Receive Rights
are internally reference counted convenience class
receive right These objects is

when the last object referencing particular TportReceiveRightHandle and


such that that derives from both
the receive right and 50
whose subclasses can
receive right is destroyed it destroys MWaltable It is an abstract base class

all extant to that port


causing rights for multi-wait/dis
the port it represents be added to TWaltGroup to provide
that
dead names This class is concrete class MWaltable sub
to become of Mach message IPC with other
patching
the actual
definition
port receive right By
represents classes
when receive right is created
kernel entity is created
port
Since this 55
and when receive right is destroyed Classes
destroyed Synchronization
of the receive right
is handle creation and destruction
class

is not necessarily tied to creation and deletion of TPor HG 10 is class diagram 1002 of the synchronization

to invoke the synchronization


the default constructor classes 412 which are used
tReceiveRightHandle For example

create receive right but just an empty services of Mach As discussed above the synchronization
does not actually condi
60 and monitors and
Constructors that create TPor- classes 412 employ semaphores
This class includes
object is class that provides the general
without creating port or tions TSemaphore
tReceiveRightHandle object
When acquiring sema
Constructors that cre services of counting semaphore
reference counts
affecting the kernel
task has acquired the sema
methods to make an phore
if some other already
Receive and Ports
ate new Rights thread blocks no exception thrown But
the
receive right and phore calling
uninitialized valid creating
object is invalid for some reason an exception is
65 if the semaphore
Streaming Support Receive
therefore port in the
process includes the following methods
and thrown This class
methods Getters and setters
Right/Port manipulation
the semaphore in exclusive mode
Acquire acquire
for notifications
Methods requesting

from the PIRS Image Database on 05115120118


Copy provided by LJSPTO
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 36 of 42

5519867
32
31
lock on
is class that represents
Acquire const flime maximumWait acquire the TMonitorLock
into the constructors for TMonitorllntry
monitor It is
passed
semaphore in exclusive mode with time-out
to indicate which monitor is being
mode and TMonitorCondition
the in shared
AcquireShared acquire semaphore condition to be associated
aquired or to which monitor is

AcquireShared const flime maximumWait acquire


Scheduling Classes
the semaphore in shared mode with time-out

classes
Release release the previously acquired semaphore FIG 11 is class diagram 1102 of the scheduling

services of
which are used to invoke the scheduling
AnyThreadsWaiting returns true if the semaphore 414
has threads waiting to acquire it Mach
currently
flhreadSchedule is concrete base class that embodies
is class that counting 10
TLocalSemaphore represents
behavior of thread It defines the threads
shared the scheduling
that be in an exclusive or
semaphore can acquired
and maximum priorities The lower the
and release An actual default
mode The major operations are acquire
Each set
value the greater the urgency processor
the priority
time-out value can be specified on acquire
optional and default
has collection of enabled flhreadSchedules
time if desired This class
operation to limit the spent waiting that is
one thread may be assigned any flhreadSchedule
local which may only be used
mplements semaphores 15
set on which the thread is running
enabled on the processor
task and have no recovery seman
within address space the maximum value defined by
The priority may be set up to

tics dis
TrhreadSchedule but use of this feature is strongly

class that classes


TRecoverableSemaphoreHandle is represents couraged Specific scheduling TldleSchedule
with this class
semaphore that behaves like TLocalSemaphore the TServerSchdule etc are made avallable using as

that the semaphore is recoverable 20


the base However since there are no pure virtual functions
additional property
of
that when thread holding the sema in this class derived classes are free to create objects this
Recoverability means
terminates the counts are adjusted and class if necessary but it may not be required to do so
phore abnormally
are used to
threads are unblocked An excep TrhreadSchedule objects using polymorphism
any waiting appropriately
that the sema scheduling policy for threads The subclasses pre
each such thread specify
tion is raised in indicating
be used to determine the appropriate
of any associated user 25 sented below should
phore was recovered and the inlegrity

termination of priority and proper range


for abnormal
data may be suspect Note that

TldleThreadSchedule is concrete subclass of flhread


thread that had the semaphore in shared fashion
acquired
since the Schedule for those threads that are to run when the system
need be raised in other threads
no exceptions
in read is idle They only run when nothing else in the system can
associated data should only have been accessed
for idle
be in consistent state This 30 run This category in general would be used timing
only fashion and should still

or threads
maintenance diagnostic
class includes the following methods
concrete subclass of TmreadSched
of the current TServerSchedule is
GetCurrentHolders returns collection
ule for server threads Server threads must be very respon
threads the semaphore
holding to execute for short time and then
sive They are expected
sets state of the to recovered of time
SetRecovered semaphore block For services that take an appreciable amount

damaged state with different kind of TThreadSchedule


removing previous helper tasks

the recoverable semaphore from the TSupportSchedule should be used


Destroy removes
TUserlnterfaceSchedule is concrete subclass of
system
tasks that should be
TMonitorEntry is class that represents the lock some TThreadSchedule for those application

The con and handle the applications human interface


times called mutex associated with monitor 40 responsive
and then block until the
lock to be run for short time
structor for this class actually causes the monitor They typically

and the act of exiting the local scope which causes next interaction
acquired
the monitor lock to be class used with those threads
the destructor to be called causes TApplicationSchedule is

in the monitor the running parts Such


relinquished If another task is already that support an applications longer

will be blocked in the amounts of time When an


thread attempting to enter the monitor 45 threads run for appreciable

until the threads window activated the threads in the asso


TMonitorEntry constructor preceding application or is

new and that the threads become


leave the monitor This class includes operators ciated task become more urgent so

can only be
delete which are private so that TMonitorEntry more responsive
the thus automatic entry and class that allows
allocated on stack providing TpseudoRealTimeThreadSchedule is

monitor lock and release 50 fixed


exit and the associated acquire tasks to specify their relative urgency in the priority

with scope entry and exit class their level within its
range The task schedule
by setting
condition allowable and the
TMonitorCondition is class that represents exports the number of levels that are

that is associated with some monitor The major default base level If level is requested that would cause the
variable

and broadcast The wait opera the class an exception will be


operations are wait notify value to be outside range

wait for the condition to be includes the following methods


tion causes the current thread to thrown This class

and while the thread is blocked the monitor lock is


Set the level of the
notified SetLevel theLevel
PriorityLevels
broadcast are called by thread
relinquished Notify and task lower number is more urgent
inside the monitor to indicate that either one or all
executing Return the number of levels
RetumNumberOfLevels
threads on the condition should be unblocked
of the waiting
of for this scheduling object
thread exits the moni 60 urgency
when the notifying or broadcasting level of
Return the default
to ReturnDefaultLevel
tor When waiting thread is unblocked it attempts
for this scheduling object The default level is
time in the case of urgency
monitor lock thread at
reaquire the one
in relative to the scheduling classs most urgent priority
resumes executing the
broadcast at which point it

can be to limit
monitor An optional time-out value specified Fault Classes

Other than construc- 65


the time for condition
spent waiting
and 15 class diagrams 1202
of TMonitorConditiOn FIGS 12 13 14 present
tion and destruction all methods
and 1502 of fault classes 416 which
monitor 1220 1302 1402 the
must be called only from within the

uSPTO from the PIRS Image Database on 05/15/2008


Copy provided by
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 37 of 42

5519867
33 34

TMC68OXOCPUFau1tState which the 68K


are used to invoke the fault services of Mach For the classes encapsulates

fault TlPCldentity fault state available for all 68K states


that represent messages for example

FaultMessage TlPCldentityFaultMessage etc it is neces


Host and Processor Set Classes
sary to dedicate single port for each message type That is

the user should ensure that only one type of message will be
1602 machine classes
FIG 16 is class diagram for the
received on that is used for fault handling
any given port
herein the host and set
418 which are also called processor
Preferbly the fault classes 416 include processor-specific
classes The machine classes 418 are used to invoke the
set of classes for each processor 106 that the operating

fault classes 414 services related to Machs machine and multiprocessor


system 114 runs on Alternatively the may
include generally generic classes which apply to multiple support
10
The classes class that embodies
processors Motorola-68000-specific are pre TprivilegedHostHandle is concrete

sented herein for illustrative purposes and is not limiting the to the kernels host object The privileged
privileged port

Persons skilled in the relevant art wifi find it apparent to


host port is the root of Machs processor management The
classes for other
processor-specific processors holder of the host can access to any port
generate privileged port get

based on the teachings contained herein the The basic privilege mechanism provided by
on system
15
base class that represents fault of to tasks
TFault1pe is an abstract the kernel is restriction privileged operations

to the fault values the of the


It is subclassed provide processor-unique holding control ports Therefore integrity system
identifies the fault by and fault id The following on the close holding of this privileged host port
It processor depends
three classes are subclasses of TFaultType of this class can get boot information and host
Objects

fault on statistics reboot the system enumerate the privileged pro


lMC6SOXOFault1pe represents type 20
68K communicate with non-CE entities and enumer
Motorola 68K processor It identifies the possible type cessor sets

values and CPU descriptor


ate the processors

bad access THostHandie concrete class that


TMC68OXOBadAccessFaultType represents is non-privileged

68K processor embodies the name port to the kernels host object Objects
type on Motorola
host and return the
address 25 of this class can return some information
TMC68OXOAddressFault11pe represents an
default set of this class are useful to get
Objects
error type on Motorola 68K processor processor

information from the host such as kernel version maximum


class that encapsulates the desti
TFaultDesignation is
number of CPUs memory size CPU type etc but cannot
fault and the of faults
nation the format for message types
cause damage to the host Users should be provided
task or thread any
for which the message should be sent for
access to objects of this class rather than the highly privi
30
This class allows to specify on task or thread basis that
you
leged TPrivilegedHostHandle objects
the requested for the fault
the fault message of type specified

send TProcessorHandle is concrete class representing pro


should be sent to the indicated by the right
types port
cessor can be started exited added to
processor
TFault1peSet encapsulates set of fault types
return information and be
TPrivilegedProcessorSetllandle
TFaultData is class that fault data provided
encapsulates controls
sent implementation-dependent
Not all faults
the kernel in addition to the processor state
by class
TPrivilegedProcessorSetflandle is concrete pro
fault
have fault data The fault data is
provided in the
the for set control port Objects
viding protocol processor
message and is available from the thread state
and set
of this class can enable disable scheduling policies
is class that the fault
TlPCFaultMessage encapsulates the maximum priority for the processor set return statistics

the kernel on behalf of the thread that got 40


message sent by and information enumerate the tasks and threads and assign

the Fault It is used to receive and reply to the Fault Three to


threads and tasks to the set Client access
processor
subclasses below are provided for the three possible kinds
of this class should be highiy restricted to protect the
objects
The
of data that might be sent with the fault message individual and the processor set
processors
the identification of the faulting task
include
message may TProcessorSetHandle is concrete class providing the
of the thread or both sets of
and thread or the state faulting 45
for set name port Objects of this class
protocol processor
the
information TlPCldentityFaultMessage encapsulates
can return basic information about the processor set the
of the thread that got
Fault containing the identity
message of in the set etc but they
number processors processor
the Fault It is used to receive and reply to the Fault
cannot cause to the set
any damage processor
the Fault message
TlPCStateFaultMessage encapsulates

the thread state of the thread that got the Fault It


50
containing Implementation of Wrapper Methods
is used to receive and reply to the Fault TIPCStateAndI

encapsulates the Fault message con As noted above the Mach and the Mach procedural
dentityFaultMessage
state and of the thread that got the interface are well-known The wrapper class library 402 and
taining the thread identity

Fault It is used to receive and reply to the Fault the operation of the methods of the wrapper class library

been and above


flhreadState is an abstract class that represents the CPU ss 402 have defined described in detail

of the methods defined the class


Subclasses define the Implementation by vrapper
state of thread actually processor
described below selected
in the class All work library 402 is by considering
specific forms There is no information
for CPU state will methods from the wrapper class library 402 Persons skilled
is done in the derived classes All queries
will find it to the other
has to be cast in the relevant art apparent implement
return TMC68OXOState pointer which at

class 402 based on the


derived class Derived sub 60 methods of the wrapper library
runtime to the correct object
of the Mach the discussion above
classes to particular processors such as many of well-known specification
are specific
402 and the discussion
the subclasses shown in FIGS 12 13 14 and 15 which are regarding the wrapper class library

line of Such below the implementation of the wrapper meth


on the Motorola 68xxx processors regarding
dependent
method from the
include TMC68OXOState which is concrete ods The implementation of the kill
subclasses
flhreadHandle classes 404 is shown in
class that represents the 680x0 CPU state of thread Other 65 class of the thread

TMC68OXOCPUState which encapsu Code Example below routine called examplel is


include
examples
68K and shown Code Example below The examplel routine
lates the CPU state available for all states in

Copy provided by USPTO from the PIRS Image Database on 05/15/2008


Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 38 of 42

5519867
35 36

includes decomposition statement which causes the kill THROW TRY CATCH and ENDTRY are part of the

that allow to throw and catch C-i-i-


method to be executed C-i-i- language you

exceptions
The implementation of the GetLevel method from the

Copyright Inc 1993 class of the


Taligent TPseudoRealTimeThreadSchedule scheduling
void examplelTThreadHsasdlc aThread
classes 414 is shown in Code Example below routine

shown in Code Example below The


TRY called example3 is

routine includes statement


example3 decomposition
aThread
aThread.KillQ I/terminates isnmcdiatly
which causes the GetLevel method to be executed

10
CATClTKcrnclException

void example3TPseudoRealTimeThreadSchcdulc aSchedale


ptintfCCouldnt kill thcead\n
II error occored trying to kill

PsiorityLevels curPsiority

carPriority aschcdule.CletLevel

ENDTRY I/Get threads current priority


II
II

CODE EXAMPLE CODE EXAMPLE


void TThreadl-iandleKill TPseudoRealTimoThreadScheduleGetLnvel
PriorityLevela

kern_yeturn......t error
stroct task_thread_ached_info aehedlnfo
iferror
KERN_SUCCESS
20
ad sched info achcdlnfoPtr schedinfo
threail_terminstefmreadControlPort
mach_msg_type_nutuhcr_t returnedSize
II Error indicator
TF1ROWrKernelException retumcdSize tizenf tehedlnfo

void thread_info frhccadControlPort


CODE EXAMPLE THREAD_SCHED_INFO schedlnfoPtr

rctomcdSize
25 return achedlnfo.cur_prioiity
Where
fThreadControlPort an instance variable of the
is CODE EXAMPLE
flhreadHandle class that contains the Mach thread control

port for the thread the class represents Where


is the C-ii- exception class that is fthreadControlPort is an instance variable of the TPseu
TKernelException 30

thrown when kernel routine an error doRealTimeThreadSchedule class It contains the Mach
gets

THROW TRY CATCH and ENDTRY are part of the thread control port of the thread for which the class is

C-i-i- language that allow you to throw and catch schedule


The implementation of the GetKernelVersion method
exceptions
from the from the THostHandle class of the machine classes 418 is
The implementation of the suspend method

406 shown in Code shown in Code Example below routine called


TTaskHandle class of the task classes is

shown in Code Example below The


below routine called example2 is shown in example4 is
Example
statement
example4 routine includes decomposition
Code Example below The exarnple2 routine includes
which causes the GetKernelVersion method to he
decomposition statement which causes the suspend
40 executed
method to be executed

void cxamplc4THostHandle sHort


void example2TTaakHandle aTask

kernel_vecaion_t version
TRY
aHost.GctKernelVcrsion veraion
45
II get veraion of kernel currently mnning
all threads on task aTask
aTask$uspendQ II suspend
II

CATCnrKemelExceplion CODE EXAMPLE


void
threads\n II error occured
printfCouldnt suspend theVeraion
TlloatliandleGetKernctVeraion kernel_vcraion_t
50

ENDTRY void laost_kernel_vecaionfHostPnrt thaVeraion


II

CODE EXAMPLE
CODE EXAMPLE
void TraskEandleSospend
ss Where
kem_retum_t error
fHostPortis an instance variable of the THostHandleclass
iferror
that contains the Mach host control port for the host
the class
taak_suspendfraskControlPort KERN_SUCCESS
TuRowcrKernelException I/Error indicator
represents

The implementation of the letMakeSendCount method


CODE EXAMPLE class of the 1PC classes
60 from the TPortReceiveRightHandle
410 is shown in Code Example 10 below routine called

Where exampleS is shown in Code Example below The


instance variable of the statement
ITaskControlPort is an exampleS routine includes decomposition

flaskHandle class that contains the Mach thread control which causes the GetMakeSendCount method to be

for the task the class represents os executed As evident by its name GetMakesendCount
the
port

is the C-H- exception class that is method accesses the Mach to retrieve make send count
TKernelException
an with The GetMakeSendCount method
thrown when kernel routine gets errot associated port

Copy provided by USPTO from the PIRS Image Database on 05/15/2008


Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 39 of 42

5519867
38
37
to said
object-oriented class library corresponding
includes statement to call mach_porLget_attributes
statements and
call that object-oriented
which is Mach procedurally-Oriented system
class library including
In GetMakeSend means in said object-oriented
status information about port
returns said
thread classes for enabling object-
variable of the TPortRe object-oriented
ffheThsk an instance
CountO is
said services to spawn
control to access
contains the task port oriented application
that
ceiveRightllandle object of
to thread
instance and obtain information relating
task and ffhePortName is an control
of the associated

object that con execution


variable of the TPortReceiveRightHafldIe
said thread classes
the represented by the The of claim wherein
tains the port right name of port apparatus
class encapsulating infor
first object-oriented
TportReceiveRightflandle object comprise
of execution said
mation to create new thread
10 necessary
base class and second object-
first class being an abstract

exarnples
PortReceiveB4gbtHand1 aReceiveRight
said to spawn new
oriented class for enabling application

subclass of said
of execution on task by passing
thread
unsigned long count
and for
to an instance of said second class
count aReceiveRight.GetMakeS511dC0tO first class

said to terminate suspend resume and


15 enabling application
second class
thread of execution said
schedule an existing
CODE EXAMPLE run-time pro
instances said instances representing
long having
unsigned
entities in said computer
cessing
status info
snach_porLStfltuS_t theinfo II
port
The of claim wherein said object-oriented
Mach apparatus
returned by classes for
task
class library comprises object-oriented
II size of info 20
theSize
rnacang_iype_number_-t
access in an object-oriented
returned by said to
enabling application
control task said
ffhePortNanie said services to reference and
void InachporLget_attributestTheThsk manner
environment for at least one
MACH_PORF_RECEWE_STATUS task representing an execution
thelnfo theSize execution associated with said task
thread of
returntheTnfo.rnpS_mSc0un task classes
of claim wherein said
25 The apparatus
CODE EXAMPLE 10
_________ class encapsulating
first task object-oriented
comprise
said first task
to and of an existing task
invention will be obvious attributes operations
Variations on the present
discussion methods to enable run-time spe
based on the class including protected
skilled in the relevant art
persons said task class to spawn new tasks
the of the present cific subclasses of first

contained herein For example scope


task class
of of claim wherein said first

includes and method enabling 30 The apparatus


invention system deter
said to
in procedural manner an methods for enabling application
application to access comprises
procedural and resume
having native object mine whether possible task exists to suspend
object-oriented operating system
task to receive
run-time execution of the applica said task to terminate said existing
oriented interface during existing
inven said task to
This embodiment of the present information relating to existing
tion in computer predetermined
in the application execution contained in said existing task
tion preferably operates by locating 35 identify thread of
service by in
statement which accesses provided virtual memory operations
procedural and to performpredeterlflilled
the state task
and translating procedural associated with said existing
the operating system an address space
function call i.e method com of claim wherein said object-oriented
ment to an object-oriented The apparatus
native interface of the oper thread class for
patible with the object-oriented class library comprises an object-oriented
the procedural statement of execu
ating system and corresponding
to
said to create new thread
40 enabling application
executed in the computer
The object-oriented function call is
further comprising second object-
said task classes
the service tion
to provide for
to thereby cause the operating system derived from said first task class
oriented task class
embodiments of
While various
on behalf of the application to new run-time specific
should enabling said application spawn
invention have been described above it
the present thread of execution by passing an
of task having single
that have been presented by way
be understood they to an instance of said second
and instance of said thread class
limitation Thus the breadth 45
only and not
example
limited task class
the invention should not be by any
scope of present said
but should The of claim wherein object-oriented
embodiments apparatus
of the above-described exemplary
and synchronization
with the following claims class library comprises object-oriented
be defined only in accordance
said to access in an object-
classes for enabling application
their equivalents execution of
said services to synchronize
claimed is so oriented manner
What is

an applica thread of execution


An apparatus
for enabling object-oriented said
statements The of claim wherein said synchronization
said including object-oriented apparatus
tion application
operat for use in synchronizing
in manner procedural classes define counting semaphores
to access an object-oriented
said said
of said object-oriented statements execution of said thread of execution synchroni
by use the
ing system
functions said appli
for enabling
system providing services including procedural
55 zation classes comprising methods
that are called to access
saved as executable program logic cation to acquire one or more of said counting semaphores
said
said services said apparatus comprising
in an exclusive mode or in shared mode and to release

semaphores are
after said counting
computer counting semaphores

in said computer acquired


memory component
wherein said counting
The of claim
stored in said memory component 60 apparatus
code library
are recoverable
for storing said executable program semaphores
comprising means wherein said synchroniza
and means for 10 The of claim
class library apparatus
in an object-oriented
logic
said define monitor lock for use in synchronizing
said object-oriented application to pro tion classes
interfacing classes corn
of execution said synchronization
said executable pro- said thread
utilizing
cedural operating system and
said application to acquire
65 methods for enabling
prising
grain logic block on specified
release said monitor lock and to
for said object-
in said processing
means computer said applica
said condition once said monitor lock is acquired
executing methods from
oriented statements by

0511 51200U
USPTO from the PIRS Image Database on
Copy provided by
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 40 of 42

5519867
40
39
when said 22 The apparatus
of claim 21 wherein said fault classes

tion releasing said monitor lock application


class information
an object-oriented encapsulating
and after said application comprise
blocks on said specified condition and
destination port fault message format
said condition identifying
unblocked due to satisfaction of specified
is
said class comprising methods
fault types object-oriented
said reacquiring said monitor lock hefore resum-
application said to specify said destination port
for enabling application
ing execution and said fault and for
said fault message format types
11 The of claim 10 wherein said synchroni- to
apparatus to instruct said operating system
enabling said application
for said
zation classes further comprise methods enabling fault format to said
send messages in said specified message
broadcast on specified fault
application to perform operation destination port when said specified types
specified
said
blocking condition when said application has acquired
occur
all of said to classes
monitor lock said broadcast operation unblocking 23 The of claim 19 wherein said fault
apparatus
that are blocked on said specified class methods
threads of execution comprise first object-oriented comprising
state of said thread
blocking condition for obtaining and returning processing

of claim wherein said


12 The apparatus object-oriented of execution

class library comprises object-oriented scheduling classes 24 The apparatus of claim 23 wherein said fault classes

methods for
in an 15 second class having
said to access object-oriented comprise object-oriented
for enabling application
thread of to receive fault messages and to
schedule execution of said enabling said application
manner said services to

to received fault messages said fault messages


execution respond
sched- faulting task and said
13 The of claim 12 in which an actual comprising information identifying
apparatus
maximum thread of execution and/or inforina
default scheduling priority and faulting tasks faulting
uling priority
associated with said application said 20 tion of faulting thread of executions state said faulting
scheduling priority are
obtained calling said
one or more scheduling priori- thread of executions state being by
scheduling classes defining

class including methods for methods of said first class


ties said object-oriented library
an inter
setting each of said actual default and maximum schedul- 25 An apparatus for providing object-oriented

said to one of said scheduling face to procedural operating system said system providing
ing priorities of application
25 functions saved as executable
services including procedural
priorities
said services said
said scheduling that are called to access
14 The of claim 13 wherein program logic
apparatus
class an idle
classes comprise an object-oriented defining apparatus comprising
with said threads of
scheduling priority adapted for use computer

execution that execute when said computer is substantiaily


in said
memory component computer
30
idle
code library stored in said memory component
15 The apparatu of claim 13 wherein said scheduling
for said executable program
comprising means storing
class defining respon-
classes comprise an object-oriented class means for
in an object-oriented library
logic
sive scheduling priority adapted for use with highly respon- and said
to an object-oriented application
interfacing
threads of execution that execute for short time periods
sive object-oriented
class library defining
object-oriented
time periods 35
that block said short
and following said statements insertable into said appli
statements
of claim 13 wherein said scheduling
16 The apparatus cation to enable said application to access said services

an object-oriented class defining an inter-


classes comprise execution of said application in said
during run-time
for use with highly
action scheduling priority adapted
computer and
an interface
threads of execution implementing
responsive class including
in said library
and 40 means object-oriented
between human operator said computer
for said appli
thread classes enabling
wherein said scheduling object-oriented
17 The of claim 13
apparatus
cation to access in an object-oriented manner operating
class defining long-
classes comprise an object-oriented
services to control and obtain informa
for use with threads of system spawn
term scheduling priority adapted
tion relating to thread of execution
that execute for long periods of time
execution said
26 The of claim 25 wherein object-
wherein apparatus
18 The of claim 13 said scheduling
apparatus task classes
oriented class library comprises object-oriented
for task to specify
classes comprise methods enabling
for enabling said to access in an object-oriented
task application
of said
relative scheduling urgency said
said services to reference and control task
of claim wherein said manner
19 The apparatus
object-oriented
least one
task an execution environment for at
fault classes for representing
class library comprises object-oriented
thread of execution associated with said task
in so
said application to access an object-oriented
enabling said
27 The of claim 26 wherein object-
and user-defined apparatus
said services to system
manner process
oriented class library comprises object-oriented synchroni
faults
processor in an
for said application to access
fault classes zation classes enabling
20 The of claim 19 wherein said
apparatus
said services to synchronize execu
fault object-oriented manner
first class defining generic
comprise object-oriented
ss lion of threads of execution
virtual methods for setting processor
said first class having
wherein said
28 The apparatus of claim 27 object-
and fault computer program logic
computer program logic scheduling
oriented class library comprises object-oriented
said first class
said generic fault repre-
to thereby identify in
classei for enabling said application to access an object-
an abstract base class
senting execution of said
oriented manner said services to schedule
wherein fault classes
21 The apparatus
of claim 20 said

derived from said 60 thread of execution


second class
comprise object-oriented
non-virtual methods 29 The apparatus of claim 28 wherein said object-
first object-oriented class comprising
fault
said oriented class library comprises object-oriented
logic and
for setting said processor computer program
said to access in an object-
with informa- classes for enabling application
in accordance
fault computer program logic
said services to system and user-
oriented manner process
lion to particular fault of particular processor
specific
65 defined faults
class processor-specific processor
such that said second represents inter-

methods of said second class over- 30 An apparatus


for providing an object-oriented
said non-virtual
fault
class face to procedural operating system said system providing
virtual methods of said first
riding said

Copy provided by USPTO from the PIRS Image Database on 0511512008


Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 41 of 42

5519867
41 42

functions saved as executable enabling said application to spawn new run-time specific
services including procedural
said task single thread of execution by passing an
logic that are called to access said services having
program
instance of said thread class to an instance of said second
apparatus comprising
task class
computer inter
36 An apparatus for providing an object-oriented
in said computer and
memory component said providing
face to procedural operating system system
code library stored in said memory component services including procedural functions saved as executable

for said executable


comprising means storing program logic that are called to access said services said
program
class means for
logic in an object-oriented library comprising
apparatus
to an object-oriented application and said
interfacing
10 computer
class library comprising object-ori-
object-oriented
in said computer and
said thread classes memory component
ented thread classes comprising
said services run-time code library stored in said memory component
methods for accessing during
said executable
execution of said application in said computer said comprising means for storing program
class means for
thread classes statements said statements logic in an object-oriented library
having
15
to an application and said
insertable into said application to enable said applica- interfacing object-oriented

and class library comprising object-ori


control object-oriented
tion to access said services to spawn
ented classes said synchronization
obtain information relating to threads of execution synchronization
said services
31 The of claim 30 wherein said thread classes classes comprising methods for accessing
apparatus
of said in said
first class infor during run-time execution application
comprise object-oriented encapsulating
20
said classes having state
mation necessary to create new thread of execution said computer synchronization

into said
class an abstract base class and second object- ments said statements insertable application
first being
said services to
oriented class for enabling said application to spawn new to enable said application to access

subclass of said synchronize execution of threads of execution


thread of execution on task by passing

first class to an instance of said second class and for 37 The apparatus of claim 36 wherein said synchroni
25
to resume and zation classes define counting semaphores for use in syn
enabling said application terminate suspend
the execution of said thread of execution said
of execution said second class chronizing
schedule an existing thread

run-time synchronization classes comprising methods for enabling


having instances said instances representing pro
said application to acquire one or more of said counting
entities in said computer
cessing

32 An for an object-oriented inter semaphores in an exclusive mode or in shared mode and


apparatus providing
30
said after said counting
face said providing to release counting semaphores
to procedural operating system system
functions saved as executable semaphores are acquired
services including procedural

that are called to access said services said 38 The apparatus of claim 37 wherein said counting
program logic

semaphores are recoverable


apparatus comprising
39 The apparatus of claim 37 wherein said synchroni
computer
classes define monitor lock for use in synchronizing
zation
in said and
memory component computer
said thread of execution said synchronization classes com
code library stored in said memory component methods for enabling said to acquire and
prising application
for storing said executable
comprising means program release said monitor lock and to block on specified

in an class library means for said


logic object-oriented condition once said monitor lock is acquired applica
to an object-oriented application and said 40 when said
interfacing ion releasing said monitor lock application

object-oriented class library comprising object-ori blocks on said specified condition and after said application

ented task said task classes comprising meth


classes is unblocked due to satisfaction of said specified condition

ods for accessing said services during run-time execu said monitor lock before resum
said application reacquiring
in said said task
tion of said application computer execution
ing
said statements insertable
classes having statements 40 The of claim 39 wherein said synchroni
apparatus
into said to enable said application to nccess said
application zation classes further comprise methods for enabling

services to reference and control task said task


said application to perform broadcast operation on specified

an execution environment for at least one has said


representing blocking condition when said application acquired

thread of execution associated with said task monitor lock said broadcast unblocking all of said
operation

33 Th apparatus of claim 32 wherein said task classes


threads of execution that are blocked on said specified

class encapsulating
comprise first object-oriented blocking condition
of an task said first class
attributes and operations existing 41 An apparatus for providing an object-oriented inter

method to enable run-time specific sub said


including protected face to procedural operating system system providing
classes of said first class to spawn new tasks services functions saved as executable
including procedural

34 The apparatus of claim 33 wherein said first class


program logic that are called to access said services said

methods for said application to deter


comprises enabling apparatus comprising
mine whether task exists to suspend and resume
possible
computer
to terminate said existing task to receive
said existing task
in said computer and
to said task to memory component
information relating existing
predetermined
contained in said existing task 60 code library stored in said memory component
identify thread of execution
for storing said executable
and virtual memory operations in comprising means program
to perform predetermined
in class means for
associated with said existing task logic an object-oriented library
an address space
an and said
35 The apparatus of claim 34 wherein the object-ori interfacing to object-oriented application

an thread class object-oriented class library comprising object-ori


ented class library comprises object-oriented

said to create new thread of 65 ented scheduling classes said scheduling classes com
for enabling application
second prising methods for accessing said services during
execution and said task classes further comprising
from said class for run-time execution of said application in said computer
object-oriented task class derived first

USPTO from the PIRS Image batabase on 05/15/2008


Copy provided by
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 42 of 42

5519867
43 44
said scheduling classes having statements said state ods for accessing said services during run-time execu

ments insertable into said to enable said tion of said in said said fault
application application computer
application to access said services classes said statements insertable
having statements
42 The apparatus of claim 41 in which an actual sched into said application to enable said application to access

uling priority default scheduling priority and maximum said services user-defined
to process system and pro
are associated with said said
scheduling priority application cessor faults

classes one or more


scheduling defining scheduling priori 49 The apparatus of claim 48 wherein said fault classes

ties said object-oriented class library including methods for


comprise first object-oriented class defining generic fault
setting each of said actual default and maximum schedul
said first class virtuai methods for setting
having processor
of said to one of said 10
ing priorities application scheduling
computer program logic and fault computer program logic
priorities
to thereby said fault said class
identify generic first repre
43 The apparatus of claim 42 wherein said scheduling
senting an abstract base class
classes an class an idle
comprise object-oriented defining
50 The apparatus of claim 49 wherein said fault classes
scheduling priority adapted for use with said threads of
comprise second object-oriented class derived from said
execution that execute when said computer is
substantiaily
first
object-oriented class comprising non-virtual methods
idte
for setting said processor computer program logic and said
44 The apparatus of claim 43 wherein said scheduling
fault computer program logic in accordance with informa
classes comprise an object-oriented class defining respon
tion to fault of
specific particular particular processor
sive scheduling priority adapted for use with highly respon
such that said second class represents processor-specific
sive threads of execution that execute for short time periods 20
fault said non-virtual methods of said second class override
and that block following said short time periods
said virtual methods of said first class
45 The apparatus of claim 44 wherein said scheduling
51 The apparatus of claim 49 wherein said fault classes
classes an class an inter
comprise object-oriented defining
an class information
comprise object-oriented encapsulating
action scheduling priority adapted for use with highly
identifying destination port fault message format and
responsive threads of execution implementing an interface
fault types said object-oriented class comprising methods
between human operator and said computer
for enabling said to specify said destination
application port
46 The apparatus of claim 44 wherein said scheduling
said fault message format and said fault types and for
classes comprise an object-oriented class defining long-
enabling said application to instruct said operating system to
term for use with threads of
scheduling priority adapted
send messages in said specified fault message format to the
execution that execute for long periods of time 30
specified destination port when said specified fault types
47 Amended The apparatus of claim 44 wherein said
occur
classes methods for enabling task to
scheduling comprise
52 The apparatus of claim 49 wherein said fault classes
specify relative scheduling urgency of said task
comprise first
object-oriented class comprising methods
48 An apparatus for providing an object-oriented inter
for obtaining and returning processing state of said thread
face to procedural operating system said system providing
of execution
services including procedural functions saved as executable
53 The apparatus of claim 52 wherein said fault classes
logic that are cailed to access said services said
program
comprise second object-oriented class having methods for
apparatus comprising
enabling said application to receive fault messages and to

computer fault fault


respond to received messages said messages
40
memory component in said computer and information task and said
comprising identifying faulting

code library stored in said memory component faulting tasks faulting thread of execution and/or informa

comprising means for storing said executable program tion of faulting thread of executions state said faulting

logic in an object-oriented class library means for thread of executionstate being obtained by cailing said

interfacing to an object-oriented application and said methods of said first class

object-oriented class library comprising object-ori

ented fault classes said fault classes comprising meth

Copy provided by USPTO from the PIRS Image Databasin 05115/2008


Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 1 of 44

EXHIBIT B
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 2 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 3 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 4 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 5 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 6 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 7 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 8 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 9 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 10 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 11 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 12 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 13 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 14 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 15 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 16 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 17 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 18 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 19 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 20 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 21 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 22 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 23 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 24 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 25 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 26 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 27 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 28 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 29 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 30 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 31 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 32 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 33 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 34 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 35 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 36 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 37 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 38 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 39 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 40 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 41 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 42 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 43 of 44
Case 1:10-cv-00166-UNA Document 1-2 Filed 03/02/10 Page 44 of 44
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 1 of 93

EXHIBIT C
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 2 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 3 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 4 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 5 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 6 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 7 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 8 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 9 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 10 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 11 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 12 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 13 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 14 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 15 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 16 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 17 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 18 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 19 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 20 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 21 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 22 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 23 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 24 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 25 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 26 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 27 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 28 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 29 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 30 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 31 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 32 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 33 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 34 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 35 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 36 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 37 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 38 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 39 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 40 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 41 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 42 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 43 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 44 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 45 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 46 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 47 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 48 of 93

EXHIBIT D
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 49 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 50 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 51 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 52 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 53 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 54 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 55 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 56 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 57 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 58 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 59 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 60 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 61 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 62 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 63 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 64 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 65 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 66 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 67 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 68 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 69 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 70 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 71 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 72 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 73 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 74 of 93

EXHIBIT E
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 75 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 76 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 77 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 78 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 79 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 80 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 81 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 82 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 83 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 84 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 85 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 86 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 87 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 88 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 89 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 90 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 91 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 92 of 93
Case 1:10-cv-00166-UNA Document 1-3 Filed 03/02/10 Page 93 of 93

Вам также может понравиться