Apple HTC patent lawsuit : Exhibits A - E

download Apple HTC patent lawsuit : Exhibits A - E

of 179

Transcript of Apple HTC patent lawsuit : Exhibits A - E

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    1/179

    EXHIBIT A

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

    http://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BD
  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    2/179

    1700602

    __ MLUNITED STATES DEPARTMENT OF COMMERCE

    United States Patentand

    TrademarkOffice

    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

    By Authority of the

    Under Secretary of Commerce for Intellectual Property

    and Director of the United States lemark Office

    Offi

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

    http://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BD
  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    3/179

    OBJECT-ORIENTED MULTITASKING

    SYSTEM

    Inventors Christopher Moeller Los Altos

    Eugenic Bolton Sunnyvale Daniel

    Cheraikoff Palo Alto Russell

    Nakano Sunnyvale all of Calif

    Assignee Taligent Inc Cupertino Calif

    Notice The tenn of this patent shall not extend

    beyond the expiration date of Pat No

    5379432

    Appl No 94673

    Filed Jul 19 1993

    list Cl.6 GO6F 9/40

    U.S Cl 395700

    Field of Search 395/650 700

    References Cited

    4821220 4/1989 Duisberg 364/578

    4885717 12/1989 Beck et al 364/900

    4891630 1/1990 Friedman et al 340/706

    4953080 8/1990 Dysart et al 364/200

    5041992 8/1991 Cunningham et al 364/518

    5050090 9/1991 Golub et al 364/478

    5060.276 10/1991 Morris et al 382/8

    5075848 12/1992 Lai et al 3951425

    5093.914 3/1992 Coplien et al 395/700

    5119475 6/1992 Smith et al 395/156

    5125091 6/1992 Staas Jr et al 395/650

    5133075 7/1992 Risch 395/800

    5136705 8 /1 99 2 S tu hh s et al 395/575

    5151987 9/1992 Abraham et al 395/575

    5181162 1/1993 Smith et al 364/419

    5379432 1/1995 Orton et al 395/700

    5404529 4/1 995 Chernihoff et al 395/700

    OTHER PUBLICATIONS

    Proc of the Summer 1988 Usenix Conf 20 Jun 1988 San

    Francisco US pp 113 Using the Toolkit or How to

    Write Widget by McCormack et al

    New Directions for Unix Proc Autumn 1988 EUUG Conf

    Oct 1988 Cascais Portugal pp 2537 Berna

    beuAuban et al CloudsA Distributed ObjectBased

    Operating System Architecture and Kernel Implementa

    tion

    Primary ExaminerAlvin Oberley

    Assistant ExaminerJohn Chavis

    Attorney Agent or FirmKeith Stephens

    ABSTRACT

    Anapparatus

    forenabling an object-oriented application to

    access in an object-oriented manner procedural operating

    system having native procedural interface is disclosed The

    apparatusincludes computer and memory component in

    the computer code library is stored in the memory

    component The code library includes computer program

    logic implementing an object-oriented class library The

    object-oriented class library comprises related object-ori

    ented classes for enabling the application to access in an

    object-oriented manner services provided by the operating

    system The object-oriented classes include methods for

    accessingthe

    operating system services using procedural

    function calls compatible with the native procedural inter

    face of the operating system The computer processes

    object-oriented statements contained in the application and

    defined by the class library by executing methods from the

    class library corresponding to the object-oriented state

    ments The object-oriented application includes support for

    multi-tasking

    53 Claims 17 Drawing Sheets

    United States Patent

    Moeller et al

    1 11 11 1 11 11 11 1 III 1 11 11 1 11 11 11111 10111111 1 11 11 1 11 11 1 11 11 11 11 11 III 11111 liii

    USOO5S 19867A

    Patent Number 5519867

    Date of Patent May 21 1996

    U.S PATENT DOCUMENTS

    CODE

    LIBRARY

    110

    CLAss

    UBRARY

    402

    ThREAD cLAssEsj_.A04

    TA5KCLA55E5

    VIRTUAL MEMORY

    CLASSEs.40E

    pc cLAssEsk410

    sYNCHRONIZATION

    k412CLAsSEs

    SCHEDUUNS

    f4I4CLASsES

    FAULT CLASSESk4b6

    MACHINE CLASSES

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    4/179

    130A

    0-

    13213DB

    129

    28-J WRAPPER1

    F1

    k.- 134

    114

    104

    116

    102

    -112

    03

    OPERATING SYSTEM DEVICE DRIVERS

    MICROiNSTRUCTION CODE

    j106RAM 108

    CODE__11ib0LIBRARY

    /118

    INPUT

    DEVICE

    120 124126

    TI ___DATA

    DISPLAY

    IPRINTERSTORAGE

    DATA STORAGE 122

    MEDIUM

    ICODELIBRARY

    FIGURE

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    5/179

    U.S Patent May 21 1996 Sheet of 17 5519867

    LOCATE IN PROGRAMOBJECT-OR ENTEDSTATEMENT ACCESSINGOPERATING SYSTEM

    EXECUTE PROCEDURALFUNCTION CALL

    206

    208

    __ 210

    202

    START 204

    TRANSLATE OBJECTORI ENTED STATEM ENT

    TO PROCEDURAL

    FUNCTION CALLCOMPATIBLE WITH

    PROCEDURAL INTERFACEOF OPERATING SYSTEM

    DONE 212

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    6/179

    U.S Patent May 21 1996 Sheet of 17 5519867

    3\

    304

    METHOD CODE IN

    TASK ADDRESSSPACE

    312

    ACCESS LIBRARY SERVERAND COPY METHOD CODEFROM CODE LIBRARY TO

    TASK ADDRESS SPACE

    316

    318

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    7/179

    U.S Patent May 21 1996 Sheet of 17 5519867

    SYNCH RON IZATION

    CLASSES

    MACHINE CLASSES

    ..A06

    ..%/41

    j418

    -.420

    CLASS

    LIBRARY

    402

    THREAD CLASSES -404

    CODE

    LIBRARY

    110

    TASK CLASSES

    VIRTUAL MEMORY

    CLASSES

    IPC CLASSES

    12SCHEDULING

    CLASSES

    FAULT CLASSES

    SECURITY CLASSES

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    8/179

    512

    518

    Figure

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    9/179

    601

    disposition

    start address

    length

    Figure

    TlaskHandle

    622

    TMemoryObject

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    10/179

    702

    712

    Figure

    710

    714

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    11/179

    Figure

    802

    start address

    length

    disposition

    TMemorySu rrogate

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    12/179

    Figure

    Handle Handle

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    13/179

    1002

    1004

    Figure10

    1006 1008

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    14/179

    1102

    11

    1104

    118

    1110

    1116

    1114

    Figure 11

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    15/179

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

    Figure 12

    1202

    1205

    1210

    1212

    1220

    1218

    1230

    KraiipossiTh

    68KfyJ

    1226 1228

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    16/179

    1302

    1304

    1326

    1310

    1312

    1324

    1314

    Figure 13

    1316

    1318

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    17/179

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

    iz

    CD

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    18/179

    1502

    1506

    1504

    1508

    T386ThreadState_...-i

    532

    1512

    1514

    1524

    1516

    1526

    1528

    1518

    FIGURE 15

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    19/179

    1614

    Figure 16

    1602

    1604

    1608

    1618

    1612

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    20/179

    1702label

    1704

    --

    label

    label

    Figure17

    uses for interface

    uses for implementation

    inherits compatible type

    1710

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    21/179

    5519867

    OBJECT-ORIENTED MULTiTASKINGThe fact that objects are encapsulated produces another

    SYSTEM important fringebenefit that is sometimes referred to as data

    a bstr action Abstr action is theprocess by which complex

    portion of the disclosure of this patent application

    ideas and s tr uc tu re s a re made more understandable by the

    contains material which is subject to copyright protectionremoval of detail and the generalization of their behavior

    From software perspective abstraction is in many ways the

    The copyright owner has no objection to the facsimileantithesis of hard-coding Consider software wmdowmg

    reproduction by anyone of the patent disclosure as itexample if every detail

    of every window that appears on

    appears in the Patent and TrademarkOffice

    patentfiles or

    users screen in graphical user interface GUI-based

    records but otherwise reserves all copyright nghts whatso-program had to

    have all of its state and behavior hard-coded

    everinto program then both the program and the windows i

    Field Of The Invention contains would lose almost all of their flexibility By

    Thepresent

    invention relates generally to object-oriented abstracting the concept of window into window object

    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

    p ro ce du ra l o pe ra ting system uniqueBehavior shared by all windows such as the ability

    Background Of the Invention tobe dragged and moved can be shared by all window

    Object-oriented technology OOT which generally objectsincludes o bject- or ie nted a na lysis OOA object-oriented This leads to a no th er b asic component of OOT which isdesign COD and object-oriented programming OOP is 20 the cla ss class includes set of data attributes plus seearning its place as one of the most important new tech- of allowable operations that is methods on

    t he d at a

    nologies in software development COT has already begun attributes Each object is an instance of some class As

    to prove its ability to create significant increasesin

    pro-natural outgrowth of encapsulation and abstraction OO

    granimer productivity and in program maintainability By supportsinheritance class called subclass may b

    engendering an environment in which data and the proce- 25 derived from a no th er cla ss calledbase class parent

    dures that operate on t he d at a a re combined into packages class etcwherein the subclass inherits the d ata attributes

    called objects and by adopting r ule tha t demands that and methods ofthe base class The subclass may specialize

    objects communicate with one another only through well- the base class by adding code which overridest he d at a

    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 a bs tr ac ti on s a re made increasingly

    some of the more imp or ta nt a sp ects of OOT More detailed concrete as s ub cl as se s a re created for greater levels o

    discussions of COT are available in many publicly available specialization Inheritance is primary con tr ib utor to the

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

    cations by Grady Beech Benjamin/Cummings Publishing 35 ancemakes it possible for developers to minimize the

    Company 1991 and Object-Oriented Requirements Analy-amount of new code they have t o w ri te t o create applica

    sis and Logical Design by Donald Firesmith John Wileytions By providing significant portion of the functionality

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

    object An object includes and is characterized by set of h ie ra rc hy gi ve the programmer head start to program

    data also called attributes and set of operations called 40 designand creation One

    potentialdrawback to an object

    methods that can operate on the data Generally an objects orientedenvironment lies in the

    proliferationof objects tha

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

    methods like to use as single message name to describe Consider

    method in an object is invoked by passing message for example an o bject- or ie nted g ra ph icalenvironment if

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

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

    When the object receives the message code associated with Triangle object on the o th er hand responds by drawing

    the named method is executed with the formal parameters of shape with three sides Ideally the object thatsends th

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

    object

    ment list Metho ds a nd message passing in COT are analo- so to which the message is addressed or of how that objecttha

    gous to procedures and procedure calls in procedure-on-r ec ei ve s t he message will draw itself in response

    If th

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

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

    operateto modify the internal state of the associated objects the code sending the Draw message completely unchanged

    by modifying the data contained therein The combination ss In conventional procedure-oriented languages such

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

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

    fact tha t the sta te of any object can onlybe

    changed bywith

    impunityAs one

    consequencemethods can be written

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

    behavior of an object is confined tosuch well-defined 60

    requiringthe sending object to have any knowledge at

    a

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    22/179

    to communicate with other processes or to schedule the

    execution of process

    Most conventional operating systems are procedure-

    oriented and include native procedural interfaces Conse

    quentty the services provided by these operating systems

    can only be accessed by using the procedures defined by

    theftrespective procedural interfaces

    If program needs to

    access service provided by one of these procedural oper

    at.ing systems t he n t he program must include statement to

    make theappropriate operating system procedure call This to

    is the case whether the software program is object-oriented

    procedure-oriented rule based etc Thus conventional

    operating systems provide procedure-oriented environments

    in which to develop and execute software Some of the

    advantages of OOT are lost when an object-oriented pro

    gram is developed and executed in procedure-oriented

    environment This is true since all accesses to the proce

    duraloperating system must

    beimplemented using proce

    dure calls defined by the operating systems native proce

    dural interface Consequently some of the modularity

    maintainabilityand

    reusability advantages associated with

    object-oriented programs are lost since it is not possible to

    utilize classes objectsand other OOT features to their

    fullest extent possible

    One solutio n to this problem is to develop object-ori

    entedoperating systems having native object-oriented inter

    faces While thisultimately may be the best solution it

    currentlyis not practical solution

    s in ce t he resources

    required to modify all of the major procedural operating

    systems would be enormous Also such modification of 30

    theseprocedural operating systems would render useless

    thousands of procedure-oriented software programs There

    fore what is needed is mechanism for enabling an object-

    oriented application to interact in an object-oriented manner

    with procedural operating system having native proce- 35

    dural interface

    SUMMARY OF THE INVENTION

    Thepresent

    invention is directed to system and method40

    of enabling an object- or iented application to access in an

    object-oriented manner procedural operating system hav

    ing native procedural interface The system includes

    computer and memory component in the computer code

    library is stored in the memory component The code library

    includes computer program logic implementing an object-

    oriented classlibrary

    Theobject-oriented

    classlibrary com

    prises related object-orientedclasses for

    enablingthe appli

    cation to access in an object-oriented manner services

    provided by the operating system The object-oriented

    classes include methods for accessing the operating system

    services using procedural function calls compatible w it h t he

    native procedural inter fa ce o f the operating system The

    system also includes means for processing object-oriented

    statements contained in the application and defined by the

    class library by executing methods from the class library

    corresponding to the object-oriented statements

    Preferably the class library includes

    thread classes for enabling an application to access in 60

    an object-oriented manner operating system services to

    virtual memory classes for enabling an application

    access in an object-oriented manner operating system se

    vices to access and manipulate virtual memory in com

    puter

    interprocess communication IPC classes fo

    enabling an application to access in an object-oriented

    manner operating system services to communicate wi

    other threads during run-time execution of the application

    computer

    synchronixation classes for enabling an application

    access in an object-oriented manner operating system se

    vices to synchronize execution of threads

    scheduling classes for enabling an application

    access in an object-oriented manner operating system se

    vices to schedule execution of threads

    fault classes for enabling an application to access in a

    object-oriented manner operating system services to process

    system and user-defined processor faults and

    20 machine classes for enabling an application to access

    in an object-oriented manner operating system services

    define and modify host and processor sets

    Further features and advantages of the present inventio

    as well as the structure and operation of various embod25

    ments of the present invention are described in detail below

    with reference to the accompanying drawings and in th

    claims In the drawings identical reference numbers indicate

    ide ntical o r functionally similar elements

    BRIEF DESCRIPTEON OF THE DRAWINGS

    The present inventionwill

    be described with reference

    the accompanying drawings wherein

    HG illustrates block diagram of computer platformin which wrapper of the present invention operates

    HG is high-level f lo w c ha rt illustrating the operationof the

    present invention

    FIG is more detailed flowchart illustrating the opera

    tion of thepresent invention

    HG is block diagram of code library containing a

    object-oriented class libraryof the

    present invention

    FIG is class diagram of thread and task classes of th

    present invention

    HG is class diagram of virtual memory classes of th

    present invention

    HGS 79 are class diagrams of interprocess communi

    cation classes of thepresent invention

    HG 10 is class diagram of synchronization classesthe present invention

    HG 11 is class diagram of scheduling classes of th

    present invention

    FIGS 12is are class diagrams of fault classes of th

    present invention

    HG 16 is class diagram of host and processor s

    machine classes of the present invention and

    HG 17 illustrates well-known icons for representingclass relationships and cardinality in class diagrams

    DETAILED DESCRIPTION OF THE

    5519867

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    23/179

    present invention emulates an object-oriented software envi

    ronment on computer platform having procedural oper

    ating system More particularly the present invention is

    directed to system and method of enabling an object-

    oriented application to access in an object-oriented manner

    p ro ce du ra l o pe ra ting system having native procedural

    interface duringrun-time execution of the application in

    computer The present invention is preferably partof the

    run-time environment of the computer in which the appli

    cation executes In this patent application the present inven

    tion is sometimes called an object-oriented wrapper since it

    operatesto wrap p ro ce du ra l o pe ra ting system

    with an

    object-oriented software layer such that an object-oriented

    application can access the operating system in an object-

    oriented manner

    FIG illustrates block diagram of computer platform

    102 in which wrapper 128 129 of the present invention

    operates It should be noted that the present invention

    alternatively encompasses the wrapper 128 129in combi

    n at io n w it h t he computer platform102 The computer plat

    form 102 includes hardware components 103 such as20

    random access memory RAM 108 and central processingunit CPU 106 It should be noted that the CPU 106 may

    represent single processor but preferably represents mul

    tiple processors operatingin

    parallelThe computer platform

    102 also includes peripheral devices which are connected to

    the hardware components 103 These peripheral devices

    include an input device or devices such as keyboard

    mouse light pen etc data storage device 120 such as

    hard disk or floppy disk display 124 and printer126

    The datastorage

    device 120 may interact with removable 30

    datastorage

    medium 122 such as removable hard disk

    magnetic tape cartridge or floppy disk depending onthe

    type of data storage device used The computer platform 102

    also includes p ro ce du ra l o pe ra ting system 114 having

    nativeprocedural

    interface not shown The procedural

    interface includes procedural functionswhich are called to

    access services provided by the operating system 102

    The computer platform 102 further includes device driv

    ers 116 and may include microinstructionc ode 112 also

    called firmware As indicated in FIG in performing their 40

    required f un ct io ns t he d ev ic e drivers116 may interact with

    the operating system 114 Application programs 130 132

    134 described further below preferably interact with the

    device drivers 116 v ia t he operating system 114 but may

    alternativelyinteract directly with the device drivers 116 It 45

    should be noted that theoperating system 114 may represent

    substantiallyfull-function

    operating system such as the

    Disk Operating System DOS and the UNIX operating

    system However the operating system 114 may represent

    other typesof

    operating systems For purposes of the present

    invention the only requirement is that the operating system

    114 be p ro ce du ra l o pe ra ting system having native

    procedural interface Preferably the operating system 114

    representslimited functionality p ro ce du ra l o pe ra ting sys

    tem such as the Mach micro-kernel developed by CMIJ

    which is well-known to those skilled in the relevant art For

    illustrative purposes onlythe

    presentinvention shall be

    d escr ib ed h er ein with reference tothe Mach micro-kernel In

    preferred embodiment of the present invention the com

    p uter p la tfor m102 is an International Business Machines

    theapplication programs 130 132

    134 are adapted t

    execute in different operating environments For exampl

    theapplication programs 130A and 130B may be adapted t

    operate in an object-oriented environment The application

    program 132 may be adapted to operate in Microsof

    Windows environment an IBM PSI2 environment or Unix

    environment As will be appreciated by those skilled in th

    relevant artthe

    application programs 130A 130B and 13

    cannot interact directly with the operating system 114 unless

    theoperating system 114 implements an environment i

    which the application programs 130A 130B and 132 ar

    adapted to operate For example if the application 132

    adapted to operate in the iBM PSI2 environment then th

    application 132 cannot directly interact with the operating

    system 114 u nless the operating system 114 is the IBM PS/2

    operating system or compatible If the application pro

    grams 130A and 130B are adapted to operate in an object

    oriented environment t he n t he applications 130A 130B

    cannotdirectly

    interact with theoperating system 114 since

    the operating system 114 has procedural inter fa ce In th

    example shown in FIG the application 134 is adapted t

    operatein the computing environment created by the ope

    ating system 114 and the re fo re the application 134 is show

    as being connected directly to the operating system 114

    The wrapper 128 is directed to mechanism for providing

    the operating system 114 with an object-oriented interface

    The wrapper 128 e na bl es t he o bject- or ie nted a pp lica tion s

    130A 130B to directly access in an object-oriented manner

    the procedural operating system 114 during run-time exec

    t io n o f the applications 130A 130B on the computer pla

    form 102 The wrapper 129 is conceptuallysimilar to th

    wrapper 128 The wrapper 129 provides an IBM PS/

    interface for the operating system 114 such that the app

    cation 132 c an directly access in PS/2 manner the proc

    dural operating system 114 assuming that the application

    132 is adapted to operate in the IBM PS/2 environment Th

    discussion of thepresent

    invention shall be limited herein

    the wrapper 128 which provides an object-oriented inte

    face to p ro ce du ra l o pe ra ting system having native

    proceduralinterface

    The wrapper 128 is preferably implemented as cod

    library 110 which is stored in the RAM 108 The code librar

    110 may also be stored in the data storage device 120 and/o

    the data storagemedium 122 The c ode library 110 imp

    ments an object-oriented class library 402 see FIGaccordance with the present invention the object-oriented

    class library 402 includes related object-oriented classes fo

    enabling an o bject- or ie nted a pp lica tion such as the app

    cations 130A and 130B to access in an object-oriented

    manner services provided by the operating system 114 Th

    object-oriented classes comprise methods which include

    proceduralfunction calls compatible with the n ative proce

    dural interface of theoperating system 114 Object-oriented

    statements defined by the object-oriented class library 40

    such as object-oriented statements which invoke one

    more of the methods of the class library 402 are insertabl

    into the application130 to e na bl e t he application 130

    access in an object-oriented manner the operating syste

    services during r un -tim e e xe cu tion of the application 130 o

    60 the computer platform 102 The object-orientedclass

    libra

    5519867

    10

    35

    50

    55

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    24/179

    during mn-time This is explained in greaterdetail below

    Since the computer program logic of the code library 110 is

    not linked to application programs the computer program

    logic can be modified at any time without having to modify

    recompile and/or relink the application programs as long as

    the inter fa ce to the code library 110 does not change As

    noted above the present invention shall be describedherein

    with reference to the Mach micro-kernel although the use of

    thepresent

    invention to wrap other operating systems falls

    within the scope of the present invention

    The Mach micro-kernelprovides

    users with number of

    services with are grouped into the following categories

    threads tasks virtual memory interprocess communication

    IPC scheduling synchronization fault processing and

    host/processor set processing The class library 402 of the

    presentinvention includes

    setof related classes for each of

    the Mach servicecategories Referring

    to FIG the class

    library 402 includes

    thread classes 404 for enabling an application to

    access in an object-oriented manner operating system ser

    vices to spawn control and obtain information relating to

    threads

    task classes 406 for enabling an application to access

    in an object-oriented manner operating system services to

    reference and control tasks wherein the tasks each repre

    sents an execution environment for threads respectively

    a ss oc ia ted w it h t he tasks

    virtual memory classes 408 for enabling an application

    to access in an object-oriented manner operating system

    services to access and manipulate virtual memory in

    computer

    IPC classes 410 for enabling an application to access

    in an object-oriented manner operating system services to

    communicate with o th er processes during run-time execu

    tion of the application in computer

    synchronizationclasses 412 for enabling an applica

    tio n to access in an object-oriented manner operating system

    services to synchronizeexecution of threads

    schedulingclasses 414 for enabling an application to

    access in an object-oriented manner operating system ser

    vices to schedule execution of threads

    fault classes 416 for enabling an application to access

    in an object-oriented manner operating system services to

    process system and user-defined processor faults and

    machine classes 418 for enabling an application to

    access in an object-oriented manner operating system ser

    vices to define and modify host and processor sets

    The class library 402 may include additional classes for

    other service categoriesthat are offered by Mach in the

    future For example security s ervice s a re currently being

    developed for Mach Accordingly the class library 402 may

    also include securityclasses 420 for enabling an application

    to access in an object-oriented manner operating system

    securityservices As will be appreciated the exact number

    andtype

    of classes included in the class library 402 depends

    on the implementation of the underlying operating system

    OperationalOverview of Preferred Embodiment

    substantive stepof the flow chart 202 an object-oriente

    statement which accesses service provided by the o

    ing system 114 is located in the application 130A during

    execution of the application 130A on the computer pla

    102 The object-oriented statement is defined by the ob

    o rien te d c la ss library 402 For example the object-oriente

    statement may reference method defined by one o

    classes of the class library 402 The following steps des

    the manner in which the statement is executed by

    computer platform 102

    Instep 208 the object-oriented statement is translated

    procedural function call compatible with the native

    cedural inter fa ce o f the operating system 1 14 a nd c

    sponding to the object-oriented statement In perfor

    15

    step 208 the statement is translated to the computer pro

    logic from the code library 110 which implements

    method referenced in the statement As noted above

    method includes at least one procedural function call w

    is compatible with the native procedural interface o

    20operating system 114 In step 210 the procedural func

    call from step 208 is executed in the computer platform

    to thereby cause the operating system 114 to provid

    service on behalf of the application 130A Step 2

    performed by executing the method discussed in step

    25thereby causing the procedural

    function call to be invo

    The operation of preferred embodiment shall no

    described in more detail with reference to FIG w

    illustrates detailed operational flowchart 302 o

    present invention Again the present invention is descr

    in the context of executing the object-oriented applica

    130A on the computer platform 102 More particularly

    present invention is described in the context of executin

    single object-oriented statement of the object-oriented

    cation 130A on the computer platform 102 The applica

    130A includes statements which access services provide

    theoperating system 114 and it is assumed that

    s ta te me nts a re d efin ed by the class library 402 in

    words the programmer c re ated the application130A

    reference to the class library 402 As will be discusse

    greater detail below the executable entity in the

    micro-kernel is called thread The processing organiza

    entityin the Mach micro-kernel is called task

    includes one or more threads which may execute in

    lel and an address space which represents block of v

    memory in which the tasks threads can execute A

    time there may be multiple tasks active on the com

    platform 102 When executing on the computer platf

    102 the application 130A could represent an entire

    having one or more threads or could represent

    threads which are part of task in this case the task w

    have other threads which may or may not be r elated

    operationof the

    application 130A The scope of the pr

    inventionencompasses the case

    when the application

    is an entire task or just few threads of task

    ss Referring now to FIG in step 308 it is determ

    whether the computer program logic also called com

    code from the code library 110 which implements

    method referenced in the statement is present in the

    address space associated with the application 130A

    60 computer program logic is present in the task address

    then t 316 is processed described below If the

    5519867

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    25/179

    related to the wrapper 128 wherein eachof the code

    libraries i nc lud e t he computer program logic for one ofthe

    object-orientedclasses of the cla ss library 402 As those

    skilled inthe relevant art will appreciate there may also be

    other code libraries not shown completely unrelated to the

    wrapper 128

    Associated with the code libraries are library servers each

    of which manages the resources of designatedcode library

    processing entity which desires access tothe computer

    program logicof code library makes request to

    the code

    library s library server The request may includefor

    example description of thedesired computer program

    logicand d estina tion a dd re ss to which the computer

    program logicshould be sent The library server processes

    the request by accessing the desired computer program logic 15

    from the code library and sending thedesired computer

    program logicto the a re a of memory designated by

    the

    destination address The structure and operation of library

    serve rs a re well known to those skilled in the relevant art

    Thus in step 310 it is determined whetherthe library server 20

    associated with the code library 110 which c on ta in s t he

    relevant computer program logicis known Step 310 is

    performed for example by referencing libraryserver table

    which identifies the known library servers and the code

    libraries which they service If the library serveris known

    then step314 is processed discussed below Otherwise

    step312 is processed In step 312

    the library server asso

    cia te d with the code library 110 is identified The identityof

    the library server may be apparent for examplefrom the

    content of the object-oriented statement whichis being

    30

    processed

    After the library servera ss oc ia te d w it h t he code library

    110 is ide ntifie d o r if the library server was already known

    then step 314 is processedIn

    step 314 requestis sent to

    the library server askingthe

    libraryserver to copy the

    computer program logic associatedwith the method refer

    ence in the statement to the task address space Upon

    completion of step 314 the library serverhas copied the

    requested computer program logic tothe task address space

    Preferably the code library 110is shared library That is 40

    the code library 110 may be simultaneouslyaccessed by

    multiple threads However preferablythe computer pro

    gram logic of thecode library 110 is physically stored

    in

    only one physical memory area The library server virtually

    copies computer program logic from the code library 110 to

    task address spaces That isinstead of physically copying

    computer program logic from one partof physical memory

    to another the library server places in the task address space

    pointer tothe physical memory area containing

    the rel

    evant computer program logicIn step 316 the computer 50

    program logicassociated with the object-oriented statement

    is executed on the computer platform102 As noted above

    in the case where the object-oriented statement accessesthe

    operating system 114 the computer program logicassoci

    ated with the method contains at least one procedural 55

    function call which is compatible with the native procedural

    interface of the operating system 114 Thus by executingthe

    methods computer program logic the proceduralfunction

    call is invoked and executed thereby causingthe operating

    system 114 to provide theservice on behalf of the applica- 60

    10

    particular compiler which compilesthe application program

    130A For example the run-time conventions may specify

    that when an instruction accessing an operating system

    service is encountered corresponding code from the code

    library 110 should be transferred to the task a dd re ss space

    via the associated library server andexecuted Compiler

    run-Lime conventions are generally well kno wn Aswill be

    appreciated run-time conventions are specificto the par

    ticular compilers used The run-time conventions for use

    with the present invention and with particular compiler

    would be apparent to one skilled in the art b as ed o nthe

    disclosure of the presentinvention contained herein par

    ticularly tothe disclosure associated with t he f lo w c ha rt 302

    in FIG As described above the wrapper 128 of the

    presentinvention is implemented as

    code library 110

    which includes computer program logic implementingthe

    object-orientedclass library 402 Alternatively the wrapper

    128 maybe

    implementedas hardware mechanism which

    essentially operatesin accordance with the flow chart 302 of

    FIG to translate object-oriented statements defined bythe

    class library 402 in application programsto procedural

    function calls compatible with the procedural interfaceof

    the operating system 114 Or the wrapper 128 may be

    implemented as backgroundsoftware

    process operatingon

    the computer platform102 which captures all accesses

    to the

    operating system 114 made by object-oriented statements

    defined by the class library 402 andwhich translates the

    accesses to proceduralfunction calls compatible with the

    procedural inter fa ce o f the operating system114 Other

    implementations of the wrapper128 will be apparent to

    those skilled in the relevant artbased on the disclosure of the

    present invention containedherein

    Mach Services

    This section provides an overview ofthe abstractions and

    services provided by the Machmicro-kernel The services

    are describedfor each of the major areas of the Mach

    micro-kernel As noted above these include threads tasks

    virtual memory IPC scheduling synchronizationservices

    hardware faults and host/privilege services also called

    machine services The Mach micro-kernel is further dis

    cussed in many publicly available documents including

    Loepere editor Mach Kernel Principles Open Software

    Foundation and Carnegie Mellon University DrafiIndus

    trial Specification September1992 and November 1992

    Loepere editor Mach Kernel Interfaces Open Software

    Foundation and Carnegie Mellon University DraftIndus

    trial Spec jfication September1992 and November 1992

    Loepere editor Mach ServerWriters Guide Open

    Software Foundation and Carnegie Mellon UniversityDraft

    Industrial Specification September1992 and November

    1992 Loepere editor Mach ServerWriters Inter

    faces Open Software Foundation and CarnegieMellon

    University Draft Industrial Specification September1992

    and November 1992 Silberschatz Peterson Galvin

    Operating System Concepts Addison-Wesley July1992

    and Tanenbaum Modern Operating Systems Prentice

    Hall 1992

    Threads

    5519867

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    26/179

    10

    15

    20

    25

    30

    35

    40

    11

    5519867

    12

    other data that make up its contextthread is always in one Tasks

    of several scheduling states executing ready to execute orThe basic organizational entity in Mach for which

    blocked for some reason Threads are intended to be light

    weight execution entities This is to encouragethe program-

    resources are managed is known as task Tasks have many

    mer to make use of multiple threads in applications thusobjects and attributes a ssocia te d with them

    taskfunda

    introducing more concurrency into the system thanhas been

    mentally comprises three things task contains multiple

    threads which are the executable entities in the systemfound in traditional operating systems Although threads are

    t as k a ls o has an address space which represents virtual

    not without some cost they really are fairly minimal and thememory in which its threads can execute And task has

    typical application or serverin Mach environment can take

    port name space which represents the valid IPC ports

    advantage of this capability 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 Eachthat task is not of itself an executable entity in Mach

    thread has scheduling policy which determines when and However tasks cancontain threads which are the execution

    how o ften the threa d will be g iven p ro ce ssor on which toentities task has number of other entities associated with

    run The scheduling services are discussed in moredetail in

    it b esid es the fundamental ones noted above Several of

    later sectionClosely

    tied to the scheduling policy ofthese entities have to do with scheduling decisions the kernel

    thread is the optional processor set designationwhich can needs to make for

    the threads contained by the task The

    be used in systems with multiple processors to more closelyscheduling parameters processor set designation and host

    control the assignment of threads to processorsfor poten-

    information all contribute to the scheduling of the tasks

    threads task also has number of distinguished interprotially greater application performance As indicated before

    cess commumcation ports that serve certain pre-definedan address space task can con ta in zero or more threads

    functions Ports and other aspects of interprocess commuwhich execute concurrently The kernel makes no assump-

    nication are discussed at length in latersection For now

    lions about the relationship of the threads in an address spaceit is sufficient to know that port resou rces a re accumulated

    or indeed in the entire system Ratherit schedules and

    over time in task Most of these are managed explicitly by

    executes the threads accordingto the scheduling parameters the programmer The distinguished ports mentioned

    above

    associated with t he m a nd the available processor resourcesgenerally have to do with establishing connections to several

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

    hierarchical of threads in an address spaceand no assump- special ports with each task The first is the task self port

    tions about how the y a re to interact with each otherIn order

    which can be used to ask the kernel to perform certain

    to control the o rd er of execution and the coordination of operations on the task The second special port is the

    threads to some useful end Mach provides several synchro- bootstrap port which can b e u se d for anything itsOS

    nization mechanisms The simplest and coarsest mecha- environment-specific but generally serves tolocate other

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

    thread has suspend count which is incremented and name port which a ll ow s t he t as k to obtaincertain informa

    decremented by these operations thread whose suspendtion about the ma ch in e o n which it is running Additionally

    count ispositive

    remains blocked until the count goes to Mach supplies several registered ports with each taskthat

    zero allow the threads contained in the task to communicatewith

    Finer synchronization can b e obtained through the use ofcertain higher-level servers in the system e.g the Network

    syn ch ro niza tion o bjects semaphores or monitors and con-Name Server the Service Server and the Environment

    ditions which allow variety of different synchronizationServer

    styles to be used Threads can also interact via inter-process Two o the r u se fu l s et s of ports existfor each task that

    communication

    IPCEach of these services is described in 45 allow fault processing and

    programstate sampling to be

    more detail in lat er sections Basic operations ex is t t o performed The fault ports of task provide common place

    support creation termination and gettingand setting for processor faults encountered by

    threads in the task to be

    attributes for threads Several other control operations exist processed Fault processing is described more fullyi n l ate r

    on threads that can be performed by any thread that has section The PC sample port allows profilingtoo ls to

    repeat-

    send right to the intended threads control port Threads can so edly monitor t he ex ec ut io n s ta te of thethreads in the task

    be terminated explicitly They can also be interrupted from Many operations are possiblefor tasks Tasks can be created

    the various possiblewalt situations and caused to resume and terminated Creation of new task involves specifying

    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 privileged with respect to kernel resources i.e 55 terminated which causes all of the containedthreads to be

    they can consume physical memory when free memory is terminated as well Thethreads contained in task can b e

    scarce This is used for threads in the default page-out path enumerated and informationabout the threa ds can be

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

    preciselythe send or receive rights to these ports which are the threads in the task can b e controlled through suspend

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

    thread self t which can beused to perform certain is incremented and decremented by the suspend

    and resume

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    27/179

    Machsupports

    sever al fea tu re s in its virtual memory

    VM subsystem Both the external client interfaces as well

    as the internal implementation offer featuresthat

    arenot

    found in many other operating systemsIn broadest terms

    the Mach virtual memory system supports large sparsely

    populated virtual address space for each of the tasks running

    in the system Clients are provided with general services for

    managing the composition of the a dd re ss space Some

    aspects of the VM system are actually implemented by10

    components that are outside of the micro-kernelwhich

    allowsgreat flexibility

    in tailoring certain policyfunctions to

    different system environmentsThe internal architecture of

    the Mach VM system has been divided into machine-

    independent and machine-dependent modules for maximum 15

    portability Porting to new processorIMMUarchitecture is

    generally sma ll m atte r of implementing number of

    functions that manipulate the b asichardware MMU struc

    tures Mach has been ported to numberof different

    processorarchitectures

    attestingto the portability

    of the20

    overall kernel and the virtual memory system in particular

    The address space of Machtask contains number of

    virtual memory regions These regions are pieces ofvirtual

    address space that have been allocated in various waysfor

    use by the task They are the only locations where memory

    can be legitimately accessed All references toaddresses

    outside of the defined regions in the address spacewill result

    in an improper memory reference f au lt vi rtu al memory

    region has several interesting attributes It has page-

    aligned starting address and size which must be multiple 30

    of the system page size The pages in the region allhave the

    same access protections these access protections can be

    read-only read-write or execute The pages in regionalso

    have the same inheritance characteristic which may beused

    when new tusk is created from the cur re nt tusk The

    inheritance characteristic for pages in region can be set to

    indicate that new task should inherit read-write copy of

    the region that it should inherit v irtual copyof the region

    or that it should inherit no copy of the regionread-write

    copy of region in new address space provides fully 40

    shared mapping of the region betweenthe tasks while

    virtual copy provides copy-on-write mappingthat essen

    tially giveseach task its own copy of the region

    but with

    efficient copy-on-write sharing of the pages constitutingthe

    region 45

    Every virtual memory region is really mapping of an

    abstract entity known as memory object memory object

    is simply collection of datathat can be addressed in some

    byte-wise fashion and about whichthe ker ne l m akes no

    assumptions It is best thought of as some pure pieceof data 50

    that can either be explicitly stored some place or c an b e

    produced in some fashion as needed Manydifferent things

    can serve as memory objects Somefamiliar examples

    include files ROMs disk partitions or foats Memory

    objectshave no Fe-defined operations or protocol

    that they

    are expected to follow The data contained in memory

    object can only be accessed when it hasbeen t ied t o VM

    region through mappingAfter

    memory objecthas been

    mapped to region t he d at a can be accessedvia normal

    memory read and write loadand store operations 60

    14

    with the d ata from the corresponding byte addresses in the

    associated memory object To accomplishthis the kernel

    actually engages in well-defined and onerous protocol

    with the pager whenever it needs to getdata for page faults

    or when it needs to page-out data due to page replacements

    This protocol which is known as the External Memory

    Management Interface or EMMI a ls o h an dl es t he initial

    ization sequences for memory objectswhen the y a re mapped

    by client tusks and the termination sequences when any

    associated memory regions are deallocated by client tasks

    There c an b e any numberof

    pagers running in the system

    depending on which memory objects are in use bythe

    various client tasks Pagers will typically be associatedwith

    the various file systems that are mounted at given timefor

    example Pagers could also exist to support certaindatabase

    applicationswhich might have needs for operations beyond

    what is supported by the file system Pagers could alsoexist

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

    non-standard ways e.g generating the d ata computation-

    ally rather than retrieving it from storage subsystem The

    micro-kernel always expects to have certain distinguished

    pager known as the default pager runningin the system The

    default pager is responsiblefor managing the memory

    objects associatedwith anonymous virtual memory such

    stacks heaps etc Such memory is temporary and only of

    use while client task is running As described above the

    main entities in the Mach VM system are regions memory

    objects and pagers Most clients howeverwill deal with

    virtual memory through operations on rangesof memory

    range c an b e portion of region orit could span multiple

    con tigu ou s r eg io ns in the a dd re ss space Operations are

    provided by Mach that allow users toallocate new ranges of

    virtual memory in the address spaceand deallocate ranges as

    desired Another important operation allows memory

    object to be mapped into range of virtual memory as

    described above Operations are also available to changethe

    protections on ranges of memory change the inheritance

    characteristics and wire or lock the pages of rangeinto

    physical memory It is also possible to read rangesof

    memory from another task or write into ranges inanother

    task provided that the control port for the task isavailable

    Additional services are available that allow t he u se r to

    specify the expected reference pattern for range of

    memory This c an b e u s ed bythe ker ne l as advice on ways

    to adapt the page replacement policy todifferent situations

    Yet another service is available to synchronize or flush the

    contents of range of memory with the memory objects

    backing it Finally ser vice s a re a va ilab le toobtain informa

    tion aboutregions

    and to enumerate the contents o f t usks

    address space described in terms of the regions itcontains

    InterprocessCommunication

    Mach has four concepts that are central to its interprocess

    communications facilities Ports Port Sets Port Rights and

    Messages One of these concepts Port Rights is also used

    by Mach as means to identify certain common resourcesin

    the

    system suchas threads tasks

    memoryobjects etc.

    Ports

    13

    Virtual Memory

    5519867

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    28/179

    5519867

    15 16

    sagesthat can be enqueued on the port limit on the Port rights have several attributes

    associated with t

    maximum size of message that can be sent to port and the type of the right send send-once receive port s

    count of how many rights to the port arein e xisten ce Por ts dead name and reference count for each of the a

    exist solely in the kernel and can only be manipulated via types of rights When task acquires rightfor

    po

    port rightswhich it already has send or receive rights the correspo

    ing reference count for the associated port name is i

    mentedport

    name becomes dead name when

    Port Rightsassociated

    portis destroyed That is all port names r

    senting send or send-once rights for port whose rec

    thread can add message to ports message queue if right is deallocated become dead names task can req

    it has send right to tha t port Likewiseit can remove notification when one of its rights becomes dead The ke

    message from ports message queuei f i t has receive right keeps system-wide count of the number of s en d

    to that port Port rights are considered to be resourcesof send-once rights for each port Any task that h ol ds r ec

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

    toport held by many different tasks however

    there cansent when this number goes to zero indicating that the re

    onlybe one receive right to port In fact port is created no more senders clients for the port This is called

    by allocating receive right and portis d es tr oy ed o nl y more senders notification The request must include

    when the r eceive right is deallocated either explicitly or right forport

    to which the notification should be se

    implicitlywhen the task dies In addition the attributes of

    port are manipulated through the receive right Multiple 20

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

    the same time and multiple threads on the same task canets

    receive fromport

    at the same time Port rights act as Por t sets provide the ability to receive from collectio

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

    messages from port and thus they implementlow-level 25 port set such that when receive is done on the por

    form ofsecurity

    for the system Theowner of

    portis the

    message will be receivedfrom one of the ports in t he

    task that h olds the r eceive right The only way for another The name of the r eceive right whose port provided

    task to getsend right for port is i f i t is explicitly given message is reported by the receive operation

    the righteither by the owner or b y a nytask that holds

    valid send right for the port This is primarily done by 30

    including the right in message and sending the message to Messa es

    another task Giving task send right grants it permission

    to send as many messages to the port asit wants There is Mach IPC message comprises

    header a nd a n in

    another kind ofport right

    called send-once right that only data portion and optionally someout-of-line me

    a ll ow s t he h ol de r to send one message to the port at which regions and port rights If the messagecontains neither

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

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

    sending the ports receive right in message toanother task message c on ta ln s t he message header directly

    followe

    Tasks acquire port rights either by creatingthem or the in-line data portion The message

    header contain

    receiving them in message Receive rights can onlybe 40 destination port send right an optional

    send right to w

    createdexplicitly by doing port allocate as described

    reply may be sent usuallysend-once right and

    above send rights can be created either explicitlyfrom an length of the d ata portion of the message

    The in-line d

    existingsend or receive right or implicitly while being

    of variable length subject to maximum specified

    transmitted in message send-once right canbe created per-port basis and is copied without interpretation

    explicitly or implicitlyfrom receive

    rightonly When 45 plex message

    consists of message header with the

    rightis sent in message the sender can specify

    that the rightformat as for simple message followed by count

    is either copied moved or new right created bythe send number of out-of-line memory regions

    and ports dispos

    operation Receive rights can only be movedof course arrays describing

    the kemels processing of these reg

    Whenright

    is moved the sen de r loo se s the right and theand ports and arrays containing

    the out-of-line descrip

    r eceive r g ains it When copied the sender retains the right 50and the port rights

    but copy of the right is createdand given to the receiver The port right disposition array

    c on ta in s t he de

    When created the sender provides receive right and new processing of the right i.ewhether it should be co

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

    When task acquires port right bywhatever means Mach disposition array specifies for each memory range wh

    assignsit name Note that ports themselves are not named 55 or not it should be de-allocated when

    the message is qu

    but theirport rights are Despite

    this fact the creators of and whether the memory should be copied into the recei

    Mach decided to r efer to the name of port right with the tasks address space or mappedinto the receiving ad

    termport name instead of the

    obviousport right name This space via virtual memory copy-on-right mechanism

    name is sca la r value 32-bits on Intel machines that is out-of-line d escr ip to rs spe cify the size address and

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

    several tasks cou ld each have t name with the same message the header in-line data and d escr ip to r a rr ay

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    29/179

    18

    condition is true waiting thread is unblockedand th

    re-acquires thelock before continuing execution thre

    can also perform broadcast operation oncondition wh

    unblocks all of the threads waiting for thatconditi

    Optional time-outs can also be set on thec on di ti on w

    operations tolimit the time thread will wait for

    condition

    Scheduling

    Host and Processor Sets

    17

    Message TransmissionSemantics

    5519867

    Mach IPC is basically asynchronous in naturethread

    sends message to port and oncethe message is queued

    on the port the sending thread continues executionreceive

    on portwill block if the re a re no messages queued on

    the

    port For efficiency there iscombined send/receive call that

    wifi send message and immediatelyblock waiting for

    message on specified reply port providingsynchronous

    model timeout ca n b e set on all message operations 10

    which will abort the operation if the messageis unable to be Since Mach is multiprocessor capable

    itprovides for

    sent or if no message isavailable to be received within the scheduling of threads

    in multiprocessor environme

    specified time period sendcall will block i f i t uses Mach defines processor sets

    to group processorsand

    send-right whose corresponding porthas reached its maxi- defines scheduling policies that can

    be associated with th

    mum number of messages If send uses send-onceright Mach provides two scheduling policies

    timeshare and fi

    the message is guaranteed tobe queued even if the port

    ispriority

    The timeshare policy is bas ed on the exponentia

    full Message deliveryis reliable and messages are guar- average

    of the threads usage of theCPU This policy

    anteed to be received in the order they aresent Note that attempts to optimize

    the time quantumbased on the num

    there is special-case codein Mach which optimizes

    for the of threads and processors The fixed priority policy does

    synchronous model overthe asynchronous model the

    fastest20

    alter the prioritybut does round-robin scheduling on

    IPC round-trip time isachieved by server doing receive threads

    that are at the same priority thread can use

    followed by repeated send/receivesin loop and the client

    default scheduling policyof its processor set or explic

    doing corresponding send/receivesin loop on its side use any

    one of the scheduling policies enabledfor

    processorset maximum priority can be setfor proces

    Port Rights as Identifiers 25set and thread In Mach the lower the priority value

    greater the urgency

    Because the kernel guarantees boththat

    port rightscannot

    be counterfeited and that messages cannotbe misdirected or

    Faults

    falsified port rights provide veryreliable and secure

    identifier Mach takes advantage of this by using port rightsThe Mach fault handling service s a re intended to pro

    to representalmost everything

    in the system including30

    flexible mechanism for handling both standardand u

    tasks threads memory objectsexternal

    memorymanagers defined processor

    faults The standard kernel facilities

    permissions to do system-privileged operations processorthreads messages and ports are

    used to provide the

    allocationsand so on In addition since the

    kernel can send handling mechanism This documentuses the word fa

    and receive messages itself it representsitself as special where the Mach documentation uses

    the word except

    task the majority of the kernelservice s a re accessed via Such terminology has been changed

    herein to disting

    IPC messages insteadof system-call traps This

    has allowed hardware faults from the exception mechanism of the

    services to be migrated out of the kernel fairly easilywhere language Threads and

    task have fault ports Theydiff

    appropriatetheir inheritance rules and are expected to be used in sli

    different ways Error handlingis expected to be done

    Synchronization per-threadbasis and debugging is expected

    to be handle

    per-taskbasis Task fault ports are

    inherited from pare

    Currently Mach provides no direct supportfor synchro-

    child tasks while thread fault ports are notinherited

    nization capabilities However conventional operating sys- d efau lt to no handler Thread fault handlerstake preced

    tems routinely provide synchronizationservices Such Syn-

    over task fault handlers When thread causesfau

    chronization services employ manywell-known

    kerne l b lo cks the thread and sends fault message t

    mechanisms such as semaphoresand monitors and condi-

    threads fault h an di er v ia t he fault porthandler is

    tions which are described below Semaphoresare syn-

    that receives message fromthe fault port The mes

    chronization mechanism which allows bothexclusive and

    contains information about the fault the threadand the

    shared access to resource Semaphores canbe acquired and

    causing the fault The handler performsits function ac

    released in either an exclusive orshared mode and they 50

    ing tothe type of the fault

    If appropriate the handler ca

    can optionally specify thue-out periodson the acquire

    and modify the e xe cu tion sta te of thethread that caused

    operations Semaphores are optionallyrecoverable in the

    fault Possible a ctio ns a reto cle ar the fault to terminate

    sense that when thread thatis holding semaphore

    thread or to pass the faultonto the task-level handler

    terminates prematurely the countersassociated with the

    are identified by types and data Machdefines

    semaphore are adjustedand waiting threa ds a re

    unblockedmachine-independent fault types that are supported

    f

    as appropriate Mach implementations e.g bad accessbad instruc

    Monitors and con dition s a re syn ch ro niza tionmecha-

    breakpoint etc. Otherfault types c an be implemen

    nismwhich

    implementsrelatively more disciplined and

    dependent e.gf-line co-processor

    violation etc.

    safer style of synchronizationthan simple semaphores

    monitor lock also called mutexis essentially binary 60

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    30/179

    19

    such information i nc lu de t he v er si onof the kernel or the

    rightto gain access to the value

    of the system clockAlmost

    all other information is considered sensitive and higher

    degree of privilege is required to getor manipulate the

    information This added level of privilege is implied when

    task holds send right to the host control port alsoknown

    as the host privilege port This rightmust be given out very

    carefully and selectively to tasksbecause having this right

    enables task to do virtually e ve ryth in g p ossibleto the

    kernel thus by-passing the security aspectsof the system

    supported by theIPC services Various operations can be

    performed withthis added privilege including altering

    the

    systems clock setting obtainingoverall performance and

    resource usage statisticsfor the system and causing

    the

    machine to re-boot

    Mach also exports the notions of processorsarid processor

    sets which a llow tasks to more carefully specifywhen and

    on what processorsits threads should execute Processors

    andprocessor

    sets can be enumerated and controlledwith

    the h ost privilege port processor represents particular

    processorin the system and processor

    set represents

    collection of processors Servicesexist t o create new pro

    cessor sets and to add processors to setor remove them as

    desired Services also exist to assign entire tasks or particu

    lar threads to set Through these services programmer can

    control on coarse grain when thethreads and tasks that

    constitute an application actually getto execute This allows

    programmer to specifywhen certain threads should be

    executed in parallel in processor setThe default assign

    ment for tasks and threads that do not explicitlyuse these

    capabilitiesis to the system default processor set

    which

    generally contains any processorsin the system that arent

    being used in o th er sets

    Security

    Mach may include other categoriesof services in addition

    to those described above For example Mach mayinclude

    services relating to security Inaccordance with the Mach

    security services every task carries securit ytoken which

    is scalar value that is uninterpreted by Mach There is

    portcalle d the host security port

    that is given to the bootstrap

    task and passed on to the trusted securitysever tasks

    security token can be set or changed by anytask that holds

    sendright

    to t he h os t security port while no special

    permissions are needed to determinethe value of tasks

    security token other than holdingthe tasks control port of

    course At the time MachIPC message is received the

    security token of the sender ofthe message is returned as one

    of the output parameters to thereceive function Tasks that

    hold the host security port can send messageand assign

    different security token to that messageso that it appears to

    have come from another task These services canbe used by

    upper layersof the system to implement

    various degrees of

    security

    Wrapper Class Library

    This section provides an area-by-area descriptionof the

    object-orientedinterface for the services provided by the

    Mach micro-kernel This object-orientedint erface t o the

    20

    library 402 may includeadditional classes such as secu

    classes 420 depending on the services provided by

    underlying operating system114 Each area is describ

    with class diagram and text detailingthe purpose

    functionof each class Selected methods are presented

    defined where appropriate the parameterlist of method

    also provided Thus thissection provides complete op

    tional definition and description of the wrapperclass lib

    402 The implementation of the methodsof the wra

    io class library 402 is discussed in latersection

    The class diagrams are presented usingthe well-kno

    Booch icons for representing class relationships andc

    nalityThese Booch ico ns a re p re se nted in FIG 17

    convenience purposes TheBooch i co ns a re discussed

    15

    Object Oriented Design With Applications byGrady Bo

    referenced above The wrapper class library402 is pr

    ably implemented usingthe well-known C-H- comp

    programming language Howeverother programming

    guages could alternativelyb e u se d Preferably the

    20descriptions are grouped

    into SPI System Programm

    Interface API Application Programming Interface

    nal and Noose methodsindicated by ifndef stateme

    bracketingthe code in question or by comments

    for N

    methods SPI interfa ce s a re specific to the particular

    25puter platform being used

    For illustrative purposes

    wrapper class library 402is

    presented anddescribed h

    with respect to computer platform operatingin accord

    with the IBM MicroKernel which is based on Mach Ve

    3.0 or compatible Personsskilled in the relevant art

    30find it apparent to modify the

    SPI classes to accommod

    other computer platforms b as ed o nthe teachings conta

    herein

    API interfa ce s a re included in the wrapperclass li

    402 regardless of the platform the systemis running on

    Internal interfa ce s a re intended for use only bylow-

    implementors The Noosemethods are provided sole

    enable an application 130 operating with the wrapper1

    communicate with an application 134 or servertha

    writt en t o run on Mach 114 directly They provideacce

    40the raw Mach facilities in such way that they

    fail ou

    of the intended object-oriented programmingmodel

    lished by the wrapper 128Use of Noose methods is h

    discouraged The SPI and API and perhapsthe Inte

    classes and methods are sufficient to implement any

    cation component or subsystem

    Thread Classes

    FIG is class diagram 501 of thethread classes 4 0

    the task classes 406 The thread classes404 provi

    object-oriented interface to the taskingand threading

    tionality of Mach 114 number ofthe threa d cla sses

    are handle classes so noted by their namewhich

    that they representreference to the corresponding

    entity The null constructors on thehandle classes cre

    empty handle objectAn empty handle object

    doe

    initially correspond to any kernel entityitmust be

    i zed vi a streaming an assignment or copy ope

    Calling m et ho ds o n an emptyhandle will cause an exce

    to be thrown Multiple copies ofhandle object c

    made each of which point to the same kernel entity

    so th

    5519867

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    31/179

    5519867

    21 22

    v id es t he mechanism for spawning new threads in the SetThreadSchedule constflhreadSchedule ne

    system Control operations include killing suspending/re- chedulesets the scheduling object in the thread to

    suming and doing death wat ch on it Constructing newSchedule object This allows one tocontrol the w

    TFhreadHandle and passing in TThreadProgram object thread is scheduled

    causes new thread to be constructed on the current task GetS cheduleState TThreadHandle theBloc

    The first code run in the new threa d a re the Prepare anddOnThread allows one to query t he c ur re nt s ta te o

    Run methods of the TThreadProgram object Destroyingthread thefllockedOnThread on which this thread

    TrhreadHandle does not destroy the thread it representsblocked

    There may also be cancel operation onthe TThreadllandle

    object Note that each TThreaclllandle object containssend CancelWaitAndPostException const causes bloc

    right tothe control

    portfor the thread This information is

    10kernel call to be unblocked and TKernelException

    not exported by the interface in general but because it doesthrown in the thread this

    containport right

    the only stream objectflhreadPro- WaitForDeathOf coast performs death watch on

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

    Attempting to stream into other TStream objects will cause nates C re at eD ea th in ter es t c re at es notification int

    an exception to be thrown.15

    for the death of the thread this When the thread t

    TmreadHandle provides number of methods for use by n ates the specified flnterest gets notification

    debuggers and the runtime environmentand for supporting

    flhreadProgram is an abstract base class that encainteractions with Mach tasks running outside of the envi-

    laths all the information required to create new thread

    ronment established by the wrapper 128 Thesemethods

    includegetting

    and setting the state o f t hr ea d spawning an20

    i nc lu des t he code to be executed scheduling informa

    empty thread in another task getting the threads faultand the threads stack To use it must be subclassed an

    ports returning right to the threads control portand Begin

    and Run methods overridden and then an insta

    creating T1hreadHandle handle fromthread control port

    tion of the object passed into the constructor for flhre

    send rightHandle to spawn thread The Begin routine

    is provide

    As noted above the wrapper 128 establishes computingaid

    startup synchronization Begin is executedin the

    environment in which the applications 130 operate Forthread b ef or e t he TIhreadHandle constructor compl

    brevity this computing environment established by theand the Run routine is executed after the flhreadHand

    wrapper 128 shall be called CE With regard to the wrapperconstructor completes The methods CopyThreadSchedule

    128 flhreadHandle spawnsCE runtime thread on the and GetStackSize return

    the default thread schedule

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

    instead of on the current task by using the CreateThreadmethods should be overridden to return the d esired th

    methods in the flaskHandle class and in subclasses of schedule a nd /o r sta ck size flhreadProgrami nc lu de s

    flaskHandle Creating thread on a no th er taskis not following methods

    recommended as general programming model however TmreadProgram const flext taskDescripiion

    To spawn CEthread on another CE task the TCETa5kHan- 35 Description provides text description

    of task that c

    dleCreateThread method is used by passing it Trhread- access vi a t he ThskHandleGetThskDescription me

    Program describing the thread to be run To spawn non-CE Only in effect if the object is passed TlaskHandle

    thread that is thread which does not operate in the structor If default constructor is used instead the inte

    computing environment established by the wrapper 128 the will synthesize unique name for TraskHandle GetT

    CreateThread method is used on the appropriate subclass of 40 Description to return

    flaskHandle that is the subclass of T1askHandle that has GetStackSize returns the size of the stack to be s

    heen created to operate with the othernon-CE computing

    for the thread Override this method if you dont wan

    environment For example to spawn anIBM OS2 thread on

    default stack size

    an 052 task you mightuse

    TOS2TaskHandleCreateThread method It is not possible

    GetStack Used to set up the threads stack Ove

    this method if you want to provide your ownstack

    to run CE thread on non-CE task nor is it possible to run

    non-CE thread on CE taskRun represents the entry point for the code to be

    the thread OVERRIDE THIS METHOD to providT1hreadllandle includes the following methods

    code the thread is to execute

    flhreadHandle const TrhreadProgram copyThread

    Code creates new thread in the calling taskmakes an

    internal COPY of the TmreadProgram which is deletedThsk Classes

    upon termination of the thread See FIG for class diagram of the task cla sses

    IThreadHandle TlhreadProgram adoptThreadCode

    creates new thread in the calling taskADOPTs adopt-TTaskHandle is concrete base class that encapsulates

    ThreadCode which is deleted upontermination of the thread

    55 the attributes and operations of basic Mach task It c

    The resources owned by t he t hr ea d a re also discardedused to refer to and control any task on the sy

    copy of the TThreadProgram is NOTmade

    f lask Handle c annot b e u se d directly to create

    however because it doesnt have any knowledge abou

    IThreadHandle EExecution yourself creates thead runtime environment It does provide sufficient protoc

    handle for the calling thread 60 protected methods for subclasses with specific ru

    TIPC

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

  • 8/14/2019 Apple HTC patent lawsuit : Exhibits A - E

    32/179

    23

    5519867

    resuming the task and doingdeathwatch on the task The

    informational methods include getting its host gettingand

    settingits registered ports enomerating its ports

    or virtual

    memo regions getting its fault ports enumeratingits

    threads etc TlhskHandle i nc lu de s t he following methods

    T1askHandle EExecutionThread creat es t askhandle

    for the specifiedthread

    Suspend suspends the task i.eall threads contained by

    the task Resume resumes the task i.eall threads

    contained by the task10

    Kill terminates the taskall threads contained bythe

    task a re terminated

    WaitForDeathOf performs death wa tc h o nthe task

    The calling thread blocks until the task this terminates

    C re at eD ea tb in te re st c rea te s notification interest forthe

    death of the task The thread specifiedin the Tinterest object

    gets notificationwhen the task this terminates

    AilocateMemory size_t howManyBytes TMemorySur

    rogate newRangeallocates range of anonymous

    vir-

    20

    teal memory anywhere in the tasksaddress space The

    desired size in bytesis specified in howManyBytes

    The

    startingaddress after page alignment and

    ac