Professional Documents
Culture Documents
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
of the
By Authority
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
SYSTEM
OTHER PUBLICATIONS
Field of Search 395/650 700 system having native procedural interface is disclosed The
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
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
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
132
102
130A 13DB k.- 134
114
0-
28-J WRAPPER1 F1
129
OPERATING SYSTEM
116
DEVICE DRIVERS
Cl
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
MEDIUM
ICODE FIGURE
LIBRARY
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 5 of 42
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
3\
304
METHOD CODE IN
TASK ADDRESS
SPACE
312
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
CODE
LIBRARY
THREAD CLASSES -404 110
VIRTUAL MEMORY
CLASSES
MACHINE CLASSES
j418
FIGURE
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
1202
1205
1210
1212
1218
1220
1230
KraiipossiTh
68KfyJ
1226 1228
Figure 12
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
iz
CD
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
CD
Cn
1704
label
-I
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
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
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
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
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
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 the of the objects must exhibit behavior which is similar and which one would
may change only through operation
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
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
5519867
to communicate with other processes or to schedule the virtual memory classes for enabling an application to
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
maintainability and reusability advantages associated with in an object-oriented manner operating system services to
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
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-
of the invention
present
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
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
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
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
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
hard 126 the procedural operating system 114 during run-time execu
disk or floppy disk display 124 and printer
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
5519867
11 12
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
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
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
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
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
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
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
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
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
known as an external or pager is Threads use to communicate with each other port
memory manager pager ports
handle for the data of the 65 the proper to do so These permissions are
job is to certain requests memory permissions
in region the kernel logically fills the pages besides port rights include limit on the number of mes
pages given
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
it has send right to that port Likewise it can remove notification when one of its rights becomes dead The kernel
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
by allocating receive right and port is destroyed only more senders notification The request must include send
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
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
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
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
term of obvious name This space via virtual memory mechanism The
port name instead the port right copy-on-right
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
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
5519867
18
17
thread is unblocked and then
Transmission Semantics condition is true waiting
Message
execution thread
the lock before continuing
re-acquires
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
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
which relatively more disciplined and e.g f-line co-processor violation etc.
nism implements dependent
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
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
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
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
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
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
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
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
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
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
TMemorySur cation
AilocateMemory size_t howManyBytes
allocates range of anonymous vir-
rogate newRange 20
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
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
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
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
Classes
memory attributes of any memory region
defines all the Message
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
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
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
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
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
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
Message receiveMsg const TTime timeoutkPosi destination port and receive port be specified Additionally
avoid
Message is received into new message object to and passes it along as the reply port
overwrite concrete class that derives
TlPCPrimitiveMessage is
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
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
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
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
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
also two methods for Setters and methods for requesting notifications Must
TlPCMessageStream provides
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
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
is not necessarily tied to creation and deletion of TPor HG 10 is class diagram 1002 of the synchronization
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
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
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
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
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
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
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
can be to limit
monitor An optional time-out value specified Fault Classes
5519867
33 34
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
sented herein for illustrative purposes and is not limiting the to the kernels host object The privileged
privileged port
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
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
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
5519867
35 36
includes decomposition statement which causes the kill THROW TRY CATCH and ENDTRY are part of the
exceptions
The implementation of the GetLevel method from the
10
CATClTKcrnclException
PsiorityLevels curPsiority
carPriority aschcdule.CletLevel
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
rctomcdSize
25 return achedlnfo.cur_prioiity
Where
fThreadControlPort an instance variable of the
is CODE EXAMPLE
flhreadHandle class that contains the Mach thread control
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
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
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
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
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
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
semaphores are
after said counting
computer counting semaphores
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
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
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
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
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
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
that are called to access said services said 38 The apparatus of claim 37 wherein said counting
program logic
object-oriented class library comprising object-ori blocks on said specified condition and after said application
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
thread of execution associated with said task monitor lock said broadcast unblocking all of said
operation
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
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
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
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
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