%!PS-Adobe-2.0 %%Title: manual.mss %%DocumentFonts: (atend) %%Creator: Mary Thompson and Scribe 7(1700) %%CreationDate: 23 August 1990 13:53 %%Pages: (atend) %%EndComments % PostScript Prelude for Scribe. /BS {/SV save def 0.0 792.0 translate .01 -.01 scale} bind def /ES {showpage SV restore} bind def /SC {setrgbcolor} bind def /FMTX matrix def /RDF {WFT SLT 0.0 eq {SSZ 0.0 0.0 SSZ neg 0.0 0.0 FMTX astore} {SSZ 0.0 SLT neg sin SLT cos div SSZ mul SSZ neg 0.0 0.0 FMTX astore} ifelse makefont setfont} bind def /SLT 0.0 def /SI { /SLT exch cvr def RDF} bind def /WFT /Courier findfont def /SF { /WFT exch findfont def RDF} bind def /SSZ 1000.0 def /SS { /SSZ exch 100.0 mul def RDF} bind def /AF { /WFT exch findfont def /SSZ exch 100.0 mul def RDF} bind def /MT /moveto load def /XM {currentpoint exch pop moveto} bind def /UL {gsave newpath moveto dup 2.0 div 0.0 exch rmoveto setlinewidth 0.0 rlineto stroke grestore} bind def /LH {gsave newpath moveto setlinewidth 0.0 rlineto gsave stroke grestore} bind def /LV {gsave newpath moveto setlinewidth 0.0 exch rlineto gsave stroke grestore} bind def /BX {gsave newpath moveto setlinewidth exch dup 0.0 rlineto exch 0.0 exch neg rlineto neg 0.0 rlineto closepath gsave stroke grestore} bind def /BX1 {grestore} bind def /BX2 {setlinewidth 1 setgray stroke grestore} bind def /PB {/PV save def newpath translate 100.0 -100.0 scale pop /showpage {} def} bind def /PE {PV restore} bind def /GB {/PV save def newpath translate rotate div dup scale 100.0 -100.0 scale /showpage {} def} bind def /GE {PV restore} bind def /FB {dict dup /FontMapDict exch def begin} bind def /FM {cvn exch cvn exch def} bind def /FE {end /original-findfont /findfont load def /findfont {dup FontMapDict exch known{FontMapDict exch get} if original-findfont} def} bind def /BC {gsave moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath clip} bind def /EC /grestore load def /SH /show load def /MX {exch show 0.0 rmoveto} bind def /W {0 32 4 -1 roll widthshow} bind def /WX {0 32 5 -1 roll widthshow 0.0 rmoveto} bind def /RC {100.0 -100.0 scale 612.0 0.0 translate -90.0 rotate .01 -.01 scale} bind def /URC {100.0 -100.0 scale 90.0 rotate -612.0 0.0 translate .01 -.01 scale} bind def /RCC {100.0 -100.0 scale 0.0 -792.0 translate 90.0 rotate .01 -.01 scale} bind def /URCC {100.0 -100.0 scale -90.0 rotate 0.0 792.0 translate .01 -.01 scale} bind def %%EndProlog %%Page: 0 1 BS 0 SI 15 /Helvetica-Bold AF 19679 19982 MT (MACH Kernel Interface Manual)SH 10 /Helvetica AF 27015 23032 MT (Robert V. Baron)SH 27960 24458 MT (David Black)SH 27100 25884 MT (William Bolosky)SH 27126 27310 MT (Jonathan Chew)SH 26543 28736 MT (Richard P. Draves)SH 27237 30162 MT (David B. Golub)SH 26599 31588 MT (Richard F. Rashid)SH 26070 33014 MT (Avadis Tevanian, Jr.)SH 25598 34440 MT (Michael Wayne Young)SH 23180 37292 MT (Department of Computer Science)SH 24599 38718 MT (Carnegie-Mellon University)SH 25875 40144 MT (Pittsburgh, PA 15213)SH /Helvetica-Bold SF 27988 41570 MT (Version of:)SH /Helvetica SF 27097 42996 MT (23 August 1990)SH 13 /Helvetica-Bold AF 27963 44148 MT (Abstract)SH 8 /Helvetica AF 7200 46681 MT (MACH)SH 10 SS 10185 XM (is an operating system kernel under) 351 W( development at Carnegie-Mellon University to support)350 W 7200 47824 MT (distributed and parallel computation.)58 W 8 SS 24109 XM (MACH)SH 10 SS 26801 XM (is designed to support computing) 58 W( environments consisting of)59 W 7200 48967 MT (networks of uniprocessors and) 67 W( multiprocessors. This manual describes the interface to the)66 W 8 SS 48577 XM (MACH)SH 10 SS 51277 XM (kernel)SH 7200 50110 MT (in detail. The)317 W 8 SS 14749 XM (MACH)SH 10 SS 17700 XM (system currently runs) 317 W( on a wide variety of uniprocessor and multiprocessor)318 W 7200 51253 MT (architectures.)SH 8312 61929 MT (This research was sponsored by the Defense) 200 W( Advanced Research Projects Agency \050DOD\051, ARPA)199 W 7200 63072 MT (Order No. 4864, monitored by the Space) 346 W( and Naval Warfare Systems Command under contract)347 W 7200 64215 MT (N00039-84-C-0467.)SH 8312 66499 MT (The views and) 157 W( conclusions contained in this document are those of the authors and should not be)156 W 7200 67642 MT (interpreted as representing official policies, either expressed or implied, of the Defense) 315 W( Advanced)316 W 7200 68785 MT (Research Projects Agency or of the U.S. Government.)SH ES %%Page: 1 2 BS 0 SI 10 /Helvetica-Bold AF 30322 4329 MT (1)SH 12 SS 7200 8075 MT (1. Introduction)SH 8 /Helvetica AF 8312 9501 MT (MACH)SH 10 SS 10946 XM (is a communication-oriented operating system kernel providing:)SH /Symbol SF 9242 11444 MT (\267)SH /Helvetica SF 9980 XM (multiple tasks, each with a large, paged virtual memory space,)SH /Symbol SF 9242 13159 MT (\267)SH /Helvetica SF 9980 XM (multiple threads of execution within each task, with a flexible scheduling facility,)SH /Symbol SF 9242 14874 MT (\267)SH /Helvetica SF 9980 XM (flexible sharing of memory between tasks,)SH /Symbol SF 9242 16589 MT (\267)SH /Helvetica SF 9980 XM (message-based interprocess communication,)SH /Symbol SF 9242 18304 MT (\267)SH /Helvetica SF 9980 XM (transparent network extensibility, and)SH /Symbol SF 9242 20019 MT (\267)SH /Helvetica SF 9980 XM (a flexible capability-based approach to security and protection.)SH 8 SS 8312 22586 MT (MACH)SH 10 SS 11468 XM (supports multiprocessor scheduling and is currently in use) 522 W( on both general purpose)521 W 7200 24012 MT (multiprocessor and uniprocessor systems.)80 W 8 SS 26828 XM (MACH)SH 10 SS 29542 XM (is currently supported at) 80 W( CMU on the DEC VAX 8650,)81 W 7200 25438 MT (8600, 11/785, 11/780, 11/750 and MicroVAX II, the IBM RT/PC and the SUN 3. It) 153 W( also will run as a)152 W 7200 26864 MT (shared memory) 273 W( multiprocessor system on the four processor VAX 11/784 and two processor VAX)274 W 7200 28290 MT (11/782, the two processor VAX 8300,) 102 W( the VAX 8200 with one or more CPUs, the 20 processor Encore)101 W 7200 29716 MT (MultiMax and the 30 processor) 241 W( Sequent Balance 21000. Ports of)242 W 8 SS 39040 XM (MACH)SH 10 SS 41916 XM (to other computers are in)242 W 7200 31142 MT (progress.)SH 11 /Helvetica-Bold AF 7200 34824 MT (1.1. Overall system organization)SH 10 /Helvetica AF 8312 36250 MT (As a working environment for developing application programs,)32 W 8 SS 36746 XM (MACH)SH 10 SS 39412 XM (can be viewed as being split into)32 W 7200 37676 MT (two components:)SH /Symbol SF 9242 39619 MT (\267)SH /Helvetica SF 9980 XM (a small, extensible system kernel which provides scheduling, virtual) 556 W( memory and)557 W 9980 40762 MT (interprocess communications and)SH /Symbol SF 9242 42477 MT (\267)SH /Helvetica SF 9980 XM (several, possibly parallel, operating system support environments which provide) 6 W( the following)5 W 9980 43620 MT (two items: 1\051 distributed file access and remote execution) 273 W( 2\051 emulation for established)274 W 9980 44763 MT (operating system environments such as UNIX.)SH 8312 47330 MT (The extensibility of the basic)324 W 8 SS 22771 XM (MACH)SH 10 SS 25728 XM (kernel facilitates the incorporation of new operating system)323 W 7200 48756 MT (functions; user-state programs can simply be added) 48 W( to the existing kernel without the need to modify the)49 W 7200 50182 MT (underlying kernel base.) 76 W( The) 429 W( basic kernel abstractions have been designed in such a way as to provide)75 W 7200 51608 MT (for completely transparent network extensibility of all kernel functions.)SH 8 SS 8312 54175 MT (MACH)SH 10 SS 11268 XM (is 4.3bsd UNIX binary compatible on VAX) 322 W( architecture machines. In addition, the)323 W 8 SS 51644 XM (MACH)SH 10 SS 7200 55601 MT (environment includes an) 279 W( internal kernel debugger, transparent network interprocess communication,)278 W 7200 57027 MT (remote execution facilities, a transparent remote UNIX file system and support for graphics workstations.)SH 11 /Helvetica-Bold AF 7200 60709 MT (1.2. Basic kernel functionality)SH 10 /Helvetica AF 8312 62135 MT (The)SH 8 SS 10313 XM (MACH)SH 10 SS 12947 XM (kernel supports the following basic abstractions:)SH /Symbol SF 9242 64078 MT (\267)SH /Helvetica SF 9980 XM (A)SH /Helvetica-Bold SF 11147 XM (task)SH /Helvetica SF 13648 XM (is an execution environment and is the basic unit of resource) 222 W( allocation. A task)223 W 9980 65221 MT (includes a) 75 W( paged virtual address space \050potentially sparse\051 and protected access to system)74 W 9980 66364 MT (resources \050such as processors, port capabilities and virtual memory\051.)SH /Symbol SF 9242 68079 MT (\267)SH /Helvetica SF 9980 XM (A)SH /Helvetica-Bold SF 11136 XM (thread)SH /Helvetica SF 14681 XM (is the basic unit of execution. It consists of all) 211 W( processor state \050e.g.hardware)212 W 9980 69222 MT (registers\051 necessary for independent) 5 W( execution. A thread executes in the virtual memory and)4 W 9980 70365 MT (port rights context of a single task. The conventional notion of a)224 W /Helvetica-Bold SF 41464 XM (process)SH /Helvetica SF 45802 XM (is, in)225 W 8 SS 48586 XM (MACH)SH 10 SS (,)SH 9980 71508 MT (represented by a task with a single thread of control.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 2 3 BS 0 SI 10 /Helvetica-Bold AF 30322 4329 MT (2)SH /Symbol SF 9242 8000 MT (\267)SH /Helvetica SF 9980 XM (A)SH /Helvetica-Bold SF 11011 XM (port)SH /Helvetica SF 13319 XM (is a simplex communication channel -- implemented as) 86 W( a message queue managed)85 W 9980 9143 MT (and protected by) 88 W( the kernel. A port is also the basic object reference mechanism in)89 W 8 SS 48586 XM (MACH)SH 10 SS (.)SH 9980 10286 MT (Ports are used to refer to objects; operations on objects) 20 W( are requested by sending messages)19 W 9980 11429 MT (to the ports which represent them.)SH /Symbol SF 9242 13144 MT (\267)SH /Helvetica SF 9980 XM (A)SH /Helvetica-Bold SF 11008 XM (port set)83 W /Helvetica SF 15119 XM (is a group of ports, implemented as a queue combining) 83 W( the message queues of)84 W 9980 14287 MT (the constituent ports. A thread may use a port set to) 170 W( receive a message sent to any of)169 W 9980 15430 MT (several ports.)SH /Symbol SF 9242 17145 MT (\267)SH /Helvetica SF 9980 XM (A)SH /Helvetica-Bold SF 11061 XM (message)SH /Helvetica SF 15755 XM (is a typed collection) 136 W( of data objects used in communication between threads.)137 W 9980 18288 MT (Messages may be of any size and may contain inline data, pointers to data, and capabilities)48 W 9980 19431 MT (for ports.)SH /Symbol SF 9242 21146 MT (\267)SH /Helvetica SF 9980 XM (A)SH /Helvetica-Bold SF 10951 XM (memory object)26 W /Helvetica SF 18394 XM (is a secondary storage object that is mapped into a task's virtual) 26 W( memory.)27 W 9980 22289 MT (Memory objects are commonly files managed) 62 W( by a file server, but as far as the)61 W 8 SS 45802 XM (MACH)SH 10 SS 48497 XM (kernel)SH 9980 23432 MT (is concerned, a memory object may be implemented by any object) 33 W( \050i.e. port\051 that can handle)34 W 9980 24575 MT (requests to read and write data.)SH 8312 27142 MT (Message-passing is the primary means of communication both among tasks, and between tasks) 90 W( and)89 W 7200 28568 MT (the operating system kernel itself. The only functions implemented by) 137 W( system traps are those directly)138 W 7200 29994 MT (concerned with message communication; all the rest are) 377 W( implemented by messages to a task's)376 W /Courier SF 7200 31420 MT (task_port)SH /Helvetica SF (.)SH 8312 33987 MT (The)SH 8 SS 10313 XM (MACH)SH 10 SS 12947 XM (kernel functions can be divided into the following catagories:)SH /Symbol SF 9242 35930 MT (\267)SH /Helvetica SF 9980 XM (basic message primitives and support facilities,)SH /Symbol SF 9242 37645 MT (\267)SH /Helvetica SF 9980 XM (port and port set management facilities,)SH /Symbol SF 9242 39360 MT (\267)SH /Helvetica SF 9980 XM (task and thread creation and management facilities,)SH /Symbol SF 9242 41075 MT (\267)SH /Helvetica SF 9980 XM (virtual memory management functions,)SH /Symbol SF 9242 42790 MT (\267)SH /Helvetica SF 9980 XM (operations on memory objects.)SH 8 SS 8312 45357 MT (MACH)SH 10 SS 11103 XM (and other server interfaces are defined in a high-level remote) 157 W( procedure call language called)158 W 7200 46783 MT (MIG; from that) 119 W( definition, interfaces for C are generated. In the future, MIG may generate interfaces in)118 W 7200 48209 MT (other languages. In this manual, calls are shown in the C language.)SH 8312 50776 MT (All)SH 8 SS 9783 XM (MACH)SH 10 SS 12499 XM (kernel procedures return a value indicating the success or reason for failure of that) 82 W( request.)83 W 7200 52202 MT (The errors unique to) 12 W( each function are described with those functions; however, since all requests involve)11 W 7200 53628 MT (primitive message operations, errors described in that section may also apply.)SH 11 /Helvetica-Bold AF 7200 57310 MT (1.3. User operating system environments)SH 10 /Helvetica AF 8312 58736 MT (In addition to the facilities provided directly by) 19 W( the kernel,)20 W 8 SS 33850 XM (MACH)SH 10 SS 36504 XM (also provides for complete emulation of)20 W 7200 60162 MT (all 4.3bsd functions as described in the 4.3bsd manual. This emulation is) 42 W( completely transparent to user)41 W 7200 61588 MT (programs and) 269 W( requires no special libraries or other utilities. On all VAX hardware)270 W 8 SS 47103 XM (MACH)SH 10 SS 50007 XM (is binary)270 W 7200 63014 MT (compatible with 4.3bsd.)SH 8312 65581 MT (This manual does not reproduce descriptions of the UNIX system calls.) 71 W( Programmers) 419 W( wishing to use)70 W 7200 67007 MT (the functions provided within these environments should consult the relevant UNIX system manuals.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 3 4 BS 0 SI 10 /Helvetica-Bold AF 30322 4329 MT (3)SH 12 SS 7200 8075 MT (2. Message primitives)SH 11 SS 7200 11757 MT (2.1. Basic terms)SH 8 /Helvetica AF 8312 13183 MT (MACH)SH 10 SS 10946 XM (message primitives manipulate three distinct objects:)SH 9424 15055 MT (1.)SH /Helvetica-Bold SF 10536 XM (ports)SH /Helvetica SF 13361 XM (- protected kernel objects to) 47 W( which messages may be sent and logically queued until)48 W 10536 16198 MT (reception,)SH 9424 17913 MT (2.)SH /Helvetica-Bold SF 10536 XM (port sets)133 W /Helvetica SF 15303 XM (- protected kernel objects which combine multiple port) 133 W( queues and from which)132 W 10536 19056 MT (messages may be dequeued, and)SH 9424 20771 MT (3.)SH /Helvetica-Bold SF 10536 XM (messages)SH /Helvetica SF 15778 XM (- ordered collections of typed data consisting of a fixed size message) 128 W( header)129 W 10536 21914 MT (and a variable size message body.)SH 11 /Helvetica-Bold AF 7200 25596 MT (2.2. Ports)SH 10 /Helvetica AF 8312 27022 MT (Access rights to) 91 W( a port consist of the ability to)90 W /Helvetica-Bold SF 29501 XM (send to)90 W /Helvetica SF (,)SH /Helvetica-Bold SF 33793 XM (receive from)90 W /Helvetica SF (, or)90 W /Helvetica-Bold SF 41733 XM (own)SH /Helvetica SF 44101 XM (that port. A task may)90 W 7200 28448 MT (hold just send rights or any combination of receive and ownership rights plus) 26 W( send rights. Threads within)27 W 7200 29874 MT (a task may only refer to ports to which that task) 117 W( has been given access. When a new port is created)116 W 7200 31300 MT (within a task, that task is given all three access rights to that port.)SH 8312 33867 MT (The port access rights are operationally defined as follows:)SH /Helvetica-Bold SF 10904 35739 MT (Send access)SH /Helvetica SF 19800 XM (to a port implies that a message can be sent to that port.) 30 W( Should) 339 W( the port be)31 W 19800 36882 MT (destroyed during the time a task has send access, a message will be sent to)33 W 19800 38025 MT (that task by the kernel indicating that the port has disappeared.)SH /Helvetica-Bold SF 10904 39651 MT (Receive access)SH /Helvetica SF 19800 XM (to a port allows a message to be dequeued from that port. Only one task)127 W 19800 40794 MT (may have receive access for a given port at a time; however, more than one)41 W 19800 41937 MT (thread within that task may concurrently attempt to receive messages) 37 W( from a)38 W 19800 43080 MT (given port. Receive access implies send rights.)SH /Helvetica-Bold SF 10904 44706 MT (Ownership)SH /Helvetica SF 19800 XM (of a port implies that, should the task with) 301 W( receive access to that port)300 W 19800 45849 MT (relinquish its receive access, the receive access to the port will) 9 W( be sent to the)10 W 19800 46992 MT (owner task. Likewise, should ownership be relinquished, the ownership)280 W 19800 48135 MT (rights are sent by the kernel to the receiving task. The) 138 W( name ownership is)139 W 19800 49278 MT (somewhat misleading as all) 246 W( it really means is that the task is a backup)245 W 19800 50421 MT (reciever if the current receiver gives up its rights. As) 134 W( with receive access,)135 W 19800 51564 MT (only one task may hold) 206 W( ownership access to any given port. Ownership)205 W 19800 52707 MT (implies send rights.)7 W /Helvetica-Bold SF 28942 XM (NOTE:)SH /Helvetica SF 32339 XM (the ownership abstraction is considered obsolete)8 W 19800 53850 MT (and has been replaced with the) 237 W( use of a)236 W /Courier SF 39940 XM (backup port)236 W /Helvetica SF (. This is a port)236 W 19800 54993 MT (associated with a primary port, to which) 31 W( the receive rights of the primary port)32 W 19800 56136 MT (will be sent in the event of an attempted destruction of) 211 W( the primary port.)210 W 19800 57279 MT (Current versions of)185 W 8 SS 29080 XM (MACH)SH 10 SS 31899 XM (implement both mechanisms, but the) 185 W( ownership)186 W 19800 58422 MT (rights may disappear in future releases.)SH 8312 60989 MT (Port access rights can be passed in messages.) 136 W( They) 549 W( are interpreted by the kernel and transferred)135 W 7200 62415 MT (from the sender to the kernel upon message) 81 W( transmission and to the receiver upon message reception.)82 W 7200 63841 MT (Send rights are kept by the original task as well as being transmitted to the receiver task, but) 136 W( receive)135 W 7200 65267 MT (rights and ownership rights are removed from the orignal task at) 58 W( the time of the send, and appear in the)59 W 7200 66693 MT (user task when the receive is done. During the time between a) 91 W( send and receive, the kernel holds the)90 W 7200 68119 MT (rights and any messages sent to the port will be queued awaiting a new task to receive on the port. If the)29 W 7200 69545 MT (task that was) 149 W( intended to receive the rights dies before it does the receive, the rights are handled as)148 W 7200 70971 MT (though the receive had been done before the) 27 W( task died; that is receive rights are transferred to the owner)28 W 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 4 5 BS 0 SI 10 /Helvetica-Bold AF 30322 4329 MT (4)SH /Helvetica SF 7200 7929 MT (or ownership is transferred to the receiver. If the receiver and owner are both dead, the port is destroyed.)SH 8312 10496 MT (The message queue associated with) 44 W( a port is of finite length and thus may become full. Threads may)43 W 7200 11922 MT (exercise several options for handling the) 87 W( case of message transmission to a full queue \050see)88 W /Courier SF 49200 XM (msg_send)SH /Helvetica SF 7200 13348 MT (below\051. Unless a specific option is set,)SH /Courier SF 24373 XM (msg_send)SH /Helvetica SF 29451 XM (will block until the message can be queued.)SH 11 /Helvetica-Bold AF 7200 17030 MT (2.3. Port sets)SH 10 /Helvetica AF 8312 18456 MT (Conceptually, a port) 126 W( set is a bag holding zero or more receive rights. A port set allows a thread to)125 W 7200 19882 MT (block waiting for a) 4 W( message sent to any of several ports. A port may be a member of at most one port set)5 W 7200 21308 MT (at any time.)SH 8312 23875 MT (A task's port set right,) 99 W( created by)98 W /Courier SF 23842 XM (port_set_allocate)SH /Helvetica SF (, allows the task to receive a message from)98 W 7200 25301 MT (the port set with)91 W /Courier SF 14901 XM (msg_receive)SH /Helvetica SF 21870 XM (and manipulate the port set with)92 W /Courier SF 36874 XM (port_set_add)SH /Helvetica SF (,)SH /Courier SF 44722 XM (port_set_remove)SH /Helvetica SF (,)SH /Courier SF 7200 26727 MT (port_set_status)SH /Helvetica SF (, and)261 W /Courier SF 19224 XM (port_set_deallocate)SH /Helvetica SF (. Unlike) 800 W( port rights, a port set) 261 W( right may not be)260 W 7200 28153 MT (passed in messages.)SH 11 /Helvetica-Bold AF 7200 31835 MT (2.4. Port names)SH 10 /Helvetica AF 8312 33261 MT (Every task has its own port name space, used for port and port set names. For example,) 11 W( one task with)12 W 7200 34687 MT (receive and ownership rights for a port may know the port by the) 56 W( name 13, while another task with send)55 W 7200 36113 MT (rights for the same port may know it by the name 17. A task only has one name for a port, so if the task)40 W 7200 37539 MT (with send rights named 17 receives another message carrying send rights for the same) 49 W( port, the arriving)48 W 7200 38965 MT (rights will also be named 17.)SH 8312 41532 MT (Typically these names are small integers,) 18 W( but that is implementation dependent. When a task receives)19 W 7200 42958 MT (a message carrying rights for a new port, the)157 W 8 SS 28677 XM (MACH)SH 10 SS 31468 XM (kernel is free to choose any unused) 157 W( name. The)156 W /Courier SF 7200 44384 MT (port_rename)SH /Helvetica SF 14078 XM (call can be used to change a task's name for a port.)SH 11 /Helvetica-Bold AF 7200 48066 MT (2.5. Port types)SH 10 /Helvetica AF 8312 49492 MT (There are several type defintions for ports used in this manual) 91 W( and defined in)92 W /Courier SF 43829 XM ()SH /Helvetica SF (. The)92 W 7200 50918 MT (type)SH /Courier SF 9374 XM (port_name_t)SH /Helvetica SF 16258 XM (is used to refer to a port to which the task may have no rights. When this type is) 6 W( used)5 W 7200 52344 MT (in a message definition no port rights are sent in the) 55 W( message and the kernel does no mapping of ports.)56 W 7200 53770 MT (The type)45 W /Courier SF 11459 XM (port_set_name_t)SH /Helvetica SF 20782 XM (is used to refer to a port set and does) 45 W( not imply any rights to the set. Only)44 W 7200 55196 MT (port set names can be passed in messages. In order to pass the rights to a port) 95 W( set, a task must pass)96 W 7200 56622 MT (each port separately and the receiving) 13 W( port must then define a new port set with consisting of those ports.)12 W 7200 58048 MT (The types)64 W /Courier SF 11997 XM (port_t, port_rcv_t)64 W /Helvetica SF 23203 XM (and)SH /Courier SF 25213 XM (port_all_t)SH /Helvetica SF 31555 XM (are used to imply) 64 W( a port to which the task has the)65 W 7200 59474 MT (specified rights. Typically)60 W /Courier SF 18772 XM (port_t)SH /Helvetica SF 22710 XM (is used) 60 W( for a port with any rights. One of these types must be used in)59 W 7200 60900 MT (the message definition if ports) 52 W( rights are to be sent in the message. All of these types are defined to be)53 W 7200 62326 MT (the same basic C types, so that they can be used interchangeably in calls to primitives.)SH 8312 64893 MT (Most of the)11 W 8 SS 13570 XM (MACH)SH 10 SS 16215 XM (calls take) 11 W( a)10 W /Courier SF 21526 XM (task)SH /Helvetica SF 24214 XM (or)SH /Courier SF 25391 XM (thread)SH /Helvetica SF 29279 XM (as their first argument where this agrument is said to be)10 W 7200 66319 MT (the target task/thread. In most cases the task or thread is) 130 W( the one doing the call. In those cases any)131 W /Courier SF 7200 67745 MT (port_name_t)SH /Helvetica SF 14111 XM (arguments represent ports to) 33 W( which the task has or receives rights. But in the case where)32 W /Courier SF 7200 69171 MT (task)SH /Helvetica SF 9916 XM (is not the caller, then the target task gets the rights but doesn't know the) 38 W( name, and the caller gets)39 W 7200 70597 MT (the name but does not have any rights to the port.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 5 6 BS 0 SI 10 /Helvetica-Bold AF 30322 4329 MT (5)SH 11 SS 7200 8002 MT (2.6. Messages)SH 10 /Helvetica AF 8312 9428 MT (A message consists of a fixed) 27 W( header, followed by a variable amount of data. The C type definition for)26 W 7200 10854 MT (the message header is as follows:)SH /Courier SF 9600 12260 MT (typedef struct {)SH 19200 13291 MT (int :24,)7200 W 28800 14322 MT (msg_simple : 8;)SH 19200 15353 MT (int msg_size;)7200 W 19200 16384 MT (int msg_type;)7200 W 19200 17415 MT (port_t msg_local_port;)5400 W 19200 18446 MT (port_t msg_remote_port;)5400 W 19200 19477 MT (int msg_id;)7200 W 9600 20508 MT (} msg_header_t;)SH /Helvetica SF 7200 22019 MT (The)SH /Courier SF 9268 XM (msg_local_port)SH /Helvetica SF 18013 XM (and)SH /Courier SF 20026 XM (msg_remote_port)SH /Helvetica SF 29371 XM (fields are used to name the ports on) 67 W( which a message)68 W 7200 23445 MT (is to be received or sent. In) 163 W( the case of)162 W /Courier SF 26280 XM (msg_receive)SH /Helvetica SF 33320 XM (this may be either a port or a port set. The)162 W /Courier SF 7200 24871 MT (msg_size)SH /Helvetica SF 12446 XM (field is used to describe the size) 168 W( of the message to be sent, or the maximum size of the)169 W 7200 26297 MT (message which can be received. The size includes the header and inline data and is given in) 14 W( bytes. The)13 W /Courier SF 7200 27723 MT (msg_simple)SH /Helvetica SF 13610 XM (field is used to) 132 W( indicate that no ports or out-of-line data are contained in the body. The)133 W /Courier SF 7200 29149 MT (msg_id)SH /Helvetica SF 11226 XM (field may be used by user programs to identify the meaning of this message) 148 W( to the intended)147 W 7200 30575 MT (recipient.)SH 8312 33142 MT (The variable data part of a message) 32 W( consists of an array of descriptors and data. Each data descriptor)33 W 7200 34568 MT (is of the form:)SH /Courier SF 9600 35974 MT (typedef struct {)SH 14400 37005 MT (unsigned int) SH( msg_type_name) 1800 W( : 8,)SH 28800 38036 MT (/* What kind of data */)SH 24000 39067 MT (msg_type_size : 8,)SH 28800 40098 MT (/* How many bits is each item */)SH 24000 41129 MT (msg_type_number : 12,)SH 28800 42160 MT (/* How many items are there */)SH 24000 43191 MT (msg_type_inline : 1,)SH 28800 44222 MT (/* If true, actual data follows;)SH 29400 45253 MT (* else) 600 W( a pointer to the data */)SH 24000 46284 MT (msg_type_longform : 1,)SH 28800 47315 MT (/* Name, size, number follow */)SH 24000 48346 MT (msg_type_deallocate : 1;)SH 28800 49377 MT (/* Deallocate port rights or memory */)SH 9600 50408 MT (} msg_type_t;)SH 7200 52280 MT (msg_type_name)SH /Helvetica SF 16462 XM (describes the basic type of) 88 W( data comprising this object. There are several system-)87 W 16096 53423 MT (defined data types, including:)SH /Symbol SF 18138 55366 MT (\267)SH /Helvetica SF 18876 XM (Ports, including combinations of send, receive, and ownership rights,)SH /Symbol SF 18138 57081 MT (\267)SH /Helvetica SF 18876 XM (Port and port set) 102 W( names. This is the same language data type as port)103 W 18876 58224 MT (rights, but the message only carries a task's name) 30 W( for a port and doesn't)29 W 18876 59367 MT (cause any transferal of rights.)SH /Symbol SF 18138 61082 MT (\267)SH /Helvetica SF 18876 XM (Simple data types, such as integers,) 351 W( characters, and floating point)352 W 18876 62225 MT (values.)SH /Courier SF 7200 64097 MT (msg_type_size)SH /Helvetica SF 16374 XM (indicates the size in bits of the basic object named in the)SH /Courier SF 41609 XM (msg_type_name)SH /Helvetica SF 49687 XM (field.)SH /Courier SF 7200 65723 MT (msg_type_number)SH /Helvetica SF 16096 66866 MT (indicates the number of items of the basic data type present after the type descriptor.)SH /Courier SF 7200 68492 MT (msg_type_inline)SH /Helvetica SF 16096 69635 MT (indicates that the actual data is included after) 13 W( the type descriptor; otherwise, the word)12 W 16096 70778 MT (following the descriptor is a pointer to the data to be sent.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 6 7 BS 0 SI 10 /Helvetica-Bold AF 30322 4329 MT (6)SH /Courier SF 7200 7824 MT (msg_type_deallocate)SH /Helvetica SF 16096 8967 MT (indicates that the port rights and/or data pointed to in this) 11 W( object are to be deallocated)10 W 16096 10110 MT (after the queueing of this message.) 260 W( Receive) 799 W( and ownership rights may not be)261 W 16096 11253 MT (deallocated with)SH /Courier SF 23544 XM (msg_type_deallocate)SH /Helvetica SF (.)SH /Courier SF 7200 12879 MT (msg_type_longform)SH /Helvetica SF 16096 14022 MT (indicates that the name, size, and number fields were too) 92 W( long to fit in the structure)93 W 16096 15165 MT (described above. Instead, the data type descriptor is described by the following)222 W 16096 16308 MT (structure:)SH /Courier SF 18496 17714 MT (typedef struct {)SH 23296 18745 MT (msg_type_t msg_type_header;)3000 W 23296 19776 MT (short msg_type_long_name;)6000 W 23296 20807 MT (short msg_type_long_size;)6000 W 23296 21838 MT (int msg_type_long_number;)7200 W 18496 22869 MT (} msg_type_long_t;)SH /Helvetica SF 8312 25436 MT (A data item or a pointer to data follows each data descriptor.)SH 8312 28003 MT (All the C types and constants) 678 W( needed to use the message functions are defined in)679 W /Courier SF 7200 29429 MT ()SH /Helvetica SF (. The declarations in this section are taken from this file.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 7 8 BS 0 SI 10 /Helvetica-Bold AF 30322 4329 MT (7)SH 12 SS 7200 8075 MT (msg_send)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 11053 MT (msg_return_t msg_send\050header, option, timeout\051)SH 12000 12084 MT (msg_header_t *header;)1800 W 12000 13115 MT (msg_option_t option;)1800 W 12000 14146 MT (msg_timeout_t timeout;)1200 W 12 /Helvetica-Bold AF 7200 17163 MT (Arguments)SH 10 /Courier AF 10904 19035 MT (header)SH /Helvetica SF 19800 XM (The address of the message to be sent. A message consists of a fixed) 33 W( sized)32 W 19800 20178 MT (header followed by a variable number of data) 173 W( descriptors and data items.)174 W 19800 21321 MT (See)SH /Courier SF 21857 XM ()SH /Helvetica SF 31735 XM (for a definition of the message structure.)SH /Courier SF 10904 22947 MT (timeout)SH /Helvetica SF 19800 XM (In the event that the destination port is full and the)133 W /Courier SF 43666 XM (SEND_TIMEOUT)SH /Helvetica SF 51276 XM (option)SH 19800 24090 MT (has been specified, this value specifies the maximum) 502 W( wait time \050in)503 W 19800 25233 MT (milliseconds\051.)SH /Courier SF 10904 26859 MT (option)SH /Helvetica SF 19800 XM (The failure conditions under) 56 W( which)55 W /Courier SF 35529 XM (msg_send)SH /Helvetica SF 40662 XM (should terminate; the value of)55 W 19800 28002 MT (this parameter is an or'ed combination) 89 W( of the following two options. Unless)90 W 19800 29145 MT (one of the two following) 337 W( values for the)336 W /Courier SF 39501 XM (option)SH /Helvetica SF 43715 XM (parameter is explicitly)336 W 19800 30288 MT (specified,)SH /Courier SF 24647 XM (msg_send)SH /Helvetica SF 30070 XM (does not) 345 W( return until the message is successfully)346 W 19800 31431 MT (queued for the intended receiver.)SH /Courier SF 10904 33057 MT (SEND_TIMEOUT)SH /Helvetica SF 19800 XM (specifies that the)315 W /Courier SF 28527 XM (msg_send)SH /Helvetica SF 33920 XM (request should) 315 W( terminate after the timeout)314 W 19800 34200 MT (period has elapsed, even if the kernel has been unable to) 339 W( queue the)340 W 19800 35343 MT (message.)SH /Courier SF 10904 36969 MT (SEND_NOTIFY)SH /Helvetica SF 19800 XM (allows the sender to) 260 W( give exactly one message to the operating system)259 W 19800 38112 MT (without being suspended should the destination port be full.) 97 W( When) 474 W( another)98 W 19800 39255 MT (message can) 75 W( be forced to the receiving port's queue using SEND_NOTIFY,)74 W 19800 40398 MT (the sending task receives a NOTIFY_MSG_ACCEPTED notification. A)343 W 19800 41541 MT (second attempt to send a message with) 406 W( the notify option before the)405 W 19800 42684 MT (notification arrives results in an) 145 W( error. If)146 W /Courier SF 38748 XM (SEND_TIMEOUT)SH /Helvetica SF 46372 XM (is also specified,)146 W /Courier SF 19800 43827 MT (msg_send)SH /Helvetica SF 25017 XM (will wait until the specified timeout has elapsed) 139 W( before invoking)138 W 19800 44970 MT (the)SH /Courier SF 21468 XM (SEND_NOTIFY)SH /Helvetica SF 28346 XM (option.)SH /Courier SF 10904 46596 MT (SEND_INTERRUPT)SH /Helvetica SF 19800 XM (Specifies that)116 W /Courier SF 26313 XM (msg_send)SH /Helvetica SF 31507 XM (should return if a software interrupt occurs in) 116 W( this)117 W 19800 47739 MT (thread.)SH /Courier SF 10904 49365 MT (MSG_OPTION_NONE)SH /Helvetica SF 19800 50508 MT (A constant defined as zero which may) 68 W( be used to specify that neither of the)69 W 19800 51651 MT (previous options are wanted.)SH 12 /Helvetica-Bold AF 7200 53669 MT (Description)SH 10 /Courier AF 8312 55168 MT (msg_send)SH /Helvetica SF 13556 XM (transmits a message from the current task to) 166 W( the remote port specified in the message)165 W 7200 56594 MT (header field \050)7 W /Courier SF (msg_remote_port)SH /Helvetica SF (\051. The) 293 W( message consists of its header, followed by a variable number of)8 W 7200 58020 MT (data descriptors and data items. \050See the introduction to this section for details on message formatting.\051)SH 8312 60587 MT (If the)98 W /Courier SF 11010 XM (msg_local_port)SH /Helvetica SF 19786 XM (field is not set to)98 W /Courier SF 27780 XM (PORT_NULL)SH /Helvetica SF (, send rights to that port will) 98 W( be passed to the)97 W 7200 62013 MT (receiver of this message. The receiver task may use that port to send a reply to this message.)SH 8312 64580 MT (If the)109 W /Courier SF 11032 XM (SEND_NOTIFY)SH /Helvetica SF 18019 XM (option is used and this call returns a)109 W /Courier SF 35121 XM (SEND_WILL_NOTIFY)SH /Helvetica SF 45109 XM (code, then the user)110 W 7200 66006 MT (can expect to receive a notify message from the kernel. This message will either) 608 W( be a)607 W /Courier SF 7200 67432 MT (NOTIFY_MSG_ACCEPTED)SH /Helvetica SF 18993 XM (or a)115 W /Courier SF 21224 XM (NOTIFY_PORT_DELETED)SH /Helvetica SF 33017 XM (message depending on what happened) 115 W( to the)116 W 7200 68858 MT (queued message. The first and only data item in these messages is the port to which the) 242 W( original)241 W 7200 70284 MT (message was sent. The ids and formats for these messages are defined in)SH /Courier SF 40771 XM ()SH /Helvetica SF (.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 8 9 BS 0 SI 10 /Helvetica-Bold AF 30322 4329 MT (8)SH 12 SS 7200 8075 MT (Returns)SH 10 /Courier AF 10904 9947 MT (SEND_SUCCESS)SH /Helvetica SF 19800 XM (The message has been queued for the destination port.)SH /Courier SF 10904 11573 MT (SEND_INVALID_MEMORY)SH /Helvetica SF 19800 12716 MT (The message header or body was not readable by) 147 W( the calling task, or the)146 W 19800 13859 MT (message body specified out-of-line data which was not readable.)SH /Courier SF 10904 15485 MT (SEND_INVALID_PORT)SH /Helvetica SF 19800 16628 MT (The message refers to a name for which the current task does not have)198 W 19800 17771 MT (access, or to which access) 29 W( was explicitly removed from the current task \050see)30 W /Courier SF 19800 18914 MT (port_deallocate)SH /Helvetica SF (\051 while waiting) 342 W( for the message to be posted, or a)341 W /Courier SF 19800 20057 MT (msg_type_name)SH /Helvetica SF 27922 XM (field in the message specifies rights that) 44 W( the name doesn't)45 W 19800 21200 MT (denote in the task \050eg, specifying)222 W /Courier SF 36029 XM (MSG_TYPE_SEND)SH /Helvetica SF 44329 XM (and supplying a port)222 W 19800 22343 MT (set's name\051.)SH /Courier SF 10904 23969 MT (SEND_TIMED_OUT)SH /Helvetica SF 19800 XM (The message was not sent since the destination port was still) 270 W( full after)271 W /Courier SF 19800 25112 MT (timeout)SH /Helvetica SF 24278 XM (milliseconds.)SH /Courier SF 10904 26738 MT (SEND_WILL_NOTIFY)SH /Helvetica SF 19800 27881 MT (The destination port was) 62 W( full but the)63 W /Courier SF 36302 XM (SEND_NOTIFY)SH /Helvetica SF 43243 XM (option was specified. A)63 W 19800 29024 MT (notification message will be sent when the message can be posted.)SH /Courier SF 10904 30650 MT (SEND_NOTIFY_IN_PROGRESS)SH /Helvetica SF 19800 31793 MT (The)SH /Courier SF 21859 XM (SEND_NOTIFY)SH /Helvetica SF 28795 XM (option was) 58 W( specified but a notification request is already)59 W 19800 32936 MT (outstanding for this thread and given destination port.)SH 12 /Helvetica-Bold AF 7200 34954 MT (See Also)SH 10 /Courier AF 8312 36380 MT (msg_receive, msg_rpc)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 9 10 BS 0 SI 10 /Helvetica-Bold AF 30322 4329 MT (9)SH 12 SS 7200 8075 MT (msg_receive)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 10595 MT (#include )SH 7200 12084 MT (msg_return_t msg_receive\050header, option, timeout\051)SH 12000 13115 MT (msg_header_t *header; /*) 1800 W( in/out */)SH 12000 14146 MT (msg_option_t option;)1800 W 12000 15177 MT (msg_timeout_t timeout;)1200 W 12 /Helvetica-Bold AF 7200 18194 MT (Arguments)SH 10 /Courier AF 10904 20066 MT (header)SH /Helvetica SF 19800 XM (The address of a buffer in which the message is) 72 W( to be received. Two fields)71 W 19800 21209 MT (of the message header must be set before the call is made:)719 W /Courier SF 19800 22352 MT (msg_local_port)SH /Helvetica SF 28570 XM (is set to the name of the port or port set from which the)92 W 19800 23495 MT (message is to be received and)51 W /Courier SF 33946 XM (msg_size)SH /Helvetica SF 39075 XM (must be set to) 51 W( the maximum size)52 W 19800 24638 MT (of the message that may be received. It must be less than or equal to the)127 W 19800 25781 MT (size of the buffer.)SH /Courier SF 10904 27407 MT (timeout)SH /Helvetica SF 19800 XM (If)SH /Courier SF 20708 XM (RCV_TIMEOUT)SH /Helvetica SF 27660 XM (is specified this value is the maximum time in) 74 W( milliseconds)75 W 19800 28550 MT (to wait for a message before giving up.)SH /Courier SF 10904 30176 MT (option)SH /Helvetica SF 19800 XM (The failure conditions under which)317 W /Courier SF 36836 XM (msg_receive)SH /Helvetica SF 44030 XM (should terminate; the)316 W 19800 31319 MT (value of this parameter) 149 W( is a bit or'd combination the following two options.)150 W 19800 32462 MT (Unless one of the two following values) 31 W( for the)30 W /Courier SF 40419 XM (option)SH /Helvetica SF 44327 XM (parameter is explicitly)30 W 19800 33605 MT (specified,)SH /Courier SF 24302 XM (msg_receive)SH /Helvetica SF 31180 XM (does not return until a message has been received.)SH /Courier SF 10904 35231 MT (RCV_TIMEOUT)SH /Helvetica SF 19800 XM (Specifies that)386 W /Courier SF 26853 XM (msg_receive)SH /Helvetica SF 34117 XM (should return when the specified timeout)386 W 19800 36374 MT (elapses, if a message has not arrived by) 254 W( that time; if not specified, the)253 W 19800 37517 MT (timeout will be ignored \050i.e. infinite\051.)SH /Courier SF 10904 39143 MT (RCV_NO_SENDERS)SH /Helvetica SF 19800 XM (Specifies that)136 W /Courier SF 26353 XM (msg_receive)SH /Helvetica SF 33367 XM (should return) 136 W( if the receiver and owner tasks)137 W 19800 40286 MT (have the only access rights to) 19 W( the port specified in the message header. \050Not)18 W 19800 41429 MT (implemented yet\051)SH /Courier SF 10904 43055 MT (RCV_INTERRUPT)SH /Helvetica SF 19800 XM (Specifies that)201 W /Courier SF 26483 XM (msg_receive)SH /Helvetica SF 33562 XM (should return when a software interrupt) 201 W( has)202 W 19800 44198 MT (occurred in this thread.)SH /Courier SF 10904 45824 MT (MSG_OPTION_NONE)SH /Helvetica SF 19800 46967 MT (Specifies that none of the above options are desired.)SH 12 /Helvetica-Bold AF 7200 48985 MT (Description)SH 10 /Courier AF 8312 50484 MT (msg_receive)SH /Helvetica SF 15281 XM (retrieves the) 91 W( next message from a port or port set specified in the)92 W /Courier SF 45600 XM (msg_local_port)SH /Helvetica SF 7200 51910 MT (field of the specified message header. If a port) 46 W( is specified, the port may not be a member of a port set.)45 W 7200 53336 MT (The)SH /Courier SF 9201 XM (msg_local_port)SH /Helvetica SF 17879 XM (field will be set to the specific port on which the message was found.)SH 8312 55903 MT (If a port set is specified, the)135 W /Courier SF 21708 XM (msg_receive)SH /Helvetica SF 28721 XM (will retrieve messages sent to any of the set's member)135 W 7200 57329 MT (ports. It) 426 W( is not an error) 74 W( for the port set to have no members, or for members to be added and removed)73 W 7200 58755 MT (from a port set while a)SH /Courier SF 17315 XM (msg_receive)SH /Helvetica SF 24193 XM (on the port set is in progress.)SH 8312 61322 MT (The message consists of its header, followed by a variable amount of data; the) 211 W( message header)212 W 7200 62748 MT (supplied to)5 W /Courier SF 12324 XM (msg_receive)SH /Helvetica SF 19207 XM (must specify the maximum size of) 5 W( the message which can be received into the)4 W 7200 64174 MT (buffer provided. \050See the introduction to this section for details on message formatting\051.)SH 8312 66741 MT (If no messages are present on the port\050s\051 in question,)32 W /Courier SF 32644 XM (msg_receive)SH /Helvetica SF 39554 XM (will wait until a message arrives,)33 W 7200 68167 MT (or until one of the specified termination conditions is met \050see) 227 W( above for discussion of the)226 W /Courier SF 50400 XM (option)SH /Helvetica SF 7200 69593 MT (parameter\051.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 10 11 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (10)SH /Helvetica SF 8312 7929 MT (If the received) 38 W( messages contains out-of-line data \050i.e. for which the)39 W /Courier SF 38975 XM (msg_type_inline)SH /Helvetica SF 48292 XM (attribute was)39 W 7200 9355 MT (specified as)53 W /Courier SF 12864 XM (FALSE)SH /Helvetica SF (\051, the data will) 53 W( be returned in a newly-allocated region of memory; the message body)52 W 7200 10781 MT (will contain a pointer to that new region. \050See)53 W /Courier SF 28240 XM (vm_allocate)SH /Helvetica SF 35171 XM (call for a description of the state of newly-)54 W 7200 12207 MT (allocated memory.\051 The user may wish to deallocte this memory when the data is no longer needed.)SH 12 /Helvetica-Bold AF 7200 14193 MT (Returns)SH 10 /Courier AF 10904 16065 MT (RCV_SUCCESS)SH /Helvetica SF 19800 XM (The message has been received.)SH /Courier SF 10904 17691 MT (RCV_INVALID_MEMORY)SH /Helvetica SF 19800 18834 MT (The message specified was not writable by the calling task.)SH /Courier SF 10904 20460 MT (RCV_INVALID_PORT)SH /Helvetica SF 19800 21603 MT (An attempt was made to) 50 W( receive on a port to which the calling task does not)49 W 19800 22746 MT (have the proper access, or which was deallocated) 27 W( \050see)28 W /Courier SF 44667 XM (port_deallocate)SH /Helvetica SF (\051)SH 19800 23889 MT (while waiting for a message.)SH /Courier SF 10904 25515 MT (RCV_TOO_LARGE)SH /Helvetica SF 19800 XM (The message header and body combined) 93 W( are larger than the size specified)92 W 19800 26658 MT (by)SH /Courier SF 21134 XM (msg_size)SH /Helvetica SF (.)SH /Courier SF 10904 28284 MT (RCV_NOT_ENOUGH_MEMORY)SH /Helvetica SF 19800 29427 MT (The message to be received contains more out-of-line data than can) 234 W( be)233 W 19800 30570 MT (allocated in the receiving task.)SH /Courier SF 10904 32196 MT (RCV_TIMED_OUT)SH /Helvetica SF 19800 XM (The message was not received after)SH /Courier SF 36196 XM (timeout)SH /Helvetica SF 40674 XM (milliseconds.)SH /Courier SF 10904 33822 MT (RCV_ONLY_SENDER)SH /Helvetica SF 19800 34965 MT (An attempt was made to receive on a) 97 W( port to which only the receive and/or)96 W 19800 36108 MT (owner have access, and the)SH /Courier SF 32529 XM (RCV_NO_SENDERS)SH /Helvetica SF 41207 XM (option was specified.)SH /Courier SF 10904 37734 MT (RCV_INTERRUPTED)SH /Helvetica SF 19800 38877 MT (A software interrupt occurred.)SH /Courier SF 10904 40503 MT (RCV_PORT_CHANGE)SH /Helvetica SF 19800 41646 MT (The port) 244 W( specified was moved into a port set during the duration of the)245 W /Courier SF 19800 42789 MT (msg_receive)SH /Helvetica SF 26678 XM (call.)SH 12 /Helvetica-Bold AF 7200 44807 MT (See Also)SH 10 /Courier AF 8312 46233 MT (msg_rpc, msg_send)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 11 12 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (11)SH 12 SS 7200 8075 MT (msg_rpc)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 10595 MT (#include )SH 7200 12084 MT (msg_return_t msg_rpc\050header, option, rcv_size,)SH 21600 13115 MT (send_timeout, rcv_timeout\051)SH 12000 14146 MT (msg_header_t *header; /*) 1800 W( in/out */)SH 12000 15177 MT (msg_option_t option;)1800 W 12000 16208 MT (msg_size_t rcv_size;)3000 W 12000 17239 MT (msg_timeout_t send_timeout;)1200 W 12000 18270 MT (msg_timeout_t rcv_timeout;)1200 W 12 /Helvetica-Bold AF 7200 21287 MT (Arguments)SH 10 /Courier AF 10904 23159 MT (header)SH /Helvetica SF 19800 XM (Address of a message buffer which will be used for both)199 W /Courier SF 47056 XM (msg_send)SH /Helvetica SF 52332 XM (and)SH /Courier SF 19800 24302 MT (msg_receive.)SH /Helvetica SF 27998 XM (This buffer contains a message header followed by the)221 W 19800 25445 MT (data for the message to be) 30 W( sent. The)29 W /Courier SF 36965 XM (msg_remote_port)SH /Helvetica SF 46272 XM (field specifies the)29 W 19800 26588 MT (port to which the message is) 292 W( to be sent. The)293 W /Courier SF 43195 XM (msg_local_port)SH /Helvetica SF 52166 XM (field)SH 19800 27731 MT (specifies the port on which a message is then to be received; if this port) 105 W( is)104 W 19800 28874 MT (the special) 537 W( value)538 W /Courier SF 29139 XM (PORT_DEFAULT)SH /Helvetica SF (, it will be replaced by the value)538 W /Courier SF 19800 30017 MT (PORT_NULL)SH /Helvetica SF 25478 XM (for the purposes of the)SH /Courier SF 35762 XM (msg_send)SH /Helvetica SF 40840 XM (operation.)SH /Courier SF 10904 31643 MT (option)SH /Helvetica SF 19800 XM (A union of) 251 W( the)250 W /Courier SF 27251 XM (option)SH /Helvetica SF 31379 XM (parameters for the component operations. \050see)250 W /Courier SF 19800 32786 MT (msg_send)SH /Helvetica SF 24878 XM (and)SH /Courier SF 26824 XM (msg_receive)SH /Helvetica SF (\051)SH /Courier SF 10904 34412 MT (rcv_size)SH /Helvetica SF 19800 XM (The maximum size allowed for the received message; this must be) 34 W( less than)35 W 19800 35555 MT (or equal to the size of the message buffer. The)238 W /Courier SF 43652 XM (msg_size)SH /Helvetica SF 48968 XM (field in the)237 W 19800 36698 MT (header specifies the size of the message to be sent.)SH /Courier SF 10904 38324 MT (send_timeout;rcv_timeout)SH /Helvetica SF 19800 39467 MT (The timeout values to be applied to the component operations. These are)158 W 19800 40610 MT (only used if the options)SH /Courier SF 30306 XM (SEND_TIMEOUT)SH /Helvetica SF 37784 XM (and/or)SH /Courier SF 40897 XM (RCV_TIMEOUT)SH /Helvetica SF 47775 XM (are specified.)SH 12 /Helvetica-Bold AF 7200 42628 MT (Description)SH 10 /Courier AF 8312 44127 MT (msg_rpc)SH /Helvetica SF 12895 XM (is a hybrid call which performs a)105 W /Courier SF 28134 XM (msg_send)SH /Helvetica SF 33317 XM (followed by a)105 W /Courier SF 39746 XM (msg_receive)SH /Helvetica SF (, using) 105 W( the same)106 W 7200 45553 MT (message buffer.)SH 12 /Helvetica-Bold AF 7200 47539 MT (Returns)SH 10 /Courier AF 10904 49411 MT (RPC_SUCCESS)SH /Helvetica SF 19800 XM (message was successfully sent and a reply was recived.)SH /Courier SF 10904 51037 MT (FAILURES)SH /Helvetica SF 19800 XM (are the same as) 123 W( those for)122 W /Courier SF 32152 XM (msg_send)SH /Helvetica SF 37352 XM (and)SH /Courier SF 39420 XM (msg_receive)SH /Helvetica SF (; any error during)122 W 19800 52180 MT (the)SH /Courier SF 21468 XM (msg_send)SH /Helvetica SF 26546 XM (portion will terminate the call.)SH 12 /Helvetica-Bold AF 7200 54198 MT (See Also)SH 10 /Courier AF 8312 55624 MT (msg_receive, msg_send)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 12 13 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (12)SH 12 SS 7200 8075 MT (3. Port and port set primitives)SH 8 SS 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 13 14 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (13)SH 12 SS 7200 8075 MT (port_names)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t port_names\050task,)SH 22200 13115 MT (portnames, portnamesCnt,)SH 22200 14146 MT (port_types, port_typesCnt\051)SH 12000 15177 MT (task_t task;)SH 12000 16208 MT (port_name_array_t *portnames;) SH( /*) 1200 W( out array */)SH 12000 17239 MT (unsigned int *portnamesCnt;) SH( /*) 2400 W( out */)SH 12000 18270 MT (port_type_array_t *port_types; /* out array */)SH 12000 19301 MT (unsigned int *port_typesCnt;) SH( /*) 1800 W( out */)SH 12 /Helvetica-Bold AF 7200 22318 MT (Arguments)SH 10 /Courier AF 10904 24190 MT (task)SH /Helvetica SF 19800 XM (The task whose port name space is queried.)SH /Courier SF 10904 25816 MT (portnames)SH /Helvetica SF 19800 XM (The names of the ports and port sets in the task's) 123 W( port name space, in no)124 W 19800 26959 MT (particular order.)SH /Courier SF 10904 28585 MT (portnamesCnt)SH /Helvetica SF 19800 XM (The number of names returned.)SH /Courier SF 10904 30211 MT (port_types)SH /Helvetica SF 19800 XM (The type of each corresponding name. Indicates what) 70 W( kind of right the task)69 W 19800 31354 MT (holds for the port or port set.)SH /Courier SF 10904 32980 MT (port_typesCnt)SH /Helvetica SF 19800 XM (Should be the same as portnamesCnt.)SH 12 /Helvetica-Bold AF 7200 34998 MT (Description)SH 10 /Courier AF 8312 36497 MT (port_names)SH /Helvetica SF 14726 XM (returns the currently valid ports and port set names of)137 W /Courier SF 40051 XM (task)SH /Helvetica SF (. For) 552 W( each name, it also)137 W 7200 37923 MT (returns what type of rights)87 W /Courier SF 19417 XM (task)SH /Helvetica SF 22181 XM (holds.)SH /Courier SF 25213 XM (portnames)SH /Helvetica SF 30977 XM (and)SH /Courier SF 33009 XM (port_types)SH /Helvetica SF 39373 XM (are arrays that are automatically)86 W 7200 39349 MT (allocated when the reply message is received. The user may wish to)110 W /Courier SF 39032 XM (vm_deallocate)SH /Helvetica SF 47220 XM (them when) 110 W( the)111 W 7200 40775 MT (data is no longer needed.)SH 12 /Helvetica-Bold AF 7200 42761 MT (Returns)SH 10 /Courier AF 10904 44633 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 46259 MT (KERN_INVALID_ARGUMENT)SH 19800 47402 MT (task)SH /Helvetica SF 22478 XM (was invalid.)SH 12 /Helvetica-Bold AF 7200 49420 MT (See Also)SH 10 /Courier AF 8312 50919 MT (port_type)SH /Helvetica SF (,)SH /Courier SF 14268 XM (port_status)SH /Helvetica SF (,)SH /Courier SF 21424 XM (port_set_status)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 14 15 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (14)SH 12 SS 7200 8075 MT (port_type)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t port_type\050task, port_name, port_type\051)SH 12000 13115 MT (task_t task;)SH 12000 14146 MT (port_name_t port_name;)SH 12000 15177 MT (port_type_t *port_type;) SH( /*) 4800 W( out */)SH 12 /Helvetica-Bold AF 7200 18194 MT (Arguments)SH 10 /Courier AF 10904 20066 MT (task)SH /Helvetica SF 19800 XM (The task whose port name space is queried.)SH /Courier SF 10904 21692 MT (port_name)SH /Helvetica SF 19800 XM (The name being queried.)SH /Courier SF 10904 23318 MT (port_type)SH /Helvetica SF 19800 XM (The type of the name. Indicates what kind of right the task holds) 32 W( for the port)33 W 19800 24461 MT (or port set.)SH 12 /Helvetica-Bold AF 7200 26479 MT (Description)SH 10 /Courier AF 8312 27978 MT (port_type)SH /Helvetica SF 13990 XM (returns information about)SH /Courier SF 25384 XM (task)SH /Helvetica SF ('s rights for a specific name in its port name space.)SH 12 /Helvetica-Bold AF 7200 29964 MT (Returns)SH 10 /Courier AF 10904 31836 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 33462 MT (KERN_INVALID_ARGUMENT)SH 19800 34605 MT (task)SH /Helvetica SF 22478 XM (was invalid or)SH /Courier SF 28813 XM (task)SH /Helvetica SF 31491 XM (did not have any rights named)SH /Courier SF 45165 XM (port_name)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 36623 MT (See Also)SH 10 /Courier AF 8312 38122 MT (port_names)SH /Helvetica SF (,)SH /Courier SF 14868 XM (port_status)SH /Helvetica SF (,)SH /Courier SF 22024 XM (port_set_status)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 15 16 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (15)SH 12 SS 7200 8075 MT (port_rename)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t port_rename\050task, old_name, new_name\051)SH 12000 13115 MT (task_t task;)SH 12000 14146 MT (port_name_t old_name;)SH 12000 15177 MT (port_name_t new_name;)SH 12 /Helvetica-Bold AF 7200 18194 MT (Arguments)SH 10 /Courier AF 10904 20066 MT (task)SH /Helvetica SF 19800 XM (The task whose port name space is changed.)SH /Courier SF 10904 21692 MT (old_name)SH /Helvetica SF 19800 XM (The name being changed.)SH /Courier SF 10904 23318 MT (new_name)SH /Helvetica SF 19800 XM (The new value for)SH /Courier SF 28026 XM (old_name)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 25336 MT (Description)SH 10 /Courier AF 8312 26835 MT (port_rename)SH /Helvetica SF 15250 XM (changes the name) 60 W( by which a port or port set is known to)61 W /Courier SF 41609 XM (task)SH /Helvetica SF (.)SH /Courier SF 44965 XM (new_name)SH /Helvetica SF 50104 XM (must not)61 W 7200 28261 MT (already be in use, and it can't be a distinguished value like)SH /Courier SF 33269 XM (PORT_NULL)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 30247 MT (Returns)SH 10 /Courier AF 10904 32119 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 33745 MT (KERN_NAME_EXISTS)SH 19800 34888 MT (task)SH /Helvetica SF 22478 XM (already has a right named)SH /Courier SF 34317 XM (new_name)SH /Helvetica SF (.)SH /Courier SF 10904 36514 MT (KERN_INVALID_ARGUMENT)SH 19800 37657 MT (task)SH /Helvetica SF 22717 XM (was invalid or)239 W /Courier SF 29769 XM (task)SH /Helvetica SF 32686 XM (did not have any rights named)239 W /Courier SF 47794 XM (old_name)SH /Helvetica SF 53111 XM (or)SH /Courier SF 19800 38800 MT (new_name)SH /Helvetica SF 24878 XM (was an invalid name.)SH 12 /Helvetica-Bold AF 7200 40818 MT (See Also)SH 10 /Courier AF 8312 42244 MT (port_names)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 16 17 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (16)SH 12 SS 7200 8075 MT (port_allocate)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t port_allocate\050task, port_name\051)SH 12000 13115 MT (task_t task;)SH 12000 14146 MT (port_name_t *port_name;) SH( /*) 4800 W( out */)SH 12 /Helvetica-Bold AF 7200 17163 MT (Arguments)SH 10 /Courier AF 10904 19035 MT (task)SH /Helvetica SF 19800 XM (The task in which the new port is created.)SH /Courier SF 10904 20661 MT (port_name)SH /Helvetica SF 19800 XM (The task's name for the new port.)SH 12 /Helvetica-Bold AF 7200 22679 MT (Description)SH 10 /Courier AF 8312 24178 MT (port_allocate)SH /Helvetica SF 16625 XM (causes a) 235 W( port to be created for the specified task; the resulting port's name is)236 W 7200 25604 MT (returned in)27 W /Courier SF 12312 XM (port_name)SH /Helvetica SF (. The) 330 W( target task initially has all three access rights to the port. If the caller is not)26 W 7200 27030 MT (the task specified by)26 W /Courier SF 16642 XM (task)SH /Helvetica SF (, then it does not have any rights to the port. The new port is not a member) 26 W( of)27 W 7200 28456 MT (any port set.)SH 12 /Helvetica-Bold AF 7200 30442 MT (Returns)SH 10 /Courier AF 10904 32314 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 33940 MT (KERN_INVALID_ARGUMENT)SH 19800 35083 MT (task)SH /Helvetica SF 22478 XM (was invalid.)SH /Courier SF 10904 36709 MT (KERN_RESOURCE_SHORTAGE)SH /Helvetica SF 19800 37852 MT (The kernel ran out of memory.)SH 12 /Helvetica-Bold AF 7200 39870 MT (See Also)SH 10 /Courier AF 8312 41296 MT (port_deallocate)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 17 18 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (17)SH 12 SS 7200 8075 MT (port_deallocate)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t port_deallocate\050task, port_name\051)SH 12000 13115 MT (task_t task;)SH 12000 14146 MT (port_name_t port_name;)SH 12 /Helvetica-Bold AF 7200 17163 MT (Arguments)SH 10 /Courier AF 10904 19035 MT (task)SH /Helvetica SF 19800 XM (The task from which to remove the port rights.)SH /Courier SF 10904 20661 MT (port_name)SH 19800 XM (task)SH /Helvetica SF ('s name for the rights to be removed.)SH 12 /Helvetica-Bold AF 7200 22679 MT (Description)SH 10 /Courier AF 8312 24178 MT (port_deallocate)SH /Helvetica SF 17590 XM (requests that the target task's rights for a port be removed.)SH 8312 26745 MT (If)SH /Courier SF 9174 XM (task)SH /Helvetica SF 11880 XM (has receive rights for the port, and) 28 W( the port is a member of a port set, the port is removed from)27 W 7200 28171 MT (the port set.)SH 8312 30738 MT (If the target task is both the receiver and owner for the) 105 W( port, then the port is destroyed and all other)106 W 7200 32164 MT (tasks with send access are notified of the port's destruction. If the task) 94 W( is only the receiver for the port,)93 W 7200 33590 MT (receive rights are sent to the owner. If the task is only the owner of) 42 W( the port, ownership rights are sent to)43 W 7200 35016 MT (the receiver.)SH 12 /Helvetica-Bold AF 7200 37002 MT (Returns)SH 10 /Courier AF 10904 38874 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 40500 MT (KERN_INVALID_ARGUMENT)SH 19800 41643 MT (task)SH /Helvetica SF 22478 XM (was invalid or)SH /Courier SF 28813 XM (port_name)SH /Helvetica SF 34491 XM (does not name a valid port.)SH 12 /Helvetica-Bold AF 7200 43661 MT (See Also)SH 10 /Courier AF 8312 45087 MT (port_allocate)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 18 19 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (18)SH 12 SS 7200 8075 MT (port_status)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t port_status\050task, port_name, enabled,)SH 22800 13115 MT (num_msgs, backlog, owner, receiver\051)SH 12000 14146 MT (task_t task;)SH 12000 15177 MT (port_name_t port_name;)SH 12000 16208 MT (port_set_name_t *enabled;) SH( /*) 3600 W( out */)SH 12000 17239 MT (int *num_msgs;) SH( /*) 10200 W( out */)SH 12000 18270 MT (int *backlog;) SH( /*) 10800 W( out */)SH 12000 19301 MT (boolean_t *owner;) SH( /*) 8400 W( out */)SH 12000 20332 MT (boolean_t *receiver;) SH( /*) 6600 W( out */)SH 12 /Helvetica-Bold AF 7200 23349 MT (Arguments)SH 10 /Courier AF 10904 25221 MT (task)SH /Helvetica SF 19800 XM (The task owning the port right in question.)SH /Courier SF 10904 26847 MT (port_name)SH 19800 XM (task)SH /Helvetica SF ('s name for the port right.)SH /Courier SF 10904 28473 MT (enabled)SH /Helvetica SF 19800 XM (Returns)SH /Courier SF 23703 XM (task)SH /Helvetica SF ('s name for the port set) 124 W( which the named port belongs to, or)125 W /Courier SF 19800 29616 MT (PORT_NULL)SH /Helvetica SF 25478 XM (if it isn't in a set.)SH /Courier SF 10904 31242 MT (num_msgs)SH /Helvetica SF 19800 XM (The number of messages queued on this port.)SH /Courier SF 10904 32868 MT (backlog)SH /Helvetica SF 19800 XM (The number of messages which may be queued to) 62 W( this port without causing)61 W 19800 34011 MT (the sender to block.)SH /Courier SF 10904 35637 MT (owner)SH /Helvetica SF 19800 XM (Returned as true iff the)SH /Courier SF 30250 XM (task)SH /Helvetica SF 32928 XM (is the owner of the port.)SH /Courier SF 10904 37263 MT (receiver)SH /Helvetica SF 19800 XM (Returned as true iff the)SH /Courier SF 30250 XM (task)SH /Helvetica SF 32928 XM (is the receive of the port.)SH 12 /Helvetica-Bold AF 7200 39281 MT (Description)SH 10 /Courier AF 8312 40780 MT (port_status)SH /Helvetica SF 15386 XM (returns the current status associated with)196 W /Courier SF 35070 XM (task)SH /Helvetica SF ('s port) 196 W( right named)197 W /Courier SF 46816 XM (port_name)SH /Helvetica SF (. If)672 W /Courier SF 7200 42206 MT (receiver)SH /Helvetica SF 12565 XM (isn't true, then the)287 W /Courier SF 21940 XM (enabled)SH /Helvetica SF (,)SH /Courier SF 26983 XM (num_msg)SH /Helvetica SF (, and)287 W /Courier SF 34259 XM (backlog)SH /Helvetica SF 39024 XM (arguments don't return anything)286 W 7200 43632 MT (meaningful.)SH 12 /Helvetica-Bold AF 7200 45618 MT (Returns)SH 10 /Courier AF 10904 47490 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 49116 MT (KERN_INVALID_ARGUMENT)SH 19800 50259 MT (task)SH /Helvetica SF 22478 XM (was invalid or)SH /Courier SF 28813 XM (port_name)SH /Helvetica SF 34491 XM (does not name a valid port.)SH 12 /Helvetica-Bold AF 7200 52277 MT (See Also)SH 10 /Courier AF 8312 53776 MT (port_set_backlog)SH /Helvetica SF (,)SH /Courier SF 18468 XM (port_set_status)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 19 20 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (19)SH 12 SS 7200 8075 MT (port_set_backlog)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t port_set_backlog\050task, port_name, backlog\051)SH 12000 13115 MT (task_t task;)SH 12000 14146 MT (port_name_t port_name;)SH 12000 15177 MT (int backlog;)SH 12 /Helvetica-Bold AF 7200 18194 MT (Arguments)SH 10 /Courier AF 10904 20066 MT (task)SH /Helvetica SF 19800 XM (The task owning the named port right.)SH /Courier SF 10904 21692 MT (port_name)SH 19800 XM (task)SH /Helvetica SF ('s name for the port right.)SH /Courier SF 10904 23318 MT (backlog)SH /Helvetica SF 19800 XM (The new backlog to be set.)SH 12 /Helvetica-Bold AF 7200 25336 MT (Description)SH 10 /Helvetica AF 8312 26835 MT (The port's backlog value is the number of unreceived messages that are allowed in its) 21 W( message queue)20 W 7200 28261 MT (before the kernel will refuse to accept) 101 W( any more sends to that port.)102 W /Courier SF 38470 XM (port_set_backlog)SH /Helvetica SF 48450 XM (changes the)102 W 7200 29687 MT (backlog value on the specified port.)SH /Courier SF 8312 32254 MT (task)SH /Helvetica SF 10990 XM (must have receive rights for the named port.)SH 8312 34821 MT (The file)24 W /Courier SF 11917 XM ()SH /Helvetica SF 23619 XM (exports the system) 24 W( default value for a port's backlog as the constant)23 W /Courier SF 7200 36247 MT (PORT_BACKLOG_DEFAULT)SH /Helvetica SF 19478 XM (and the maximum backlog value as the constant)SH /Courier SF 41155 XM (PORT_BACKLOG_MAX)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 38233 MT (Returns)SH 10 /Courier AF 10904 40105 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 41731 MT (KERN_NOT_RECEIVER)SH 19800 42874 MT (port_name)SH /Helvetica SF 25478 XM (doesn't name receive rights in)SH /Courier SF 39039 XM (task)SH /Helvetica SF (.)SH /Courier SF 10904 44500 MT (KERN_INVALID_ARGUMENT)SH 19800 45643 MT (task)SH /Helvetica SF 22580 XM (was invalid or)102 W /Courier SF 29221 XM (port_name)SH /Helvetica SF 35001 XM (does not) 102 W( name a valid port or the desired)103 W 19800 46786 MT (backlog was non-positive or) 577 W( the desired backlog was greater than)576 W /Courier SF 19800 47929 MT (PORT_BACKLOG_MAX)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 49947 MT (See Also)SH 10 /Courier AF 8312 51446 MT (msg_send)SH /Helvetica SF (,)SH /Courier SF 13668 XM (port_status)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 20 21 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (20)SH 12 SS 7200 8075 MT (port_set_backup)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t port_set_backup\050task, primary, backup, previous\051)SH 12000 13115 MT (task_t task;)SH 12000 14146 MT (port_name_t primary;)SH 12000 15177 MT (port_t backup;)SH 12000 16208 MT (port_t *previous;) SH( /*) 3600 W( out */)SH 12 /Helvetica-Bold AF 7200 19225 MT (Arguments)SH 10 /Courier AF 10904 21097 MT (task)SH /Helvetica SF 19800 XM (The task owning the named port right.)SH /Courier SF 10904 22723 MT (primary)SH 19800 XM (task's)SH /Helvetica SF 23678 XM (name for the primary port.)SH /Courier SF 10904 24349 MT (backup)SH /Helvetica SF 19800 XM (The new backup port to be set.)SH /Courier SF 10904 25975 MT (previous)SH /Helvetica SF 19800 XM (The previous backup port.)SH 12 /Helvetica-Bold AF 7200 27993 MT (Description)SH 10 /Helvetica AF 8312 29492 MT (A backup port) 27 W( provides a automatic mechanism to transfer port receive rights to another task or thread)28 W 7200 30918 MT (in the event of a primary port's attempted death. To be more) 19 W( precise, if a primary port has a backup port,)18 W 7200 32344 MT (and the primary would have) 152 W( been destroyed by the deallocation of its receive rights, then instead the)153 W 7200 33770 MT (receive right for the primary port is sent in a notify) 32 W( message)31 W /Courier SF 34092 XM (\050NOTIFY_PORT_DESTROYED)SH /Helvetica SF (\051 to the backup)31 W 7200 35196 MT (port.)SH 8312 37763 MT (A newly allocated port does) 29 W( not have a backup port. The)30 W /Courier SF 33874 XM (port_set_backup)SH /Helvetica SF 43182 XM (call changes the backup)30 W 7200 39189 MT (of the)42 W /Courier SF 10064 XM (primary)SH /Helvetica SF 14584 XM (port. The target)42 W /Courier SF 21825 XM (task)SH /Helvetica SF 24545 XM (must hold receive) 42 W( rights for the)41 W /Courier SF 38743 XM (primary)SH /Helvetica SF 43262 XM (port. The caller supplies)41 W 7200 40615 MT (send rights for the new)56 W /Courier SF 17874 XM (backup)SH /Helvetica SF 21808 XM (port to which notification will) 56 W( be sent. The caller receives send rights for)57 W 7200 42041 MT (the)SH /Courier SF 9056 XM (previous)SH /Helvetica SF 14322 XM (backup port or)187 W /Courier SF 21553 XM (PORT_NULL)SH /Helvetica SF 27418 XM (if the target did not have a backup.)187 W /Courier SF 45000 XM (port_set_backup)SH /Helvetica SF 7200 43467 MT (works atomically, so that if one backup port is exchanged for another, the primary port is never) SH( left without)1 W 7200 44893 MT (a backup.)SH 8312 47460 MT (When the primary) 51 W( port is sent in a notify message to the backup port, the primary port is left without a)50 W 7200 48886 MT (backup port. When the task receives the notification and) 120 W( the receive rights to the primary port, it may)121 W 7200 50312 MT (wish to use)73 W /Courier SF 12698 XM (port_set_backup)SH /Helvetica SF 22048 XM (to reestablish the same or a different backup port. If the backup port is)72 W 7200 51738 MT (destroyed before the primary, then the primary port is left) 488 W( without a backup. \050A subsequent)489 W /Courier SF 7200 53164 MT (port_set_backup)SH /Helvetica SF 16478 XM (call would return)SH /Courier SF 24036 XM (PORT_NULL)SH /Helvetica SF (\051.)SH 12 /Helvetica-Bold AF 7200 55150 MT (Returns)SH 10 /Courier AF 10904 57022 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 58648 MT (KERN_NOT_RECEIVER)SH 19800 59791 MT (primary)SH /Helvetica SF 24278 XM (doesn't name receive rights in)SH /Courier SF 37839 XM (task)SH /Helvetica SF (.)SH /Courier SF 10904 61417 MT (KERN_INVALID_ARGUMENT)SH 19800 62560 MT (task)SH /Helvetica SF 22478 XM (was invalid or)SH /Courier SF 28813 XM (primary)SH /Helvetica SF 33291 XM (or)SH /Courier SF 34458 XM (backup)SH /Helvetica SF 38336 XM (do not name a valid port.)SH 12 /Helvetica-Bold AF 7200 64578 MT (See Also)SH 10 /Courier AF 8312 66004 MT (port_deallocate)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 21 22 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (21)SH 12 SS 7200 8075 MT (port_set_allocate)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t port_set_allocate\050task, set_name\051)SH 12000 13115 MT (task_t task;)SH 12000 14146 MT (port_set_name_t *set_name;) SH( /*) 3000 W( out */)SH 12 /Helvetica-Bold AF 7200 17163 MT (Arguments)SH 10 /Courier AF 10904 19035 MT (task)SH /Helvetica SF 19800 XM (The task in which the new port set is created.)SH /Courier SF 10904 20661 MT (set_name)SH /Helvetica SF 19800 XM (The task's name for the new port set.)SH 12 /Helvetica-Bold AF 7200 22679 MT (Description)SH 10 /Courier AF 8312 24178 MT (port_set_allocate)SH /Helvetica SF 18851 XM (causes a port set to be created for the specified task; the resulting set's name)61 W 7200 25604 MT (is returned in)SH /Courier SF 13258 XM (set_name)SH /Helvetica SF (. The) 278 W( new port set is empty.)SH 12 /Helvetica-Bold AF 7200 27590 MT (Returns)SH 10 /Courier AF 10904 29462 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 31088 MT (KERN_INVALID_ARGUMENT)SH 19800 32231 MT (task)SH /Helvetica SF 22478 XM (was invalid.)SH /Courier SF 10904 33857 MT (KERN_RESOURCE_SHORTAGE)SH /Helvetica SF 19800 35000 MT (The kernel ran out of memory.)SH 12 /Helvetica-Bold AF 7200 37018 MT (See Also)SH 10 /Courier AF 8312 38444 MT (port_set_deallocate)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 22 23 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (22)SH 12 SS 7200 8075 MT (port_set_deallocate)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t port_set_deallocate\050task, set_name\051)SH 12000 13115 MT (task_t task;)SH 12000 14146 MT (port_set_name_t set_name;)SH 12 /Helvetica-Bold AF 7200 17163 MT (Arguments)SH 10 /Courier AF 10904 19035 MT (task)SH /Helvetica SF 19800 XM (The task owning the port set to be destroyed.)SH /Courier SF 10904 20661 MT (set_name)SH 19800 XM (task)SH /Helvetica SF ('s name for the doomed port set.)SH 12 /Helvetica-Bold AF 7200 22679 MT (Description)SH 10 /Courier AF 8312 24178 MT (port_set_deallocate)SH /Helvetica SF 19990 XM (requests that the target task's port set be destroyed.)SH 8312 26745 MT (If the port set is non-empty, any members are first removed.)SH 12 /Helvetica-Bold AF 7200 28731 MT (Returns)SH 10 /Courier AF 10904 30603 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 32229 MT (KERN_FAILURE)SH 19800 XM (set_name)SH /Helvetica SF 25494 XM (is)SH /Courier SF 27110 XM (task)SH /Helvetica SF ('s port set used for implementing) 616 W( the obsolete)617 W /Courier SF 19800 33372 MT (port_enable)SH /Helvetica SF 26678 XM (and)SH /Courier SF 28624 XM (port_disable)SH /Helvetica SF 36102 XM (calls.)SH /Courier SF 10904 34998 MT (KERN_INVALID_ARGUMENT)SH 19800 36141 MT (task)SH /Helvetica SF 22478 XM (was invalid or)SH /Courier SF 28813 XM (set_name)SH /Helvetica SF 33891 XM (does not name a valid port set.)SH 12 /Helvetica-Bold AF 7200 38159 MT (See Also)SH 10 /Courier AF 8312 39585 MT (port_set_allocate)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 23 24 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (23)SH 12 SS 7200 8075 MT (port_set_add)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t port_set_add\050task, set_name, port_name\051)SH 12000 13115 MT (task_t task;)SH 12000 14146 MT (port_set_name_t set_name;)SH 12000 15177 MT (port_name_t port_name;)SH 12 /Helvetica-Bold AF 7200 18194 MT (Arguments)SH 10 /Courier AF 10904 20066 MT (task)SH /Helvetica SF 19800 XM (The task owning the port set and port right.)SH /Courier SF 10904 21692 MT (set_name)SH 19800 XM (task)SH /Helvetica SF ('s name for the port set.)SH /Courier SF 10904 23318 MT (port_name)SH 19800 XM (task)SH /Helvetica SF ('s name for the port.)SH 12 /Helvetica-Bold AF 7200 25336 MT (Description)SH 10 /Courier AF 8312 26835 MT (port_set_add)SH /Helvetica SF 15807 XM (moves the named port into the named port set.)17 W /Courier SF 37266 XM (task)SH /Helvetica SF 39961 XM (must have) 17 W( receive rights for the)18 W 7200 28261 MT (port.)SH 8312 30828 MT (If the port is already a member of another port set, it is removed from that set first.)SH 12 /Helvetica-Bold AF 7200 32814 MT (Returns)SH 10 /Courier AF 10904 34686 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 36312 MT (KERN_NOT_RECEIVER)SH 19800 37455 MT (port_name)SH /Helvetica SF 25478 XM (doesn't name receive rights in)SH /Courier SF 39039 XM (task)SH /Helvetica SF (.)SH /Courier SF 10904 39081 MT (KERN_INVALID_ARGUMENT)SH 19800 40224 MT (task)SH /Helvetica SF 22941 XM (was invalid) 463 W( or)462 W /Courier SF 30663 XM (set_name)SH /Helvetica SF 36203 XM (does not name a valid port set or)462 W /Courier SF 19800 41367 MT (port_name)SH /Helvetica SF 25478 XM (does not name a valid port.)SH 12 /Helvetica-Bold AF 7200 43385 MT (See Also)SH 10 /Courier AF 8312 44811 MT (port_set_remove)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 24 25 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (24)SH 12 SS 7200 8075 MT (port_set_remove)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t port_set_remove\050task, port_name\051)SH 12000 13115 MT (task_t task;)SH 12000 14146 MT (port_name_t port_name;)SH 12 /Helvetica-Bold AF 7200 17163 MT (Arguments)SH 10 /Courier AF 10904 19035 MT (task)SH /Helvetica SF 19800 XM (The task owning the receive rights and port set.)SH /Courier SF 10904 20661 MT (port_name)SH 19800 XM (task)SH /Helvetica SF ('s name for the receive rights to be removed.)SH 12 /Helvetica-Bold AF 7200 22679 MT (Description)SH 10 /Courier AF 8312 24178 MT (port_set_remove)SH /Helvetica SF 17676 XM (removes the named port from a port) 86 W( set.)87 W /Courier SF 36850 XM (task)SH /Helvetica SF 39615 XM (must have receive rights for the)87 W 7200 25604 MT (port, and the port must be a member of a port set.)SH 12 /Helvetica-Bold AF 7200 27590 MT (Returns)SH 10 /Courier AF 10904 29462 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 31088 MT (KERN_NOT_RECEIVER)SH 19800 32231 MT (port_name)SH /Helvetica SF 25478 XM (doesn't name receive rights in)SH /Courier SF 39039 XM (task)SH /Helvetica SF (.)SH /Courier SF 10904 33857 MT (KERN_NOT_IN_SET)SH /Helvetica SF 19800 35000 MT (The port isn't a member of a set.)SH /Courier SF 10904 36626 MT (KERN_INVALID_ARGUMENT)SH 19800 37769 MT (task)SH /Helvetica SF 22478 XM (was invalid or)SH /Courier SF 28813 XM (port_name)SH /Helvetica SF 34491 XM (does not name a valid port.)SH 12 /Helvetica-Bold AF 7200 39787 MT (See Also)SH 10 /Courier AF 8312 41213 MT (port_set_add)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 25 26 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (25)SH 12 SS 7200 8075 MT (port_set_status)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t port_set_status\050task, set_name, members, membersCnt\051)SH 12000 13115 MT (task_t task;)SH 12000 14146 MT (port_set_name_t set_name;)SH 12000 15177 MT (port_name_array_t *members;) SH( /*) 2400 W( out array */)SH 12000 16208 MT (unsigned int *membersCnt;) SH( /*) 3600 W( out */)SH 12 /Helvetica-Bold AF 7200 19225 MT (Arguments)SH 10 /Courier AF 10904 21097 MT (task)SH /Helvetica SF 19800 XM (The task whose port set is queried.)SH /Courier SF 10904 22723 MT (set_name)SH 19800 XM (task)SH /Helvetica SF ('s name for the port set.)SH /Courier SF 10904 24349 MT (members)SH 19800 XM (task)SH /Helvetica SF ('s names for the port set's members.)SH /Courier SF 10904 25975 MT (membersCnt)SH /Helvetica SF 19800 XM (The number of port names returned.)SH 12 /Helvetica-Bold AF 7200 27993 MT (Description)SH 10 /Courier AF 8312 29492 MT (port_set_status)SH /Helvetica SF 17762 XM (returns the members of a port set.)172 W /Courier SF 34757 XM (members)SH /Helvetica SF 39408 XM (is an array that is automatically)173 W 7200 30918 MT (allocated when the reply message is received. The user may wish to)9 W /Courier SF 37820 XM (vm_deallocate)SH /Helvetica SF 45907 XM (it when) 9 W( the data is)8 W 7200 32344 MT (no longer needed.)SH 12 /Helvetica-Bold AF 7200 34330 MT (Returns)SH 10 /Courier AF 10904 36202 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 37828 MT (KERN_INVALID_ARGUMENT)SH 19800 38971 MT (task)SH /Helvetica SF 22478 XM (was invalid or)SH /Courier SF 28813 XM (set_name)SH /Helvetica SF 33891 XM (does not name a valid port set.)SH 12 /Helvetica-Bold AF 7200 40989 MT (See Also)SH 10 /Courier AF 8312 42415 MT (port_status)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 26 27 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (26)SH 12 SS 7200 8075 MT (port_insert)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t port_insert_send\050task, my_port, his_name\051)SH 12000 13115 MT (task_t task;)SH 12000 14146 MT (port_t my_port;)SH 12000 15177 MT (port_name_t his_name;)SH 7200 17697 MT (kern_return_t port_insert_receive\050task, my_port, his_name\051)SH 12000 18728 MT (task_t task;)SH 12000 19759 MT (port_t my_port;)SH 12000 20790 MT (port_name_t his_name;)SH 12 /Helvetica-Bold AF 7200 23807 MT (Arguments)SH 10 /Courier AF 10904 25679 MT (task)SH /Helvetica SF 19800 XM (The task getting the new rights.)SH /Courier SF 10904 27305 MT (my_port)SH /Helvetica SF 19800 XM (Rights supplied by the caller.)SH /Courier SF 10904 28931 MT (his_name)SH /Helvetica SF 19800 XM (The name by which)SH /Courier SF 28748 XM (task)SH /Helvetica SF 31426 XM (will know the new rights.)SH 12 /Helvetica-Bold AF 7200 30949 MT (Description)SH 10 /Courier AF 8312 32448 MT (port_insert_send)SH /Helvetica SF 18293 XM (and)SH /Courier SF 20342 XM (port_insert_receive)SH /Helvetica SF 32123 XM (give a task rights with a) 103 W( specific name. If)102 W /Courier SF 51600 XM (task)SH /Helvetica SF 7200 33874 MT (already has rights named)66 W /Courier SF 18969 XM (his_name)SH /Helvetica SF (, or has some other name for)66 W /Courier SF 37348 XM (my_port)SH /Helvetica SF (, then the operation will fail.)67 W /Courier SF 7200 35300 MT (his_name)SH /Helvetica SF 12278 XM (can't be a distinguished value like)SH /Courier SF 27452 XM (PORT_NULL)SH /Helvetica SF (.)SH /Courier SF 8312 37867 MT (port_insert_send)SH /Helvetica SF 18223 XM (inserts send rights, and)32 W /Courier SF 28967 XM (port_insert_receive)SH /Helvetica SF 40677 XM (inserts receive and ownership)32 W 7200 39293 MT (rights.)SH 12 /Helvetica-Bold AF 7200 41279 MT (Returns)SH 10 /Courier AF 10904 43151 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 44777 MT (KERN_NAME_EXISTS)SH 19800 45920 MT (task)SH /Helvetica SF 22478 XM (already has a right named)SH /Courier SF 34317 XM (his_name)SH /Helvetica SF (.)SH /Courier SF 10904 47546 MT (KERN_FAILURE)SH 19800 XM (task)SH /Helvetica SF 22478 XM (already has rights to)SH /Courier SF 31760 XM (my_port)SH /Helvetica SF (.)SH /Courier SF 10904 49172 MT (KERN_INVALID_ARGUMENT)SH 19800 50315 MT (task)SH /Helvetica SF 22478 XM (was invalid or)SH /Courier SF 28813 XM (new_name)SH /Helvetica SF 33891 XM (was an invalid name.)SH 12 /Helvetica-Bold AF 7200 52333 MT (Notes)SH 10 /Helvetica AF 8312 53832 MT (There is no way to insert just receive rights or just ownership rights.)SH 12 /Helvetica-Bold AF 7200 55818 MT (See Also)SH 10 /Courier AF 8312 57317 MT (port_extract_send)SH /Helvetica SF (,)SH /Courier SF 19068 XM (port_extract_receive)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 27 28 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (27)SH 12 SS 7200 8075 MT (port_extract)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t port_extract_send\050task, his_name, his_port\051)SH 12000 13115 MT (task_t task;)SH 12000 14146 MT (port_name_t his_name;)SH 12000 15177 MT (port_t *his_port;) SH( /*) 8400 W( out */)SH 7200 17697 MT (kern_return_t port_extract_receive\050task, his_name, his_port\051)SH 12000 18728 MT (task_t task;)SH 12000 19759 MT (port_name_t his_name;)SH 12000 20790 MT (port_t *his_port;) SH( /*) 8400 W( out */)SH 12 /Helvetica-Bold AF 7200 23807 MT (Arguments)SH 10 /Courier AF 10904 25679 MT (task)SH /Helvetica SF 19800 XM (The task whose rights the caller takes.)SH /Courier SF 10904 27305 MT (his_name)SH /Helvetica SF 19800 XM (The name by which)SH /Courier SF 28748 XM (task)SH /Helvetica SF 31426 XM (knows the rights.)SH /Courier SF 10904 28931 MT (his_port)SH /Helvetica SF 19800 XM (Rights returned to the caller.)SH 12 /Helvetica-Bold AF 7200 30949 MT (Description)SH 10 /Courier AF 8312 32448 MT (port_extract_send)SH /Helvetica SF 18857 XM (and)SH /Courier SF 20870 XM (port_extract_receive)SH /Helvetica SF 33215 XM (remove)SH /Courier SF 36895 XM (task)SH /Helvetica SF ('s rights for a port and return the)68 W 7200 33874 MT (rights to the caller.)SH /Courier SF 15926 XM (task)SH /Helvetica SF 18604 XM (is left with no rights for the port.)SH /Courier SF 8312 36441 MT (port_extract_send)SH /Helvetica SF 18796 XM (extracts send rights;)6 W /Courier SF 28040 XM (task)SH /Helvetica SF 30724 XM (can't have receive or ownership) 6 W( rights for the named)5 W 7200 37867 MT (port.)SH /Courier SF 9757 XM (port_extract_receive)SH /Helvetica SF 22035 XM (extracts receive/ownership rights, both of which)SH /Courier SF 43321 XM (task)SH /Helvetica SF 45999 XM (must hold.)SH 12 /Helvetica-Bold AF 7200 39853 MT (Returns)SH 10 /Courier AF 10904 41725 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 43351 MT (KERN_INVALID_ARGUMENT)SH 19800 44494 MT (task)SH /Helvetica SF 22489 XM (was invalid or)11 W /Courier SF 28857 XM (his_name)SH /Helvetica SF 33945 XM (does not name a port for which)10 W /Courier SF 48022 XM (task)SH /Helvetica SF 50710 XM (has the)10 W 19800 45637 MT (required rights.)SH 12 /Helvetica-Bold AF 7200 47655 MT (Notes)SH 10 /Helvetica AF 8312 49154 MT (There is no way to extract just receive rights or just ownership rights.)SH 12 /Helvetica-Bold AF 7200 51140 MT (See Also)SH 10 /Courier AF 8312 52639 MT (port_insert_send)SH /Helvetica SF (,)SH /Courier SF 18468 XM (port_insert_receive)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 28 29 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (28)SH 12 SS 7200 8075 MT (4. Task and thread primitives)SH 11 SS 7200 11757 MT (4.1. Basic terms)SH 10 /Helvetica AF 8312 13183 MT (The)SH 8 SS 10313 XM (MACH)SH 10 SS 12947 XM (system separates the traditional notion of a)SH /Helvetica-Bold SF 32290 XM (process)SH /Helvetica SF 36403 XM (into two subconcepts:)SH /Symbol SF 9242 15126 MT (\267)SH /Helvetica-Bold SF 9980 XM (Tasks)SH /Helvetica SF 13148 XM (contain the capabilities, namely the port) 55 W( rights, resource limits, and address space of)56 W 9980 16269 MT (a running entity. Tasks perform no computation; they are a framework for running)SH /Helvetica-Bold SF 46440 XM (threads)SH /Helvetica SF (.)SH /Symbol SF 9242 17984 MT (\267)SH /Helvetica-Bold SF 9980 XM (Threads)SH /Helvetica SF 14162 XM (contain the minimal processing state associated with a computation, e.g. a) 14 W( program)13 W 9980 19127 MT (counter, a stack pointer, and a set of registers. A thread exists within exactly one task;)184 W 9980 20270 MT (however, one task may contain many threads.)SH 8312 22837 MT (Tasks are the basic unit of protection. All threads within a task have access to) 205 W( all of that task's)204 W 7200 24263 MT (capabilities, and are thus not protected from each other.)SH 8312 26830 MT (Threads are the basic unit of scheduling.) 128 W( On) 536 W( a multiprocessor host, multiple threads from one task)129 W 7200 28256 MT (may be executing) 331 W( simultaneously \050within the task's one address space\051. A thread may be in a)330 W /Helvetica-Bold SF 7200 29682 MT (suspended)SH /Helvetica SF 12850 XM (state \050prevented from running\051, or in a)94 W /Helvetica-Bold SF 30571 XM (runnable)SH /Helvetica SF 35166 XM (state \050may be running or be scheduled to)94 W 7200 31108 MT (run\051. There) 404 W( is a) 63 W( non-negative)62 W /Helvetica-Bold SF 20971 XM (suspend count)62 W /Helvetica SF 28485 XM (associated with each thread. The suspend count is zero)62 W 7200 32534 MT (for runnable threads and positive for suspended threads.)SH 8312 35101 MT (Tasks may be suspended or resumed as a whole. A thread may only execute when both it and) 11 W( its task)12 W 7200 36527 MT (are runnable. Resuming a task does not cause all) 33 W( component threads to begin executing, but only those)32 W 7200 37953 MT (threads which are not suspended.)SH 8312 40520 MT (Both tasks) 48 W( and threads are represented by ports. These ports are called the)49 W /Helvetica-Bold SF 42743 XM (task kernel port)49 W /Helvetica SF 50615 XM (and the)49 W /Helvetica-Bold SF 7200 41946 MT (thread kernel port)44 W /Helvetica SF (. These are the handles that are used in the task and thread kernel calls) 44 W( to identify to)43 W 7200 43372 MT (the kernel which task or thread is to be affected by) 213 W( the call. The two primitives)214 W /Courier SF 45240 XM (task_self\050\051)SH /Helvetica SF 52332 XM (and)SH /Courier SF 7200 44798 MT (thread_self\050\051)SH /Helvetica SF 15448 XM (return the task and thread) 170 W( ports of the currently executing thread. Tasks may have)169 W 7200 46224 MT (access to the task and thread ports of other tasks and threads. For example,) 49 W( a task that creates another)50 W 7200 47650 MT (task or thread gets access to the new task or thread port. Also any thread may pass access) 114 W( to these)113 W 7200 49076 MT (ports in a) 7 W( message to another thread in the same or different task. Having access to a task or thread port)8 W 7200 50502 MT (enables the possessor to perform kernel calls on behalf of that task or thread.) 53 W( Access) 382 W( to a task's kernel)52 W 7200 51928 MT (port indirectly permits access to all threads within that task via) 35 W( the)36 W /Courier SF 36911 XM (task_threads)SH /Helvetica SF 44425 XM (call; however, access)36 W 7200 53354 MT (to a thread's kernel port does not currently imply access to its task port.)SH 8312 55921 MT (In addition to their kernel ports, tasks and) 136 W( threads have a number of)135 W /Helvetica-Bold SF 40312 XM (special ports)135 W /Helvetica SF 47029 XM (associated with)135 W 7200 57347 MT (them. In general these are) 8 W( ports that the kernel must know about in order to communicate with the task or)9 W 7200 58773 MT (thread in a structured manner.)SH 8312 61340 MT (There are three ports associated with a task in addition to its kernel port:)SH /Symbol SF 9242 63283 MT (\267)SH /Helvetica SF 9980 XM (The)SH /Helvetica-Bold SF 12196 XM (notify port)215 W /Helvetica SF (, on which the task) 215 W( should attempt to receive notification of such kernel)214 W 9980 64426 MT (events as the destruction of a port to which it has send rights. The task) 26 W( has receive rights to)27 W 9980 65569 MT (this port and can get its value from the primitive)SH /Courier SF 31211 XM (task_notify\050\051)SH /Helvetica SF (.)SH /Symbol SF 9242 67284 MT (\267)SH /Helvetica SF 9980 XM (The)SH /Helvetica-Bold SF 12278 XM (exception port)297 W /Helvetica SF (, to which the kernel) 297 W( sends messages when an exception occurs.)296 W /Helvetica-Bold SF 9980 68427 MT (Exceptions)SH /Helvetica SF 15708 XM (are synchronous) 115 W( interuptions to the normal flow of program control caused by)116 W 9980 69570 MT (the program itself. They include illegal memory accesses, protection) 184 W( violations, arithmetic)183 W 9980 70713 MT (exceptions, and hardware instructions intended to) 27 W( support emulation, debugging and/or error)28 W 9980 71856 MT (detection. Some of these exceptions are) 79 W( handled transparently by the operating system but)78 W 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 29 30 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (29)SH /Helvetica SF 9980 7929 MT (some must be reported to the user program. A default exception port is) 97 W( inherited from the)98 W 9980 9072 MT (parent at task creation time. This port can be changed by the) 9 W( task or any one of its threads in)8 W 9980 10215 MT (order to take an active role in handling exceptions.)SH /Symbol SF 9242 11930 MT (\267)SH /Helvetica SF 9980 XM (The)SH /Helvetica-Bold SF 12147 XM (bootstrap port)166 W /Helvetica SF (, to which a new task can send a message that will return any other)167 W 9980 13073 MT (system service ports that the task needs, for example a port to the Network Nameserver) 78 W( or)77 W 9980 14216 MT (the Environment Manager. Send rights to this port are inherited from the parent) 185 W( at task)186 W 9980 15359 MT (creation. This) 384 W( is the one port that) 53 W( the kernel does not actually use, it just makes it available)52 W 9980 16502 MT (to a new task.)SH 8312 19069 MT (There are two ports associated with a thread in addition to its kernel port:)SH /Symbol SF 9242 21012 MT (\267)SH /Helvetica SF 9980 XM (The)SH /Helvetica-Bold SF 12109 XM (thread reply port)128 W /Helvetica SF (, which) 128 W( may be used for initial messages from a parent or for early)129 W 9980 22155 MT (remote procedure calls. The)SH /Courier SF 22707 XM (thread_reply\050\051)SH /Helvetica SF 31385 XM (primitive returns receive rights to this port.)SH /Symbol SF 9242 23870 MT (\267)SH /Helvetica SF 9980 XM (The)SH /Helvetica-Bold SF 12080 XM (thread exception port)99 W /Helvetica SF (, to which kernel sends) 99 W( exceptions occuring in this thread. This)98 W 9980 25013 MT (port is set to)284 W /Courier SF 16841 XM (PORT_NULL)SH /Helvetica SF 22803 XM (at thread creation and) 284 W( can be set subsequently by the call)285 W /Courier SF 9980 26156 MT (thread_set_exception_port)SH /Helvetica SF (. As) 470 W( long as the thread) 96 W( exception port is)95 W /Courier SF 44057 XM (PORT_NULL)SH /Helvetica SF 49830 XM (the)SH 9980 27299 MT (task exception port will be used instead.)SH 11 /Helvetica-Bold AF 7200 30981 MT (4.2. Access to Tasks: Terminology)SH 10 /Helvetica AF 8312 32407 MT (In this and following sections, calls are described) 55 W( which may manipulate the state of a task. Although)56 W 7200 33833 MT (some of the descriptions may refer to tasks as performing these calls, it is in) 97 W( fact some thread within a)96 W 7200 35259 MT (task which makes any call.)SH 8312 37826 MT (Furthermore, any thread within any task which holds access rights to that) 118 W( task \050i.e. task kernel port\051)119 W 7200 39252 MT (may perform calls which take a task as an argument.) 246 W( Customarily,) 769 W( only threads within a task will)245 W 7200 40678 MT (manipulate that task's state, but this custom is) 106 W( not enforced by the)107 W 8 SS 37992 XM (MACH)SH 10 SS 40733 XM (kernel. Debugger tasks are a)107 W 7200 42104 MT (notable exception to) 106 W( this rule. Similarly, access to a thread is controlled by access to its thread kernel)105 W 7200 43530 MT (port.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 30 31 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (30)SH 12 SS 7200 8075 MT (task_create)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t task_create\050parent_task, inherit_memory,)SH 27000 13115 MT (child_task\051)SH 12000 14146 MT (task_t parent_task)5400 W 12000 15177 MT (boolean_t inherit_memory;)3600 W 12000 16208 MT (task_t *child_task;) 5400 W( /*) 1800 W( out */)SH 12 /Helvetica-Bold AF 7200 19225 MT (Arguments)SH 10 /Courier AF 10904 21097 MT (target_task)SH /Helvetica SF 19800 XM (The task from which the child's capabilities are drawn.)SH /Courier SF 10904 22723 MT (inherit_memory)SH /Helvetica SF 19800 XM (If set, the child task's address space is built from the parent) 9 W( task according to)10 W 19800 23866 MT (its memory inheritance values; otherwise, the) 154 W( child task is given an empty)153 W 19800 25009 MT (address space.)SH /Courier SF 10904 26635 MT (child_task)SH /Helvetica SF 19800 XM (The new task.)SH 12 /Helvetica-Bold AF 7200 28653 MT (Description)SH 10 /Courier AF 8312 30152 MT (task_create)SH /Helvetica SF 15390 XM (creates a new task from)200 W /Courier SF 27283 XM (parent_task)SH /Helvetica SF (; the resulting task \050)200 W /Courier SF (child_task)SH /Helvetica SF (\051 acquires)201 W 7200 31578 MT (shared or copied) 22 W( parts of the parent's address space \050see)21 W /Courier SF 33258 XM (vm_inherit)SH /Helvetica SF (\051. The) 320 W( child task initially contains)21 W 7200 33004 MT (no threads.)SH 8312 35571 MT (The child task gets the four special ports created or copied for it at task) 514 W( creation. The)515 W /Courier SF 7200 36997 MT (task_kernel_port)SH /Helvetica SF 17082 XM (is created and send rights for it are given to the child and returned to the) 4 W( caller. The)3 W /Courier SF 7200 38423 MT (task_notify_port)SH /Helvetica SF 17134 XM (is created and receive, ownership and send) 56 W( rights for it are given to the child. The)57 W 7200 39849 MT (caller has no access to it. The)38 W /Courier SF 21287 XM (task_bootstrap_port)SH /Helvetica SF 33002 XM (and the)37 W /Courier SF 36690 XM (task_exception_port)SH /Helvetica SF 48405 XM (are inherited)37 W 7200 41275 MT (from the parent task. The new task can get send rights to these ports) 621 W( with the call)622 W /Courier SF 7200 42701 MT (task_get_special_port)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 44687 MT (Returns)SH 10 /Courier AF 10904 46559 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (A new task has been created.)SH /Courier SF 10904 48185 MT (KERN_INVALID_ARGUMENT)SH 19800 49328 MT (parent_task)SH /Helvetica SF 26678 XM (is not a valid task port.)SH /Courier SF 10904 50954 MT (KERN_RESOURCE_SHORTAGE)SH /Helvetica SF 19800 52097 MT (Some critical kernel resource is unavailable.)SH 12 /Helvetica-Bold AF 7200 54115 MT (See Also)SH 10 /Courier AF 8312 55541 MT (task_terminate, task_suspend, task_resume,) 103 W( task_special_ports,) 380 102 WX(task_threads,)SH 7200 56967 MT (thread_create, thread_resume,) 278 0 WX(vm_inherit)SH 12 /Helvetica-Bold AF 7200 58953 MT (Notes)SH 10 /Helvetica AF 8312 60452 MT (Not implemented yet. Use)SH /Courier SF 20094 XM (fork)SH /Helvetica SF (.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 31 32 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (31)SH 12 SS 7200 8075 MT (task_terminate)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t task_terminate\050target_task\051)SH 12000 13115 MT (task_t target_task;)5400 W 12 /Helvetica-Bold AF 7200 16132 MT (Arguments)SH 10 /Courier AF 10904 18004 MT (target_task)SH /Helvetica SF 19800 XM (The task to be destroyed.)SH 12 /Helvetica-Bold AF 7200 20022 MT (Description)SH 10 /Courier AF 8312 21521 MT (task_terminate)SH /Helvetica SF 17037 XM (destroys the task specified by)47 W /Courier SF 30668 XM (target_task)SH /Helvetica SF 37594 XM (and all its threads. All resources that)48 W 7200 22947 MT (are used only by this task are freed. Any port to which this task has receive and) 167 W( ownership rights is)166 W 7200 24373 MT (destroyed.)SH 12 /Helvetica-Bold AF 7200 26359 MT (Returns)SH 10 /Courier AF 10904 28231 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The task has been killed.)SH /Courier SF 10904 29857 MT (KERN_INVALID_ARGUMENT)SH 19800 31000 MT (target_task)SH /Helvetica SF 26678 XM (is not a task.)SH 12 /Helvetica-Bold AF 7200 33018 MT (See Also)SH 10 /Courier AF 8312 34444 MT (task_create, task_suspend, task_resume,) 278 0 WX(thread_terminate, thread_suspend)SH 12 /Helvetica-Bold AF 7200 36430 MT (Notes)SH 10 /Helvetica AF 8312 37929 MT (Not implemented yet.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 32 33 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (32)SH 12 SS 7200 8075 MT (task_suspend)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t task_suspend\050target_task\051)SH 12000 13115 MT (task_t target_task;)5400 W 12 /Helvetica-Bold AF 7200 16132 MT (Arguments)SH 10 /Courier AF 10904 18004 MT (target_task)SH /Helvetica SF 19800 XM (The task to be suspended.)SH 12 /Helvetica-Bold AF 7200 20022 MT (Description)SH 10 /Helvetica AF 8312 21521 MT (Increments the task's suspend count and stops all threads in the) 25 W( task. As long as the suspend count is)24 W 7200 22947 MT (positive newly created threads will not run. This call does not return until all threads are suspended.)SH 8312 25514 MT (The count may become greater than one, with the effect that) 58 W( it will take more than one resume call to)59 W 7200 26940 MT (restart the task.)SH 12 /Helvetica-Bold AF 7200 28926 MT (Returns)SH 10 /Courier AF 10904 30798 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The task has been suspended.)SH /Courier SF 10904 32424 MT (KERN_INVALID_ARGUMENT)SH 19800 33567 MT (target_task)SH /Helvetica SF 26678 XM (is not a task.)SH 12 /Helvetica-Bold AF 7200 35585 MT (See Also)SH 10 /Courier AF 8312 37011 MT (task_create, task_terminate, task_resume, task_info,) SH( thread_suspend)278 W 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 33 34 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (33)SH 12 SS 7200 8075 MT (task_resume)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t task_resume\050target_task\051)SH 12000 13115 MT (task_t target_task;)5400 W 12 /Helvetica-Bold AF 7200 16132 MT (Description)SH 10 /Helvetica AF 8312 17631 MT (Decrements the task's suspend count. If it becomes zero,) 69 W( all threads with zero suspend counts in the)70 W 7200 19057 MT (task are resumed. The count may not become negative.)SH 12 /Helvetica-Bold AF 7200 21043 MT (Arguments)SH 10 /Courier AF 10904 22915 MT (target_task)SH /Helvetica SF 19800 XM (The task to be resumed.)SH 12 /Helvetica-Bold AF 7200 24933 MT (Returns)SH 10 /Courier AF 10904 26805 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The task has been resumed.)SH /Courier SF 10904 28431 MT (KERN_FAILURE)SH /Helvetica SF 19800 XM (The suspend count is already at zero.)SH /Courier SF 10904 30057 MT (KERN_INVALID_ARGUMENT)SH 19800 31200 MT (target_task)SH /Helvetica SF 26678 XM (is not a task.)SH 12 /Helvetica-Bold AF 7200 33218 MT (See Also)SH 10 /Courier AF 8312 34644 MT (task_create, task_terminate, task_suspend,) 1152 W( task_info,) 1153 W( thread_suspend,)831 W 7200 36070 MT (thread_resume, thread_info)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 34 35 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (34)SH 12 SS 7200 8075 MT (task_special_ports)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t task_get_special_port\050task, which_port, special_port\051)SH 12000 13115 MT (task_t task;)5400 W 12000 14146 MT (int which_port;)7200 W 12000 15177 MT (port_t *special_port;) 5400 W( /*) 600 W( out */)SH 7200 17697 MT (kern_return_t task_set_special_port\050task, which_port, special_port\051)SH 12000 18728 MT (task_t task;)5400 W 12000 19759 MT (int which_port;)7200 W 12000 20790 MT (port_t special_port;)5400 W 7200 24341 MT (task_t task_self\050\051)SH 7200 26861 MT (port_t task_notify\050\051)SH 12 /Helvetica-Bold AF 7200 30909 MT (Arguments)SH 10 /Courier AF 10904 32781 MT (task)SH /Helvetica SF 19800 XM (The task for which to get the port)SH /Courier SF 10904 34407 MT (which_port)SH /Helvetica SF 19800 XM (the port that is requested. Is one) 1074 W( of)1073 W /Courier SF 44122 XM (TASK_NOTIFY_PORT)SH /Helvetica SF (,)SH /Courier SF 19800 35550 MT (TASK_BOOTSTRAP_PORT)SH /Helvetica SF (,)SH /Courier SF 31756 XM (TASK_EXCEPTION_PORT)SH /Helvetica SF (.)SH /Courier SF 10904 37176 MT (special_port)SH /Helvetica SF 19800 XM (the value of the port that is being requested or being set.)SH 12 /Helvetica-Bold AF 7200 39194 MT (Description)SH 10 /Courier AF 8312 40693 MT (get_special_port)SH /Helvetica SF 18200 XM (returns send rights to one of a set of special ports for the task specified by)10 W /Courier SF 51322 XM (task)SH /Helvetica SF (.)SH 7200 42119 MT (In the case of the task's own)SH /Courier SF 20096 XM (task_notify_port)SH /Helvetica SF (, the task also gets receive and ownership rights.)SH /Courier SF 8312 44686 MT (set_special_port)SH /Helvetica SF 18190 XM (sets one of a set of special ports for the task specified by)SH /Courier SF 43592 XM (task)SH /Helvetica SF (.)SH /Courier SF 8312 47253 MT (task_self)SH /Helvetica SF 14016 XM (returns the port to which kernel) 26 W( calls for the currently executing thread should be directed.)25 W 7200 48679 MT (Currently,)SH /Courier SF 11828 XM (task_self)SH /Helvetica SF 17522 XM (returns the)16 W /Helvetica-Bold SF 22612 XM (task kernel port)16 W /Helvetica SF 30385 XM (which is a port for which the kernel has) 16 W( receive rights)17 W 7200 50105 MT (and which it uses to identify a task. In the future it) 104 W( may be possible for one task to interpose a port as)103 W 7200 51531 MT (another's task's kernel) 2 W( port. At that time,)3 W /Courier SF 25338 XM (task_self)SH /Helvetica SF 31019 XM (will still return the port to which the executing thread)3 W 7200 52957 MT (should direct kernel calls, but it may no longer be a port on which the kernel has receive rights.)SH 8312 55524 MT (If one task, the controller, has) 21 W( send access to the kernel port of another task, the subject task, then the)20 W 7200 56950 MT (controller task can perform kernel operations for the subject task. Normally only the) 125 W( task itself and the)126 W 7200 58376 MT (task that created it will) 30 W( have access to the task kernel port, but any task may pass rights to its kernel port)29 W 7200 59802 MT (to any other task.)SH /Courier SF 8312 62369 MT (task_notify)SH /Helvetica SF 15266 XM (returns receive, ownership and send) 76 W( rights to the)77 W /Helvetica-Bold SF 37777 XM (notify port)77 W /Helvetica SF 43153 XM (associated with the task)77 W 7200 63795 MT (to which the executing thread belongs. The notify port is a port on which) 265 W( the task should receive)264 W 7200 65221 MT (notification of such kernel events of the destruction of a port to which it has send rights.)SH 8312 67788 MT (The other special ports associated with a task are the)118 W /Helvetica-Bold SF 33392 XM (bootstrap port)119 W /Helvetica SF 40741 XM (and the)119 W /Helvetica-Bold SF 44593 XM (exception port)119 W /Helvetica SF (. The)119 W 7200 69214 MT (bootstrap port is a port to which a thread may) 115 W( send a message requesting other system service ports.)114 W 7200 70640 MT (This port is not used by the kernel. The task's exception port is the port) 72 W( to which messages are sent by)73 W 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 35 36 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (35)SH /Helvetica SF 7200 7929 MT (the kernel when an exception occurs and the thread causing the exception has no exception port) 98 W( of its)97 W 7200 9355 MT (own.)SH 8312 11922 MT (Within the C environment,)37 W /Courier SF 20243 XM (task_self)SH /Helvetica SF 25959 XM (and)SH /Courier SF 27943 XM (task_notify)SH /Helvetica SF 34859 XM (are implemented as macros which execute)38 W 7200 13348 MT (the system traps the first time and thereafter return a cached value for the ports. Thus it is unnecessary)68 W 7200 14774 MT (for a programmer) 255 W( to cache these variables himself and such caching may interfere with the future)256 W 7200 16200 MT (implementation of port interposition.)SH 8312 18767 MT (The following macros to call)321 W /Courier SF 22531 XM (task_set/get_special_port)SH /Helvetica SF 38129 XM (for a specific port are defined in)320 W /Courier SF 7200 20193 MT ()SH /Helvetica SF (:)SH /Courier SF 26561 XM (task_get_notify_port)SH /Helvetica SF (,)SH /Courier SF 41722 XM (task_set_notify_port)SH /Helvetica SF (,)SH /Courier SF 7200 21619 MT (task_get_exception_port)SH /Helvetica SF (,)SH /Courier SF 22337 XM (task_set_exception_port)SH /Helvetica SF (,)SH /Courier SF 37474 XM (task_get_bootstrap_port)SH /Helvetica SF 52332 XM (and)SH /Courier SF 7200 23045 MT (task_set_bootstrap_port)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 25031 MT (Returns)SH 10 /Courier AF 10904 26903 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The port was returned or set.)SH /Courier SF 10904 28529 MT (KERN_INVALID_ARGUMENT)SH 19800 29672 MT (task)SH /Helvetica SF 22478 XM (is not a task or)SH /Courier SF 29259 XM (which_port)SH /Helvetica SF 35537 XM (is an invalid port selector.)SH 12 /Helvetica-Bold AF 7200 31690 MT (See Also)SH 10 /Courier AF 8312 33116 MT (thread_special_ports,mach_init,task_create)SH 12 /Helvetica-Bold AF 7200 35102 MT (Notes)SH 10 /Helvetica AF 8312 36601 MT (The call on the bootstrap port to get system service ports has not been implemented yet.)SH /Courier SF 8312 39168 MT (TASK_KERNEL_PORT)SH /Helvetica SF 18190 XM (may be added to the set of ports that)SH /Courier SF 34756 XM (task_set_special_port)SH /Helvetica SF 47634 XM (accepts.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 36 37 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (36)SH 12 SS 7200 8075 MT (task_info)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 11626 MT (/* the definition of task_info_t from mach.h - mach/task_info.h is */)SH 7200 13688 MT (typedef int) SH( *task_info_t;) 2400 W( /*) 6000 W( variable length array of int */)SH 7200 15750 MT (/* currently the only interpretation of info is */)SH 9000 17812 MT (struct task_basic_info {)SH 12000 18843 MT (int suspend_count;) 7200 W( /*) 600 W( suspend count for task */)SH 12000 19874 MT (int base_priority;) 7200 W( /*) 600 W( base scheduling priority */)SH 12000 20905 MT (vm_size_t virtual_size;) 3600 W( /*) 1200 W( number of virtual pages */)SH 12000 21936 MT (vm_size_t resident_size;) 3600 W( /*) 600 W( number of resident pages */)SH 12000 22967 MT (time_value_t user_time;) 1800 W( /*) 3000 W( total user run time for)SH 33000 23998 MT (terminated threads */)SH 12000 25029 MT (time_value_t system_time; /*) 1800 W( total system run time for)SH 33000 26060 MT (terminated threads */)SH 9000 27091 MT (};)SH 7200 28122 MT (typedef struct task_basic_info) SH( *task_basic_info_t;)5400 W 7200 30642 MT (kern_return_t task_info\050target_task, flavor, task_info, task_infoCnt\051)SH 12000 31673 MT (task_t target_task;)5400 W 12000 32704 MT (int flavor;)7200 W 12000 33735 MT (task_info_t task_info;) 2400 W( /*) 3000 W( in and out */)SH 12000 34766 MT (unsigned int) SH( *task_infoCnt;) 1800 W( /*) 600 W( in and out */)SH 12 /Helvetica-Bold AF 7200 37783 MT (Arguments)SH 10 /Courier AF 10904 39655 MT (target_task)SH /Helvetica SF 19800 XM (The task to be affected.)SH /Courier SF 10904 41281 MT (flavor)SH /Helvetica SF 19800 XM (The type of statistics that are wanted.) 58 W( Currently) 393 W( only)57 W /Courier SF 43943 XM (TASK_BASIC_INFO)SH /Helvetica SF 53278 XM (is)SH 19800 42424 MT (implemented.)SH /Courier SF 10904 44050 MT (task_info)SH /Helvetica SF 19800 XM (Statistics about the task specified by)SH /Courier SF 36197 XM (target_task)SH /Helvetica SF (.)SH /Courier SF 10904 45676 MT (task_infoCnt)SH /Helvetica SF 19800 XM (Size of) 351 W( the info structure. Currently only)352 W /Courier SF 40048 XM (TASK_BASIC_INFO_COUNT)SH /Helvetica SF 53278 XM (is)SH 19800 46819 MT (implemented.)SH 12 /Helvetica-Bold AF 7200 48837 MT (Description)SH 10 /Helvetica AF 8312 50336 MT (Returns the selected information array) 81 W( for a task, as specified by)80 W /Courier SF 37986 XM (flavor)SH /Helvetica SF (.)SH /Courier SF 42222 XM (task_info)SH /Helvetica SF 47980 XM (is an array of)80 W 7200 51762 MT (integers that is supplied by the caller, and filled) 31 W( with specified information.)32 W /Courier SF 40368 XM (task_infoCnt)SH /Helvetica SF 47878 XM (is supplied as)32 W 7200 53188 MT (the maximum number of integers in)83 W /Courier SF 23648 XM (task_info)SH /Helvetica SF (. On return, it contains the actual number of integers) 83 W( in)82 W /Courier SF 7200 54614 MT (task_info)SH /Helvetica SF (.)SH 8312 57181 MT (Currently there is only one flavor of information which is) 152 W( defined by)153 W /Courier SF 39873 XM (TASK_BASIC_INFO)SH /Helvetica SF (. Its size is)153 W 7200 58607 MT (defined by)SH /Courier SF 12092 XM (TASK_BASIC_INFO_COUNT)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 60593 MT (Returns)SH 10 /Courier AF 10904 62465 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 64091 MT (KERN_INVALID_ARGUMENT)SH 19800 65234 MT (target_task)SH /Helvetica SF 26678 XM (is not a task or)SH /Courier SF 33459 XM (flavor)SH /Helvetica SF 37337 XM (is not recognized.)SH /Courier SF 10904 66860 MT (MIG_ARRAY_TOO_LARGE)SH /Helvetica SF 19800 68003 MT (Returned info array) 1 W( is too large for)SH /Courier SF 35253 XM (task_info)SH /Helvetica SF (.)SH /Courier SF 41209 XM (task_info)SH /Helvetica SF 46887 XM (is filled as much)SH 19800 69146 MT (as possible.)33 W /Courier SF 25735 XM (task_infoCnt)SH /Helvetica SF 33246 XM (is set to the number of elements that) 33 W( would be)34 W 19800 70289 MT (returned if there were enough room.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 37 38 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (37)SH 12 SS 7200 8075 MT (See Also)SH 10 /Courier AF 8312 9501 MT (task_special_ports, task_threads,) 278 0 WX(thread_info, thread_state)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 38 39 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (38)SH 12 SS 7200 8075 MT (task_threads)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t task_threads\050target_task, thread_list, thread_count\051)SH 12000 13115 MT (task_t target_task;)5400 W 12000 14146 MT (thread_array_t *thread_list;) 600 W( /*) 1200 W( out, ptr to array */)SH 12000 15177 MT (int *thread_count;) 7200 W( /*) 600 W( out */)SH 12 /Helvetica-Bold AF 7200 18194 MT (Arguments)SH 10 /Courier AF 10904 20066 MT (target_task)SH /Helvetica SF 19800 XM (The task to be affected.)SH /Courier SF 10904 21692 MT (thread_list)SH /Helvetica SF 19800 XM (The set of threads contained within)81 W /Courier SF 36072 XM (target_task)SH /Helvetica SF (; no particular ordering is)81 W 19800 22835 MT (guaranteed.)SH /Courier SF 10904 24461 MT (thread_count)SH /Helvetica SF 19800 XM (The number of threads in the)SH /Courier SF 32918 XM (thread_list)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 26479 MT (Description)SH 10 /Courier AF 8312 27978 MT (task_threads)SH /Helvetica SF 16062 XM (gets send rights to the kernel port for each thread) 272 W( contained in)273 W /Courier SF 47122 XM (target_task)SH /Helvetica SF (.)SH /Courier SF 7200 29404 MT (thread_list)SH /Helvetica SF 14106 XM (is an array that is created as a result of this call. The) 28 W( caller may wish to)27 W /Courier SF 46200 XM (vm_deallocate)SH /Helvetica SF 7200 30830 MT (this array when the data is no longer needed.)SH 12 /Helvetica-Bold AF 7200 32816 MT (Returns)SH 10 /Courier AF 10904 34688 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 36314 MT (KERN_INVALID_ARGUMENT)SH 19800 37457 MT (target_task)SH /Helvetica SF 26678 XM (is not a task.)SH 12 /Helvetica-Bold AF 7200 39475 MT (See Also)SH 10 /Courier AF 8312 40901 MT (thread_create, thread_terminate, thread_suspend)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 39 40 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (39)SH 12 SS 7200 8075 MT (thread_create)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t thread_create\050parent_task, child_thread\051)SH 12000 13115 MT (task_t parent_task;)5400 W 12000 14146 MT (thread_t *child_thread;) 4200 W( /*) 600 W( out */)SH 12 /Helvetica-Bold AF 7200 17163 MT (Description)SH 10 /Courier AF 8312 18662 MT (thread_create)SH /Helvetica SF 16493 XM (creates a new thread within the task specified by)103 W /Courier SF 39208 XM (parent_task)SH /Helvetica SF (. The) 484 W( new thread)102 W 7200 20088 MT (has no processor state, and has a suspend count of 1. To get a new thread to run, first)10 W /Courier SF 46200 XM (thread_create)SH /Helvetica SF 7200 21514 MT (is called to get the new thread's identifier,\050)31 W /Courier SF (child_thread)SH /Helvetica SF (\051. Then)31 W /Courier SF 36800 XM (thread_set_state)SH /Helvetica SF 46709 XM (is called) 31 W( to set a)30 W 7200 22940 MT (processor state, and finally)SH /Courier SF 19372 XM (thread_resume)SH /Helvetica SF 27450 XM (is called to get the thread scheduled to execute.)SH 8312 25507 MT (When the thread is created send rights to its) 16 W( thread kernel port are given to it and returned to the caller)17 W 7200 26933 MT (in)SH /Courier SF 8256 XM (child_thread)SH /Helvetica SF (. The) 278 W( new thread's exception port is set to)SH /Courier SF 34521 XM (PORT_NULL)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 28919 MT (Arguments)SH 10 /Courier AF 10904 30791 MT (parent_task)SH /Helvetica SF 19800 XM (The task which is to contain the new thread.)SH /Courier SF 10904 32417 MT (child_thread)SH /Helvetica SF 19800 XM (The new thread.)SH 12 /Helvetica-Bold AF 7200 34435 MT (Returns)SH 10 /Courier AF 10904 36307 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (A new thread has been created.)SH /Courier SF 10904 37933 MT (KERN_INVALID_ARGUMENT)SH 19800 39076 MT (parent_task)SH /Helvetica SF 26678 XM (is not a valid task.)SH /Courier SF 10904 40702 MT (KERN_RESOURCE_SHORTAGE)SH /Helvetica SF 19800 41845 MT (Some critical kernel resource is not available.)SH 12 /Helvetica-Bold AF 7200 43863 MT (See Also)SH 10 /Courier AF 8312 45289 MT (task_create, task_threads, thread_terminate,) 253 W( thread_suspend,) 530 252 WX(thread_resume,)SH 7200 46715 MT (thread_special_ports, thread_set_state)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 40 41 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (40)SH 12 SS 7200 8075 MT (thread_terminate)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t thread_terminate\050target_thread\051)SH 12000 13115 MT (thread_t target_thread;)4200 W 12 /Helvetica-Bold AF 7200 16132 MT (Arguments)SH 10 /Courier AF 10904 18004 MT (target_thread)SH /Helvetica SF 19800 XM (The thread to be destroyed.)SH 12 /Helvetica-Bold AF 7200 20022 MT (Description)SH 10 /Courier AF 8312 21521 MT (thread_terminate)SH /Helvetica SF 18190 XM (destroys the thread specified by)SH /Courier SF 32586 XM (target_thread)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 23507 MT (Returns)SH 10 /Courier AF 10904 25379 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The thread has been killed.)SH /Courier SF 10904 27005 MT (KERN_INVALID_ARGUMENT)SH 19800 28148 MT (target_thread)SH /Helvetica SF 27878 XM (is not a thread.)SH 12 /Helvetica-Bold AF 7200 30166 MT (See Also)SH 10 /Courier AF 8312 31592 MT (task_terminate, task_threads, thread_create,) 278 0 WX(thread_resume, thread_suspend)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 41 42 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (41)SH 12 SS 7200 8075 MT (thread_suspend)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t thread_suspend\050target_thread\051;)SH 12000 13115 MT (thread_t target_thread;)4200 W 12 /Helvetica-Bold AF 7200 16132 MT (Arguments)SH 10 /Courier AF 10904 18004 MT (target_thread)SH /Helvetica SF 19800 XM (The thread to be suspended.)SH 12 /Helvetica-Bold AF 7200 20022 MT (Description)SH 10 /Helvetica AF 8312 21521 MT (Increments the thread's suspend count and prevents the thread from executing any more user level)127 W 7200 22947 MT (instructions. In this context a) 55 W( user level instruction is either a machine instruction executed in user mode)56 W 7200 24373 MT (or a system trap instruction including page faults. Thus) 47 W( if a thread is currently executing within a system)46 W 7200 25799 MT (trap the kernel code may continue to execute until it reaches the system return code or) 111 W( it may supend)112 W 7200 27225 MT (within the kernel code. In either case, when the thread is) 50 W( resumed the system trap will return. This could)49 W 7200 28651 MT (cause unpredictible results if the user did a suspend and then altered the user) 20 W( state of the thread in order)21 W 7200 30077 MT (to change its direction upon a resume. The call)20 W /Courier SF 28390 XM (thread_abort)SH /Helvetica SF 35888 XM (is provided to allow the user to abort) 20 W( any)19 W 7200 31503 MT (system call that is in progress in a predictable way.)SH 8312 34070 MT (The suspend count may become greater than one with the effect that it will) 12 W( take more than one resume)13 W 7200 35496 MT (call to restart the thread.)SH 12 /Helvetica-Bold AF 7200 37482 MT (Returns)SH 10 /Courier AF 10904 39354 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The thread has been suspended.)SH /Courier SF 10904 40980 MT (KERN_INVALID_ARGUMENT)SH 19800 42123 MT (target_thread)SH /Helvetica SF 27878 XM (is not a thread.)SH 12 /Helvetica-Bold AF 7200 44141 MT (See Also)SH 10 /Courier AF 8312 45567 MT (task_suspend, task_resume,) 1383 W( thread_info,) 1061 W( thread_state,) 1383 W( thread_resume,)1061 W 7200 46993 MT (thread_terminate, thread_abort)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 42 43 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (42)SH 12 SS 7200 8075 MT (thread_resume)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t thread_resume\050target_thread\051)SH 12000 13115 MT (thread_t target_thread;)4200 W 12 /Helvetica-Bold AF 7200 16132 MT (Arguments)SH 10 /Courier AF 10904 18004 MT (target_thread)SH /Helvetica SF 19800 XM (The thread to be resumed.)SH 12 /Helvetica-Bold AF 7200 20022 MT (Description)SH 10 /Helvetica AF 8312 21521 MT (Decrements the threads's suspend count. If the) 53 W( count becomes zero the thread is resumed. If it is still)52 W 7200 22947 MT (positive, the thread is left suspended. The suspend count may not become negative.)SH 12 /Helvetica-Bold AF 7200 24933 MT (Returns)SH 10 /Courier AF 10904 26805 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The thread has been resumed.)SH /Courier SF 10904 28431 MT (KERN_FAILURE)SH /Helvetica SF 19800 XM (The suspend count is already zero.)SH /Courier SF 10904 30057 MT (KERN_INVALID_ARGUMENT)SH 19800 31200 MT (target_thread)SH /Helvetica SF 27878 XM (is not a thread.)SH 12 /Helvetica-Bold AF 7200 33218 MT (See Also)SH 10 /Courier AF 8312 34644 MT (task_suspend, task_resume) 853 W( thread_info,) 531 W( thread_create, thread_terminate,)852 W 7200 36070 MT (thread_suspend)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 43 44 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (43)SH 12 SS 7200 8075 MT (thread_abort)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t thread_abort\050target_thread\051)SH 12000 13115 MT (thread_t target_thread;)4200 W 12 /Helvetica-Bold AF 7200 16132 MT (Arguments)SH 10 /Courier AF 10904 18004 MT (target_thread)SH /Helvetica SF 19800 XM (The thread to be interrupted.)SH 12 /Helvetica-Bold AF 7200 20022 MT (Description)SH 10 /Courier AF 8312 21521 MT (thread_abort)SH /Helvetica SF 15980 XM (aborts the kernel primitives:)190 W /Courier SF 29244 XM (msg_send, msg_receive)190 W /Helvetica SF 42502 XM (and)SH /Courier SF 44638 XM (msg_rpc)SH /Helvetica SF 49306 XM (and page-)191 W 7200 22947 MT (faults, making the) 72 W( call return a code indicating that it was interrupted. The call is interrupted whether or)71 W 7200 24373 MT (not the thread \050or task containing it\051) 95 W( is currently suspended. If it is supsended, the thread receives the)96 W 7200 25799 MT (interupt when it is resumed. This call also aborts any) 51 W( priority depression caused by the)50 W /Courier SF 46748 XM (DEPRESS)SH /Helvetica SF 51276 XM (option)SH 7200 27225 MT (to)SH /Courier SF 8312 XM (thread_switch)SH /Helvetica SF (.)SH 8312 29792 MT (A thread will retry an aborted page-fault if its) 125 W( state is not modified before it is resumed.)126 W /Courier SF 49200 XM (Msg_send)SH /Helvetica SF 7200 31218 MT (returns)SH /Courier SF 11028 XM (SEND_INTERRUPTED)SH /Helvetica SF (;)SH /Courier SF 21622 XM (msg_receive)SH /Helvetica SF 28937 XM (returns)SH /Courier SF 32764 XM (RCV_INTERRUPTED)SH /Helvetica SF (;)SH /Courier SF 42757 XM (msg_rpc)SH /Helvetica SF 47672 XM (returns either)437 W /Courier SF 7200 32644 MT (SEND_INTERRUPTED)SH /Helvetica SF 17078 XM (or)SH /Courier SF 18245 XM (RCV_INTERRUPTED)SH /Helvetica SF (, depending on which half of the RPC was interrupted.)SH 8312 35211 MT (The main reason for this primitive) 11 W( is to allow one thread to cleanly stop another thread in a manner that)12 W 7200 36637 MT (will allow the future execution of the target thread to) 571 W( be controlled in a predictable way.)570 W /Courier SF 7200 38063 MT (thread_suspend)SH /Helvetica SF 16108 XM (keeps the target thread from executing any further instructions) 230 W( at the user level,)231 W 7200 39489 MT (including the return from a) 20 W( system call.)19 W /Courier SF 24732 XM (thread_get/set_state)SH /Helvetica SF 37029 XM (allows the examination or modification)19 W 7200 40915 MT (of the user state of a target thread. However, if a suspended thread was) 26 W( executing within a system call, it)27 W 7200 42341 MT (also has associated with it a kernel state. This kernel state) 50 W( can not be modified by)49 W /Courier SF 44400 XM (thread_set_state)SH /Helvetica SF 7200 43767 MT (with the result that when the thread is resumed the system call) 83 W( may return changing the user state and)84 W 7200 45193 MT (possibly user memory.)110 W /Courier SF 18198 XM (thread_abort)SH /Helvetica SF 25786 XM (aborts the kernel call) 110 W( from the target thread's point of view by)109 W 7200 46619 MT (resetting the kernel state so) 24 W( that the thread will resume execution at the system call return with the return)25 W 7200 48045 MT (code value set) 72 W( to one of the interrupted codes. The system call itself will either be entirely completed or)71 W 7200 49471 MT (entirely aborted,) 35 W( depending on the precise moment at which the abort was received. Thus if the thread's)36 W 7200 50897 MT (user state has) 50 W( been changed by)49 W /Courier SF 22005 XM (thread_set_state)SH /Helvetica SF (, it will not be modified by any unexpected system)49 W 7200 52323 MT (call side effects.)SH 8312 54890 MT (For example to simulate a Unix signal, the following sequence of calls may be used:)SH /Courier SF 8312 57457 MT (thread_suspend)SH /Helvetica SF 16990 XM (Stops the thread)SH /Courier SF 8312 60024 MT (thread_abort)SH /Helvetica SF 15859 XM (Interrupts any system call in progress, setting the) 69 W( return value to 'interrupted'. Since)70 W 7200 61450 MT (the thread is stopped, it will not return to user code.)SH /Courier SF 8312 64017 MT (thread_set_state)SH /Helvetica SF 18190 XM (Alters thread's state to simulate a procedure call to the signal handler)SH /Courier SF 8312 66584 MT (thread_resume)SH /Helvetica SF 16504 XM (Resumes execution at the signal handler. If the thread's stack) 114 W( has been correctly)113 W 7200 68010 MT (set up, the thread may return to the interrupted system call.)SH 8312 70577 MT (\050of course, the code to push an extra stack) 267 W( frame and change the registers is VERY machine-)268 W 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 44 45 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (44)SH /Helvetica SF 7200 7929 MT (dependent.\051)SH 8312 10496 MT (Calling)SH /Courier SF 11819 XM (thread_abort)SH /Helvetica SF 19470 XM (on a non-suspended thread) 173 W( is pretty risky, since it is very difficult to know)172 W 7200 11922 MT (exactly what system trap, if any, the thread might be) 142 W( executing and whether an interrupt return would)143 W 7200 13348 MT (cause the thread to do something useful.)SH 12 /Helvetica-Bold AF 7200 15334 MT (Returns)SH 10 /Courier AF 10904 17206 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The thread received an interrupt)SH /Courier SF 10904 18832 MT (KERN_INVALID_ARGUMENT)SH 19800 19975 MT (target_thread)SH /Helvetica SF 27878 XM (is not a thread.)SH 12 /Helvetica-Bold AF 7200 21993 MT (See Also)SH 10 /Courier AF 8312 23419 MT (thread_info, thread_state, thread_terminate, thread_suspend, thread_switch)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 45 46 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (45)SH 12 SS 7200 8075 MT (thread_special_ports)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t thread_get_special_port\050thread, which_port, special_port\051)SH 12000 13115 MT (thread_t thread;)4200 W 12000 14146 MT (int which_port;)7200 W 12000 15177 MT (port_t *special_port;)5400 W 7200 17697 MT (kern_return_t thread_set_special_port\050thread, which_port, special_port\051)SH 12000 18728 MT (thread_t thread;)4200 W 12000 19759 MT (int which_port;)7200 W 12000 20790 MT (port_t special_port;)5400 W 7200 23310 MT (thread_t thread_self\050\051)SH 7200 25830 MT (port_t thread_reply\050\051)SH 12 /Helvetica-Bold AF 7200 28847 MT (Arguments)SH 10 /Courier AF 10904 30719 MT (thread)SH /Helvetica SF 19800 XM (The thread for which to get the port)SH /Courier SF 10904 32345 MT (which_port)SH /Helvetica SF 19800 XM (the port that is requested. Is one of)789 W /Courier SF 41844 XM (THREAD_REPLY_PORT)SH /Helvetica SF 53111 XM (or)SH /Courier SF 19800 33488 MT (THREAD_EXCEPTION_PORT)SH /Helvetica SF (.)SH /Courier SF 10904 35114 MT (special_port)SH /Helvetica SF 19800 XM (the value of the port that is being requested or being set.)SH 12 /Helvetica-Bold AF 7200 37132 MT (Description)SH 10 /Courier AF 8312 38631 MT (get_special_port)SH /Helvetica SF 18323 XM (returns send rights to one of a set of special ports for the thread) 133 W( specified by)132 W /Courier SF 7200 40057 MT (thread)SH /Helvetica SF (. In the case of getting) 18 W( the thread's own)19 W /Courier SF 28699 XM (thread_reply_port)SH /Helvetica SF (, receive and ownership rights are)19 W 7200 41483 MT (also given to the thread.)SH /Courier SF 8312 44050 MT (set_special_port)SH /Helvetica SF 18190 XM (sets one of a set of special ports for the thread specified by)SH /Courier SF 44593 XM (thread)SH /Helvetica SF (.)SH /Courier SF 8312 46617 MT (thread_self)SH /Helvetica SF 15426 XM (returns the port to) 236 W( which kernel calls for the currently executing thread should be)235 W 7200 48043 MT (directed. Currently,)494 W /Courier SF 16528 XM (thread_self)SH /Helvetica SF 23515 XM (returns the)109 W /Helvetica-Bold SF 28791 XM (thread kernel port)109 W /Helvetica SF 37898 XM (which is a port for which the kernel)109 W 7200 49469 MT (has receive rights and which it uses to) 35 W( identify a thread. In the future it may be possible for one thread to)34 W 7200 50895 MT (interpose a) 85 W( port as another's thread's kernel port. At that time,)86 W /Courier SF 35825 XM (thread_self)SH /Helvetica SF 42789 XM (will still return the port to)86 W 7200 52321 MT (which the executing thread should direct kernel calls,) 65 W( but it may no longer be a port on which the kernel)64 W 7200 53747 MT (has receive rights.)SH 8312 56314 MT (If one) 74 W( thread, the controller, has send access to the kernel port of another thread, the subject thread,)75 W 7200 57740 MT (then the controller thread can perform kernel operations) 71 W( for the subject thread. Normally only the thread)70 W 7200 59166 MT (itself and) 63 W( its parent task will have access to the thread kernel port, but any thread may pass rights to its)64 W 7200 60592 MT (kernel port to any other thread.)SH /Courier SF 8312 63159 MT (thread_reply)SH /Helvetica SF 15818 XM (returns receive, ownership and send rights to the)28 W /Helvetica-Bold SF 37941 XM (reply port)28 W /Helvetica SF 42886 XM (of the calling thread. The)27 W 7200 64585 MT (reply port is a port to which the thread has receive rights. It is) 32 W( used to receive any initialization messages)33 W 7200 66011 MT (and as a reply port for early remote procedure calls.)SH 8312 68578 MT (The following macros to call)221 W /Courier SF 22031 XM (thread_get/set_special_port)SH /Helvetica SF 38729 XM (for a specific port are defined in)220 W /Courier SF 7200 70004 MT ()SH /Helvetica SF (:)SH /Courier SF 26561 XM (thread_get_reply_port)SH /Helvetica SF (,)SH /Courier SF 41122 XM (thread_set_reply_port)SH /Helvetica SF (,)SH /Courier SF 7200 71430 MT (thread_get_exception_port)SH /Helvetica SF 22478 XM (and)SH /Courier SF 24424 XM (thread_set_exception_port)SH /Helvetica SF (.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 46 47 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (46)SH /Helvetica SF 8312 7929 MT (A thread also has access to its task's special ports.)SH 12 /Helvetica-Bold AF 7200 9915 MT (Returns)SH 10 /Courier AF 10904 11787 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The port was returned or set.)SH /Courier SF 10904 13413 MT (KERN_INVALID_ARGUMENT)SH 19800 14556 MT (thread)SH /Helvetica SF 23678 XM (is not a thread or)SH /Courier SF 31460 XM (which_port)SH /Helvetica SF 37738 XM (is an invalid port selector.)SH 12 /Helvetica-Bold AF 7200 16574 MT (See Also)SH 10 /Courier AF 8312 18000 MT (task_special_ports,thread_create)SH 12 /Helvetica-Bold AF 7200 19986 MT (Notes)SH 10 /Courier AF 8312 21485 MT (THREAD_KERNEL_PORT)SH /Helvetica SF 19390 XM (may be added to the set of ports that)SH /Courier SF 35956 XM (thread_set_special_port)SH /Helvetica SF 50034 XM (accepts.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 47 48 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (47)SH 12 SS 7200 8075 MT (thread_info)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 11626 MT (/* the definition of thread_info_data_t from mach.h - mach/thread_info.h is */)SH 9000 13688 MT (typedef int) 3000 W( *thread_info_t;) 2400 W( /* variable length array of int */)SH 7200 15750 MT (/* only current interpretation of thread_info */)SH 9000 17812 MT (struct thread_basic_info {)SH 12000 18843 MT (time_value_t user_time;) 1800 W( /*) 3000 W( user run time */)SH 12000 19874 MT (time_value_t system_time; /*) 1800 W( system run time */)SH 12000 20905 MT (int cpu_usage;) 7200 W( /*) 3000 W( scaled cpu usage percentage */)SH 12000 21936 MT (int base_priority;) 7200 W( /*) 600 W( base scheduling priority */)SH 12000 22967 MT (int cur_priority;) 7200 W( /*) 1200 W( current scheduling priority */)SH 12000 23998 MT (int run_state;) 7200 W( /*) 3000 W( run state \050see below\051 */)SH 12000 25029 MT (int flags;) 7200 W( /*) 5400 W( various flags \050see below\051 */)SH 12000 26060 MT (int suspend_count;) 7200 W( /*) 600 W( suspend count for thread */)SH 12000 27091 MT (long sleep_time;) 6600 W( /*) 2400 W( number of seconds that thread)SH 33000 28122 MT (has been sleeping */)SH 9000 29153 MT (};)SH 9000 30184 MT (typedef struct thread_basic_info) SH( *thread_basic_info_t;)2400 W 9000 32246 MT (The possible values of the run_state field are:)SH 12000 33277 MT (TH_STATE_RUNNING, thread is running normally)SH 12000 34308 MT (TH_STATE_STOPPED, thread is suspended)SH 12000 35339 MT (TH_STATE_WAITING, thread is waiting normally)SH 12000 36370 MT (TH_STATE_UNINTERRUPTIBLE, thread is in an uninterruptible wait)SH 12000 37401 MT (TH_STATE_HALTED, thread is halted at a clean point)SH 9000 39463 MT (The possible values of the flags field are:)SH 12000 40494 MT (TH_FLAGS_SWAPPED, thread is swapped out)SH 12000 41525 MT (TH_FLAGS_IDLE, thread is an idle thread)SH 7200 45076 MT (kern_return_t thread_info\050target_thread, flavor, thread_info,)SH 26400 46107 MT (thread_infoCnt\051)SH 12000 47138 MT (thread_t target_thread;)9000 W 12000 48169 MT (int flavor;)12000 W 12000 49200 MT (thread_info_t thread_info;) 6000 W( /*) 1800 W( in and out */)SH 12000 50231 MT (unsigned int) SH( *thread_infoCnt;) 6600 W( /*) 600 W( in and out */)SH 12 /Helvetica-Bold AF 7200 53248 MT (Arguments)SH 10 /Courier AF 10904 55120 MT (target_thread)SH /Helvetica SF 19800 XM (The thread to be affected.)SH /Courier SF 10904 56746 MT (flavor)SH /Helvetica SF 19800 XM (The type of statistics that are wanted.) 43 W( Currently) 366 W( only)44 W /Courier SF 43800 XM (THREAD_BASIC_INFO)SH /Helvetica SF 19800 57889 MT (is implemented.)SH /Courier SF 10904 59515 MT (thread_info)SH /Helvetica SF 19800 XM (Statistics about the thread specified by)SH /Courier SF 37198 XM (target_thread)SH /Helvetica SF (.)SH /Courier SF 10904 61141 MT (thread_infoCnt)SH /Helvetica SF 19800 XM (Size of the info structure. Currently only)202 W /Courier SF 38999 XM (THREAD_BASIC_INFO_COUNT)SH /Helvetica SF 53278 XM (is)SH 19800 62284 MT (implemented.)SH 12 /Helvetica-Bold AF 7200 64302 MT (Description)SH 10 /Helvetica AF 8312 65801 MT (Returns the selected information array for a thread, as specified by)13 W /Courier SF 38246 XM (flavor)SH /Helvetica SF (.)SH /Courier SF 42415 XM (thread_info)SH /Helvetica SF 49306 XM (is an array)13 W 7200 67227 MT (of integers that) 56 W( is supplied by the caller and returned filled with specified information.)55 W /Courier SF 45600 XM (thread_infoCnt)SH /Helvetica SF 7200 68653 MT (is supplied as the) 230 W( maximum number of integers in)231 W /Courier SF 31562 XM (thread_info)SH /Helvetica SF (. On return, it contains the actual)231 W 7200 70079 MT (number of integers in)SH /Courier SF 16871 XM (thread_info)SH /Helvetica SF (.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 48 49 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (48)SH /Helvetica SF 8312 7929 MT (Currently there is only one flavor of) 73 W( information which is defined by)72 W /Courier SF 38916 XM (THREAD_BASIC_INFO)SH /Helvetica SF (. Its size is)72 W 7200 9355 MT (defined by)SH /Courier SF 12092 XM (THREAD_BASIC_INFO_COUNT)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 11341 MT (Returns)SH 10 /Courier AF 10904 13213 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 14839 MT (KERN_INVALID_ARGUMENT)SH 19800 15982 MT (target_thread)SH /Helvetica SF 27878 XM (is not a thread or)SH /Courier SF 35660 XM (flavor)SH /Helvetica SF 39538 XM (is not recognized.)SH /Courier SF 10904 17608 MT (MIG_ARRAY_TOO_LARGE)SH /Helvetica SF 19800 18751 MT (Returned info array is too large) 29 W( for)30 W /Courier SF 35456 XM (thread_info)SH /Helvetica SF (.)SH /Courier SF 42642 XM (thread_info)SH /Helvetica SF 49550 XM (is filled as)30 W 19800 19894 MT (much as possible.)66 W /Courier SF 28623 XM (thread_infoCnt)SH /Helvetica SF 37367 XM (is set to the) 66 W( number of elements that)65 W 19800 21037 MT (would have been returned if there were enough room.)SH 12 /Helvetica-Bold AF 7200 23055 MT (See Also)SH 10 /Courier AF 8312 24481 MT (thread_special_ports, task_threads,) 278 0 WX(task_info, thread_state)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 49 50 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (49)SH 12 SS 7200 8075 MT (thread_state)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t thread_get_state\050target_thread, flavor, old_state,)SH 26400 13115 MT (old_stateCnt\051)SH 12000 14146 MT (thread_t target_thread;)9000 W 12000 15177 MT (int flavor;)12000 W 12000 16208 MT (thread_state_data_t old_state;) 2400 W( /*) 3000 W( in and out */)SH 12000 17239 MT (unsigned int) SH( *old_stateCnt;) 6600 W( /*) 600 W( in and out */)SH 7200 19759 MT (kern_return_t thread_set_state\050target_thread, flavor, new_state,)SH 26400 20790 MT (new_stateCnt\051)SH 12000 21821 MT (thread_t target_thread;)9000 W 12000 22852 MT (int flavor;)12000 W 12000 23883 MT (thread_state_data_t new_state;)2400 W 12000 24914 MT (unsigned int) SH( new_stateCnt;)6600 W 12 /Helvetica-Bold AF 7200 27931 MT (Arguments)SH 10 /Courier AF 10904 29803 MT (target_thread)SH /Helvetica SF 19800 XM (thread to get or set the state for.)SH /Courier SF 10904 31429 MT (flavor)SH /Helvetica SF 19800 XM (The type of state) 171 W( that is to be manipulated. Currently must be one of the)172 W 19800 32572 MT (following values:)1984 W /Courier SF 31382 XM (VAX_THREAD_STATE)SH /Helvetica SF (,)SH /Courier SF 43522 XM (ROMP_THREAD_STATE)SH /Helvetica SF (,)SH /Courier SF 19800 33715 MT (SUN_THREAD_STATE_REGS)SH /Helvetica SF (,)SH /Courier SF 32956 XM (SUN_THREAD_STATE_FPA)SH 10904 35341 MT (new_state)SH /Helvetica SF 19800 XM (an array of state information)SH /Courier SF 10904 36967 MT (old_state)SH /Helvetica SF 19800 XM (an array of state information)SH /Courier SF 10904 38593 MT (new_stateCnt)SH /Helvetica SF 19800 XM (the size of the state information array. Currently must be) 31 W( one of the following)32 W 19800 39736 MT (values:)SH /Courier SF 24706 XM (VAX_THREAD_STATE_COUNT)SH /Helvetica SF (,)SH /Courier SF 39922 XM (ROMP_THREAD_STATE_COUNT)SH /Helvetica SF (,)SH /Courier SF 19800 40879 MT (SUN_THREAD_STATE_REGS_COUNT)SH /Helvetica SF (,)SH /Courier SF 36556 XM (SUN_THREAD_STATE_FPA_COUNT)SH 10904 42505 MT (old_stateCnt)SH /Helvetica SF 19800 XM (same as)SH /Courier SF 23857 XM (new_stateCnt)SH 12 /Helvetica-Bold AF 7200 44523 MT (Description)SH 10 /Courier AF 8312 46022 MT (thread_get_state)SH /Helvetica SF 18225 XM (returns the state component \050e.g. the machine registers\051 of)35 W /Courier SF 44830 XM (target_thread)SH /Helvetica SF 52944 XM (as)SH 7200 47448 MT (specified by)47 W /Courier SF 12852 XM (flavor)SH /Helvetica SF (. The)372 W /Courier SF 19428 XM (old_state)SH /Helvetica SF 25153 XM (is an array of integers) 47 W( that is provided by the caller and returned)46 W 7200 48874 MT (filled with the specified information.)113 W /Courier SF 23549 XM (old_stateCnt)SH /Helvetica SF 31140 XM (is input set to the maximum number of integers) 113 W( in)114 W /Courier SF 7200 50300 MT (old_state)SH /Helvetica SF 12878 XM (and returned equal to the actual number of integers in)SH /Courier SF 36947 XM (old_state)SH /Helvetica SF (.)SH /Courier SF 8312 52867 MT (thread_set_state)SH /Helvetica SF 18342 XM (sets the state) 152 W( component \050e.g. the machine registers\051 of)151 W /Courier SF 44715 XM (target_thread)SH /Helvetica SF 52944 XM (as)SH 7200 54293 MT (specified by)287 W /Courier SF 13332 XM (flavor)SH /Helvetica SF (. The)852 W /Courier SF 20628 XM (new_state)SH /Helvetica SF 26593 XM (is an array of integers.)287 W /Courier SF 38200 XM (new_stateCnt)SH /Helvetica SF 45966 XM (is the number of)288 W 7200 55719 MT (elements in)341 W /Courier SF 13273 XM (new_state)SH /Helvetica SF (. The entire set of registers is) 341 W( reset. This will do unpredictable things if)340 W /Courier SF 7200 57145 MT (target_thread)SH /Helvetica SF 15278 XM (is not suspended.)SH /Courier SF 8312 59712 MT (target_thread)SH /Helvetica SF 16390 XM (may not be)SH /Courier SF 21615 XM (thread_self)SH /Helvetica SF 28493 XM (for either of these calls.)SH 8312 62279 MT (The definition of the state structures can be found in )SH 12 /Helvetica-Bold AF 7200 64265 MT (Returns)SH 10 /Courier AF 10904 66137 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The state has been set or returned)SH /Courier SF 10904 67763 MT (MIG_ARRAY_TOO_LARGE)SH /Helvetica SF 19800 68906 MT (Returned state is too large for the)65 W /Courier SF 35374 XM (new_state)SH /Helvetica SF 41117 XM (array.)SH /Courier SF 44016 XM (new_state)SH /Helvetica SF 49759 XM (is filled) 65 W( in)64 W 19800 70049 MT (as much as) 100 W( possible and)101 W /Courier SF 31586 XM (new_stateCnt)SH /Helvetica SF 39165 XM (is set to the number of elements)101 W 19800 71192 MT (that would be returned if there were enough room.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 50 51 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (50)SH /Courier SF 10904 7824 MT (KERN_INVALID_ARGUMENT)SH 19800 8967 MT (target_thread)SH /Helvetica SF 28347 XM (is not a thread or) 469 W( is)470 W /Courier SF 39945 XM (thread_self)SH /Helvetica SF 47293 XM (or)SH /Courier SF 48930 XM (flavor)SH /Helvetica SF 53278 XM (is)SH 19800 10110 MT (unrecogized for this machine.)SH 12 /Helvetica-Bold AF 7200 12128 MT (See Also)SH 10 /Courier AF 8312 13554 MT (task_info, thread_info)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 51 52 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (51)SH 12 SS 7200 8075 MT (5. Virtual memory primitives)SH 11 SS 7200 11757 MT (5.1. Basic terms)SH 10 /Helvetica AF 8312 13183 MT (Each)SH 8 SS 10955 XM (MACH)SH 10 SS 13675 XM (task has a large virtual address space within which) 86 W( its threads execute. A virtual address)85 W 7200 14609 MT (space is divided into fixed size pages. The size) 99 W( of a virtual page is set at system initialization and may)100 W 7200 16035 MT (differ on) 171 W( different machines. A virtual address space may be sparse, that is, there may be ranges of)170 W 7200 17461 MT (addresses which are not allocated followed by ranges that are allocated.)SH 8312 20028 MT (A task may allocate virtual memory in its address space;) 66 W( physical memory will be acquired only when)67 W 7200 21454 MT (necessary, and seldom-used memory may be paged to backing storage.)SH 8312 24021 MT (A)SH /Helvetica-Bold SF 9267 XM (region)SH /Helvetica SF 12611 XM (of an address space is that memory associated with a continuous range of) 10 W( addresses; that is,)9 W 7200 25447 MT (a start address and an end address. The)11 W 8 SS 25865 XM (MACH)SH 10 SS 28510 XM (kernel will extend regions) 11 W( to include entire virtual memory)12 W 7200 26873 MT (pages containing the first and last address in a specified range. Regions consist of) 108 W( pages which have)107 W 7200 28299 MT (different protection or inheritance characteristics.)SH 8312 30866 MT (A task may protect the) 24 W( virtual pages of its address space to allow/prevent access to that memory. The)25 W /Helvetica-Bold SF 7200 32292 MT (current protection)275 W /Helvetica SF 16640 XM (is used to determine the access rights) 275 W( of an executing thread. In addition, a)274 W /Helvetica-Bold SF 7200 33718 MT (maximum protection)SH /Helvetica SF 17313 XM (value limits the)SH /Helvetica-Bold SF 24204 XM (current protection)SH /Helvetica SF (.)SH 8312 36285 MT (A task may specify that pages of its address space be inherited by) 102 W( child tasks in one of three ways:)103 W /Helvetica-Bold SF 7200 37711 MT (shared)SH /Helvetica SF (,)SH /Helvetica-Bold SF 11076 XM (copied)SH /Helvetica SF (, or)41 W /Helvetica-Bold SF 16104 XM (absent)SH /Helvetica SF (. Inheritance) 360 W( may be changed at any time; only at the time of task creation is)41 W 7200 39137 MT (inheritance information used. The only way two)89 W 8 SS 28943 XM (MACH)SH 10 SS 31666 XM (tasks can share the same) 89 W( physical memory is for)90 W 7200 40563 MT (one of the) 83 W( tasks to inherit shared access to memory from a parent. When a child task inherits memory)82 W 7200 41989 MT (from a parent, it gets the same protection on that memory that its parent had.)SH 8312 44556 MT (Protection and inheritance is attached to a task's address space, not the physical) 22 W( memory contained in)23 W 7200 45982 MT (that address space. Tasks which share memory may specify different protection or) 82 W( inheritance for their)81 W 7200 47408 MT (shared regions.)SH 8312 49975 MT (Physical pages in an address space have) 29 W( paging objects associated with them. These objects identify)30 W 7200 51401 MT (the backing storage to be used when a page is to be read) 68 W( in as the result of a reference or written to in)67 W 7200 52827 MT (order to) 204 W( free physical memory. A paging object is identified outside of the kernel by an unforgeable)205 W 7200 54253 MT (identifier \050implemented as a port which is only used for identification and not message) 30 W( transmission\051, and)29 W 7200 55679 MT (inside the kernel by a data transmission port, that will respond to get and put page calls.)SH 8312 58246 MT (In addition to) 287 W( memory explicitly allocated using)288 W /Courier SF 31223 XM (vm_allocate)SH /Helvetica SF (, memory may appear in a task's)288 W 7200 59672 MT (address space as the result of a)SH /Courier SF 21652 XM (msg_receive)SH /Helvetica SF 28530 XM (operation.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 52 53 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (52)SH 12 SS 7200 8075 MT (vm_allocate)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t vm_allocate\050target_task, address, size, anywhere\051)SH 12000 13115 MT (vm_task_t target_task;)3600 W 12000 14146 MT (vm_address_t *address;) 1800 W( /*) 3600 W( in/out */)SH 12000 15177 MT (vm_size_t size;)3600 W 12000 16208 MT (boolean_t anywhere;)3600 W 12 /Helvetica-Bold AF 7200 19225 MT (Arguments)SH 10 /Courier AF 10904 21097 MT (target_task)SH /Helvetica SF 19800 XM (Task whose virtual address space is to be affected.)SH /Courier SF 10904 22723 MT (address)SH /Helvetica SF 19800 XM (Starting address. If the)171 W /Courier SF 31272 XM (anywhere)SH /Helvetica SF 36521 XM (option is false, an) 171 W( attempt is made to)170 W 19800 23866 MT (allocate virtual memory) 5 W( starting at this virtual address. If this address is not at)6 W 19800 25009 MT (the beginning of a virtual page, it will be rounded down to one.) 24 W( If) 324 W( there is not)23 W 19800 26152 MT (enough space at this address, no memory will be allocated. If the) 44 W( anywhere)45 W 19800 27295 MT (option is true, the input value of this) 81 W( address will be ignored, and the space)80 W 19800 28438 MT (will be allocated wherever it is available. In either case,) 13 W( the address at which)14 W 19800 29581 MT (memory was actually allocated will be returned in)SH /Courier SF 41807 XM (address)SH /Helvetica SF (.)SH /Courier SF 10904 31207 MT (size)SH /Helvetica SF 19800 XM (Number of bytes) 30 W( to allocate \050rounded by the system in a machine dependent)29 W 19800 32350 MT (way to an integral number of virtual pages\051.)SH /Courier SF 10904 33976 MT (anywhere)SH /Helvetica SF 19800 XM (If true, the kernel should find and allocate any region of the) 125 W( specified size,)126 W 19800 35119 MT (and return the address of the) 132 W( resulting region in)131 W /Courier SF 42273 XM (address)SH /Helvetica SF (. If) 540 W( false, virtual)131 W 19800 36262 MT (memory will be allocated starting at)226 W /Courier SF 37050 XM (address)SH /Helvetica SF (, rounded to a) 226 W( virtual page)227 W 19800 37405 MT (boundary if there is sufficient space.)SH 12 /Helvetica-Bold AF 7200 39423 MT (Description)SH 10 /Courier AF 8312 40922 MT (vm_allocate)SH /Helvetica SF 15311 XM (allocates a region of) 121 W( virtual memory, placing it in the specified task's address space.)120 W 7200 42348 MT (The physical memory is not actually allocated until the new) 39 W( virtual memory is referenced. By default, the)40 W 7200 43774 MT (kernel rounds all addresses down to the) 66 W( nearest page boundary and all memory sizes up to the nearest)65 W 7200 45200 MT (page size. The) 64 W( global variable)65 W /Courier SF 21427 XM (vm_page_size)SH /Helvetica SF 28970 XM (contains the page size.)65 W /Courier SF 40079 XM (task_self_)SH /Helvetica SF 46422 XM (returns the value)65 W 7200 46626 MT (of the current task port which should be) 8 W( used as the)7 W /Courier SF 30463 XM (target_task)SH /Helvetica SF 37348 XM (argument in order to allocate memory)7 W 7200 48052 MT (in the caller's address space. For languages other) 153 W( than C, these values can be obtained by the calls)154 W /Courier SF 7200 49478 MT (vm_statistics)SH /Helvetica SF 15332 XM (and)SH /Courier SF 17332 XM (task_self)SH /Helvetica SF (. Initially,) 386 W( the pages of allocated memory will be protected to) 54 W( allow all)53 W 7200 50904 MT (forms of access, and will be inherited in child tasks as) 14 W( a copy. Subsequent calls to)15 W /Courier SF 44239 XM (vm_protection)SH /Helvetica SF 52332 XM (and)SH /Courier SF 7200 52330 MT (vm_inheritance)SH /Helvetica SF 15878 XM (may be used to change these properties. The allocated region is always zero-filled.)SH 12 /Helvetica-Bold AF 7200 54316 MT (Returns)SH 10 /Courier AF 10904 56188 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (Memory allocated.)SH /Courier SF 10904 57814 MT (KERN_INVALID_ADDRESS)SH /Helvetica SF 19800 58957 MT (Illegal address specified.)SH /Courier SF 10904 60583 MT (KERN_NO_SPACE)SH /Helvetica SF 19800 XM (Not enough space left to satisfy this request)SH 12 /Helvetica-Bold AF 7200 62601 MT (See Also)SH 10 /Courier AF 8312 64027 MT (vm_deallocate, vm_inherit, vm_protect, vm_regions, vm_statistics,) 278 0 WX(task_self_)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 53 54 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (53)SH 12 SS 7200 8075 MT (vm_deallocate)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t vm_deallocate\050target_task, address, size\051)SH 12000 13115 MT (vm_task_t target_task;)3600 W 12000 14146 MT (vm_address_t address;)1800 W 12000 15177 MT (vm_size_t size;)3600 W 12 /Helvetica-Bold AF 7200 18194 MT (Arguments)SH 10 /Courier AF 10904 20066 MT (target_task)SH /Helvetica SF 19800 XM (Task whose virtual memory is to be affected.)SH /Courier SF 10904 21692 MT (address)SH /Helvetica SF 19800 XM (Starting address \050will be rounded down to a page boundary\051.)SH /Courier SF 10904 23318 MT (size)SH /Helvetica SF 19800 XM (Number of bytes to deallocate \050will be rounded up to give a page boundary\051.)SH 12 /Helvetica-Bold AF 7200 25336 MT (Description)SH 10 /Courier AF 8312 26835 MT (vm_deallocate)SH /Helvetica SF 16436 XM (relinquishes access to a region of a task's address) 46 W( space, causing further access to)47 W 7200 28261 MT (that memory to fail. This address range will be available for reallocation. Note, that because) 170 W( of the)169 W 7200 29687 MT (rounding to virtual page boundaries, more) 56 W( than)57 W /Courier SF 28605 XM (size)SH /Helvetica SF 31340 XM (bytes may be deallocated. Use)57 W /Courier SF 45576 XM (vm_page_size)SH /Helvetica SF 53111 XM (or)SH /Courier SF 7200 31113 MT (vm_statistics)SH /Helvetica SF 15278 XM (to find out the current virtual page size.)SH 8312 33680 MT (This call may be used to deallocte memory) 123 W( that was passed to a task in a message \050via out of line)122 W 7200 35106 MT (data\051. In) 36 W( that case, the rounding should cause no trouble, since the region of memory was allocated as a)37 W 7200 36532 MT (set of pages.)SH 8312 39099 MT (The)SH /Courier SF 10464 XM (vm_deallocate)SH /Helvetica SF 18693 XM (call affects only the task specified by) 151 W( the)150 W /Courier SF 38019 XM (target_task)SH /Helvetica SF (. Other) 578 W( tasks which)150 W 7200 40525 MT (may have access to this memory may continue to reference it.)SH 12 /Helvetica-Bold AF 7200 42511 MT (Returns)SH 10 /Courier AF 10904 44383 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (Memory deallocated.)SH /Courier SF 10904 46009 MT (KERN_INVALID_ADDRESS)SH /Helvetica SF 19800 47152 MT (Illegal or non-allocated address specified.)SH 12 /Helvetica-Bold AF 7200 49170 MT (See Also)SH 10 /Courier AF 8312 50596 MT (vm_allocate, vm_statistics, msg_receive)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 54 55 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (54)SH 12 SS 7200 8075 MT (vm_read)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t vm_read\050target_task, address, size, data, data_count\051)SH 12000 13115 MT (vm_task_t target_task)3600 W 12000 14146 MT (vm_address_t address;)1800 W 12000 15177 MT (vm_size_t size;)3600 W 12000 16208 MT (pointer_t *data;) 3600 W( /*) 5400 W( out */)SH 12000 17239 MT (int *data_count;) 7200 W( /*) 1800 W( out */)SH 12 /Helvetica-Bold AF 7200 20256 MT (Arguments)SH 10 /Courier AF 10904 22128 MT (target_task)SH /Helvetica SF 19800 XM (Task whose memory is to be read.)SH /Courier SF 10904 23754 MT (address)SH /Helvetica SF 19800 XM (The first address to be read \050must be on a page boundary\051.)SH /Courier SF 10904 25380 MT (size)SH /Helvetica SF 19800 XM (The number of bytes of data to be) 216 W( read \050must be an integral number of)215 W 19800 26523 MT (pages\051)SH /Courier SF 10904 28149 MT (data)SH /Helvetica SF 19800 XM (The array of data copied from the given task.)SH /Courier SF 10904 29775 MT (data_count)SH /Helvetica SF 19800 XM (The size of the)SH /Courier SF 26637 XM (data)SH /Helvetica SF 29315 XM (array in bytes. \050will be an integral number of pages\051.)SH 12 /Helvetica-Bold AF 7200 31793 MT (Description)SH 10 /Courier AF 8312 33292 MT (vm_read)SH /Helvetica SF 12958 XM (allows one task's virtual memory to be read by another task. Note that) 168 W( the data array is)169 W 7200 34718 MT (returned in a newly allocated region; the) 40 W( task reading the data should)39 W /Courier SF 38524 XM (vm_deallocate)SH /Helvetica SF 46641 XM (this region when)39 W 7200 36144 MT (it is done with the data.)SH 12 /Helvetica-Bold AF 7200 38130 MT (Returns)SH 10 /Courier AF 10904 40002 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (Memory read.)SH /Courier SF 10904 41628 MT (KERN_INVALID_ARGUMENT)SH /Helvetica SF 19800 42771 MT (Either the address does not start on) 109 W( a page boundary or the size is not an)108 W 19800 43914 MT (integral number of pages.)SH /Courier SF 10904 45540 MT (KERN_NO_SPACE)SH /Helvetica SF 19800 XM (There is not enough room in the callers virtual) 61 W( memory to allocate space for)62 W 19800 46683 MT (the data to be returned.)SH /Courier SF 10904 48309 MT (KERN_PROTECTION_FAILURE)SH /Helvetica SF 19800 49452 MT (The address region in the target task is protected against reading.)SH /Courier SF 10904 51078 MT (KERN_INVALID_ADDRESS)SH /Helvetica SF 19800 52221 MT (Illegal or non-allocated address specified, or) 173 W( there was not)172 W /Courier SF 47476 XM (size)SH /Helvetica SF 50326 XM (bytes of)172 W 19800 53364 MT (data following that address.)SH 12 /Helvetica-Bold AF 7200 55382 MT (See Also)SH 10 /Courier AF 8312 56808 MT (vm_read, vm_write, vm_copy, vm_deallocate)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 55 56 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (55)SH 12 SS 7200 8075 MT (vm_write)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t vm_write\050target_task, address, data, data_count\051)SH 12000 13115 MT (vm_task_t target_task;)3600 W 12000 14146 MT (vm_address_t address;)1800 W 12000 15177 MT (pointer_t data;)3600 W 12000 16208 MT (int data_count;)7200 W 12 /Helvetica-Bold AF 7200 19225 MT (Arguments)SH 10 /Courier AF 10904 21097 MT (target_task)SH /Helvetica SF 19800 XM (Task whose memory is to be written.)SH /Courier SF 10904 22723 MT (address)SH /Helvetica SF 19800 XM (Starting address in task to be affected \050must be a page boundary\051.)SH /Courier SF 10904 24349 MT (data)SH /Helvetica SF 19800 XM (An array of bytes to be written.)SH /Courier SF 10904 25975 MT (data_count)SH /Helvetica SF 19800 XM (The size of the)SH /Courier SF 26637 XM (data)SH /Helvetica SF 29315 XM (array \050must be an integral number of pages\051.)SH 12 /Helvetica-Bold AF 7200 27993 MT (Description)SH 10 /Courier AF 8312 29492 MT (vm_write)SH /Helvetica SF 13640 XM (allows a task's) 250 W( virtual memory to be written by another task. Use)251 W /Courier SF 45382 XM (vm_page_size)SH /Helvetica SF 53111 XM (or)SH /Courier SF 7200 30918 MT (vm_statistics)SH /Helvetica SF 15278 XM (to find out the virtual page size.)SH 12 /Helvetica-Bold AF 7200 32904 MT (Returns)SH 10 /Courier AF 10904 34776 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (Memory written.)SH /Courier SF 10904 36402 MT (KERN_INVALID_ARGUMENT)SH /Helvetica SF 19800 37545 MT (Either the address does not start on a page boundary) 108 W( or the size is not an)109 W 19800 38688 MT (integral number of pages.)SH /Courier SF 10904 40314 MT (KERN_PROTECTION_FAILURE)SH /Helvetica SF 19800 41457 MT (The address region in the target task is protected against writing.)SH /Courier SF 10904 43083 MT (KERN_INVALID_ADDRESS)SH /Helvetica SF 19800 44226 MT (Illegal or non_allocated address specified or there) 208 W( is not)207 W /Courier SF 46681 XM (data_count)SH /Helvetica SF 53166 XM (of)SH 19800 45369 MT (allocated memory starting at)SH /Courier SF 32638 XM (address)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 47387 MT (See Also)SH 10 /Courier AF 8312 48813 MT (vm_copy, vm_protect, vm_read, vm_statistics)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 56 57 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (56)SH 12 SS 7200 8075 MT (vm_copy)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t vm_copy \050target_task, source_address, count, dest_address\051)SH 12000 13115 MT (vm_task_t target_task;)3600 W 12000 14146 MT (vm_address_t source_address;)1800 W 12000 15177 MT (vm_size_t count;)3600 W 12000 16208 MT (vm_address_t dest_address;)1800 W 12 /Helvetica-Bold AF 7200 19225 MT (Arguments)SH 10 /Courier AF 10904 21097 MT (target_task)SH /Helvetica SF 19800 XM (Task whose virtual memory is to be affected.)SH /Courier SF 10904 22723 MT (source_address)SH /Helvetica SF 19800 XM (Address in)92 W /Courier SF 24986 XM (target_task)SH /Helvetica SF 31956 XM (of the start of the source range \050must be a) 92 W( page)93 W 19800 23866 MT (boundary\051.)SH /Courier SF 10904 25492 MT (count)SH /Helvetica SF 19800 XM (Number of bytes to copy \050must be an integral number of pages\051.)SH /Courier SF 10904 27118 MT (dest_address)SH /Helvetica SF 19800 XM (Address in)156 W /Courier SF 25114 XM (target_task)SH /Helvetica SF 32148 XM (of the) 156 W( start of the destination range \050must be a)155 W 19800 28261 MT (page boundary\051.)SH 12 /Helvetica-Bold AF 7200 30279 MT (Description)SH 10 /Courier AF 8312 31778 MT (vm_copy)SH /Helvetica SF 12922 XM (causes the source memory range to) 132 W( be copied to the destination address; the destination)133 W 7200 33204 MT (region may not overlap the source region. The destination address) 42 W( range must already be allocated and)41 W 7200 34630 MT (writable; the source range must be readable.)SH 12 /Helvetica-Bold AF 7200 36616 MT (Returns)SH 10 /Courier AF 10904 38488 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (Memory copied.)SH /Courier SF 10904 40114 MT (KERN_INVALID_ARGUMENT)SH /Helvetica SF 19800 41257 MT (Either the address does not start on) 109 W( a page boundary or the size is not an)108 W 19800 42400 MT (integral number of pages.)SH /Courier SF 10904 44026 MT (KERN_PROTECTION_FAILURE)SH /Helvetica SF 19800 45169 MT (Either the) 95 W( destination region was not not writable, or the source region was)94 W 19800 46312 MT (not readable.)SH /Courier SF 10904 47938 MT (KERN_INVALID_ADDRESS)SH /Helvetica SF 19800 49081 MT (Illegal or) 71 W( non-allocated address specified or insufficient memory allocated at)70 W 19800 50224 MT (one of the addresses.)SH 12 /Helvetica-Bold AF 7200 52242 MT (See Also)SH 10 /Courier AF 8312 53668 MT (vm_protect, vm_write, vm_statistics)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 57 58 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (57)SH 12 SS 7200 8075 MT (vm_region)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t vm_region\050target_task,) 600 W( address, size, protection,)SH 22200 13115 MT (max_protection, inheritance, shared,)SH 22200 14146 MT (object_name, offset\051)SH 12000 15177 MT (vm_task_t target_task;)8400 W 12000 16208 MT (vm_address_t *address;) 6600 W( /*) 8400 W( in/out */)SH 12000 17239 MT (vm_size_t *size;) 8400 W( /*) 10200 W( out */)SH 12000 18270 MT (vm_prot_t *protection;) 8400 W( /*) 6600 W( out */)SH 12000 19301 MT (vm_prot_t *max_protection;) 8400 W( /*) 4200 W( out */)SH 12000 20332 MT (vm_inherit_t *inheritance;) 6600 W( /*) 6000 W( out */)SH 12000 21363 MT (boolean_t *shared;) 8400 W( /*) 9000 W( out */)SH 12000 22394 MT (port_t *object_name;) 10200 W( /*) 6000 W( out */)SH 12000 23425 MT (vm_offset_t *offset;) 7200 W( /*) 9000 W( out */)SH 12 /Helvetica-Bold AF 7200 26442 MT (Arguments)SH 10 /Courier AF 10904 28314 MT (target_task)SH /Helvetica SF 19800 XM (The task for which an address space description is requested.)SH /Courier SF 10904 29940 MT (address)SH /Helvetica SF 19800 XM (The address at which to start looking for a region.)SH /Courier SF 10904 31566 MT (size)SH /Helvetica SF 19800 XM (The size \050in bytes\051 of the located region.)SH /Courier SF 10904 33192 MT (protection)SH /Helvetica SF 19800 XM (The current protection of the region.)SH /Courier SF 10904 34818 MT (max_protection)SH /Helvetica SF 19800 XM (The maximum allowable protection for this region.)SH /Courier SF 10904 36444 MT (inheritance)SH /Helvetica SF 19800 XM (The inheritance attribute for this region.)SH /Courier SF 10904 38070 MT (shared)SH /Helvetica SF 19800 XM (Is this region shared or not.)SH /Courier SF 10904 39696 MT (object_name)SH /Helvetica SF 19800 XM (The port identifying) 203 W( the memory object associated with this region. \050See)204 W /Courier SF 19800 40839 MT (pager_init)SH /Helvetica SF (.\051)SH /Courier SF 10904 42465 MT (offset)SH /Helvetica SF 19800 XM (The offset into the pager object that this region begins at.)SH 12 /Helvetica-Bold AF 7200 44483 MT (Description)SH 10 /Courier AF 8312 45982 MT (vm_region)SH /Helvetica SF 14165 XM (returns a description of the specified region of the target task's virtual address space.)174 W /Courier SF 7200 47408 MT (vm_region)SH /Helvetica SF 12928 XM (begins at)50 W /Courier SF 17364 XM (address)SH /Helvetica SF 21892 XM (and looks forward thru memory until it comes to an allocated region.) 50 W( \050If)379 W 7200 48834 MT (address is within) 146 W( a region, then that region is used.\051 Various bits of information about the region are)145 W 7200 50260 MT (returned. If)421 W /Courier SF 12807 XM (address)SH /Helvetica SF 17357 XM (was)SH /Helvetica-Bold SF 19485 XM (not)SH /Helvetica SF 21390 XM (within a region, then)72 W /Courier SF 30905 XM (address)SH /Helvetica SF 35455 XM (is set to the start of the first region which)72 W 7200 51686 MT (follows the incoming value. In this way an entire address space can be scanned.)SH 12 /Helvetica-Bold AF 7200 53672 MT (Returns)SH 10 /Courier AF 10904 55544 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (Region located and information returned.)SH /Courier SF 10904 57170 MT (KERN_NO_SPACE)SH /Helvetica SF 19800 XM (There is no region at or above)SH /Courier SF 33418 XM (address)SH /Helvetica SF 37896 XM (in the specified task.)SH 12 /Helvetica-Bold AF 7200 59188 MT (See Also)SH 10 /Courier AF 8312 60614 MT (vm_allocate, vm_deallocate, vm_protect, vm_inherit)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 58 59 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (58)SH 12 SS 7200 8075 MT (vm_protect)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t vm_protect\050target_task, address, size, set_maximum,)SH 26400 13115 MT (new_protection\051)SH 12000 14146 MT (vm_task_t target_task;)3600 W 12000 15177 MT (vm_address_t address;)1800 W 12000 16208 MT (vm_size_t size;)3600 W 12000 17239 MT (boolean_t set_maximum;)3600 W 12000 18270 MT (vm_prot_t new_protection;)3600 W 12 /Helvetica-Bold AF 7200 21287 MT (Arguments)SH 10 /Courier AF 10904 23159 MT (target_task)SH /Helvetica SF 19800 XM (Task whose virtual memory is to be affected.)SH /Courier SF 10904 24785 MT (address)SH /Helvetica SF 19800 XM (Starting address \050will be rounded down to a page boundary\051.)SH /Courier SF 10904 26411 MT (size)SH /Helvetica SF 19800 XM (Size in bytes of the region for which protection is to change \050will) 53 W( be rounded)52 W 19800 27554 MT (up to give a page boundary\051.)SH /Courier SF 10904 29180 MT (set_maximum)SH /Helvetica SF 19800 XM (If set, make) 440 W( the protection change apply to the maximum protection)441 W 19800 30323 MT (associated with this address range; otherwise, the) 80 W( current protection on this)79 W 19800 31466 MT (range is changed. If) 112 W( the maximum protection is reduced below the current)113 W 19800 32609 MT (protection, both will be changed to reflect the new maximum.)SH /Courier SF 10904 34235 MT (new_protection)SH /Helvetica SF 19800 XM (A new) 510 W( protection value for this region; a set of:)509 W /Courier SF 46522 XM (VM_PROT_READ)SH /Helvetica SF (,)SH /Courier SF 19800 35378 MT (VM_PROT_WRITE)SH /Helvetica SF (,)SH /Courier SF 28156 XM (VM_PROT_EXECUTE)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 37396 MT (Description)SH 10 /Courier AF 8312 38895 MT (vm_protect)SH /Helvetica SF 14660 XM (sets the virtual) 70 W( memory access privileges for a range of allocated addresses in a task's)71 W 7200 40321 MT (virtual address space. The protection argument describes a combination of) 179 W( read, write, and execute)178 W 7200 41747 MT (accesses that should be)SH /Helvetica-Bold SF 18206 XM (permitted)SH /Helvetica SF (.)SH 8312 44314 MT (The enforcement of virtual) 106 W( memory protection is machine-dependent. Some combinations of access)107 W 7200 45740 MT (rights may not be supported. In particular, the kernel interface allows) 262 W( any of the following: write)261 W 7200 47166 MT (permission may imply read permission; read permission may imply execute) 246 W( permission; or, execute)247 W 7200 48592 MT (permission may imply read permission.)SH 8312 51159 MT (All architectures must support the) 1 W( following access combinations: all \050read, write, and execute\051 access;)SH 7200 52585 MT (write-protected \050read and execute\051 access; no access.)SH 8312 55152 MT (For the Vax, RT/PC, and Sun3, all three of the reductions stated) 472 W( above apply. That is:)473 W /Courier SF 7200 56578 MT (VM_PROT_WRITE)SH /Helvetica SF 15341 XM (allows read, execute and write) 63 W( access,)62 W /Courier SF 33113 XM (VM_PROT_READ)SH /Helvetica SF 40653 XM (or)SH /Courier SF 41882 XM (VM_PROT_EXECUTE)SH /Helvetica SF 51222 XM (allows)SH 7200 58004 MT (read and execute access, but not write access.)SH 12 /Helvetica-Bold AF 7200 59990 MT (Returns)SH 10 /Courier AF 10904 61862 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (Memory protected.)SH /Courier SF 10904 63488 MT (KERN_PROTECTION_FAILURE)SH /Helvetica SF 19800 64631 MT (An attempt was made to increase the current or maximum protection beyond)27 W 19800 65774 MT (the existing maximum protection value.)SH /Courier SF 10904 67400 MT (KERN_INVALID_ADDRESS)SH /Helvetica SF 19800 68543 MT (Illegal or non-allocated address specified.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 59 60 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (59)SH 12 SS 7200 8075 MT (vm_inherit)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t vm_inherit\050target_task, address, size, new_inheritance\051)SH 12000 13115 MT (vm_task_t target_task;)3600 W 12000 14146 MT (vm_address_t address;)1800 W 12000 15177 MT (vm_size_t size;)3600 W 12000 16208 MT (vm_inherit_t new_inheritance;)1800 W 12 /Helvetica-Bold AF 7200 19225 MT (Arguments)SH 10 /Courier AF 10904 21097 MT (target_task)SH /Helvetica SF 19800 XM (Task whose virtual memory is to be affected.)SH /Courier SF 10904 22723 MT (address)SH /Helvetica SF 19800 XM (Starting address \050will be rounded down to a page boundary\051.)SH /Courier SF 10904 24349 MT (size)SH /Helvetica SF 19800 XM (Size in bytes) 18 W( of the region for which inheritance is to change \050will be rounded)17 W 19800 25492 MT (up to give a page boundary\051.)SH /Courier SF 10904 27118 MT (new_inheritance)SH /Helvetica SF 19800 28261 MT (How this memory is) 38 W( to be inherited in child tasks. Inheritance is specified by)37 W 19800 29404 MT (using one of these following three values:)SH /Courier SF 10904 31030 MT (VM_INHERIT_SHARE)SH /Helvetica SF 19800 32173 MT (Child tasks will share this memory with this task.)SH /Courier SF 10904 33799 MT (VM_INHERIT_COPY)SH /Helvetica SF 19800 34942 MT (Child tasks will receive a copy of this region.)SH /Courier SF 10904 36568 MT (VM_INHERIT_NONE)SH /Helvetica SF 19800 37711 MT (This region will be absent from child tasks.)SH 12 /Helvetica-Bold AF 7200 39729 MT (Description)SH 10 /Courier AF 8312 41228 MT (vm_inherit)SH /Helvetica SF 14708 XM (specifies how a region of a task's address) 118 W( space is to be passed to child tasks at the)117 W 7200 42654 MT (time of task creation. Inheritance is an attribute of virtual pages, thus the addresses and) 40 W( size of memory)41 W 7200 44080 MT (to be set will be rounded out to refer to whole pages.)SH 8312 46647 MT (Setting)SH /Courier SF 11742 XM (vm_inherit)SH /Helvetica SF 18059 XM (to)SH /Courier SF 19210 XM (VM_INHERIT_SHARE)SH /Helvetica SF 29127 XM (and forking a child task is the only way two Mach)38 W /Helvetica-Bold SF 51443 XM (tasks)SH /Helvetica SF 7200 48073 MT (can share physical memory. Remember that all the)SH /Helvetica-Bold SF 30319 XM (theads)SH /Helvetica SF 33820 XM (of a given task share all the same memory.)SH 12 /Helvetica-Bold AF 7200 50059 MT (Returns)SH 10 /Courier AF 10904 51931 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (Memory protected.)SH /Courier SF 10904 53557 MT (KERN_INVALID_ADDRESS)SH /Helvetica SF 19800 54700 MT (Illegal address specified.)SH 12 /Helvetica-Bold AF 7200 56718 MT (See Also)SH 10 /Courier AF 8312 58144 MT (task_create, vm_regions)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 60 61 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (60)SH 12 SS 7200 8075 MT (vm_statistics)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 11626 MT (struct vm_statistics {)SH 12000 12657 MT (long pagesize;) 1800 W( /*) 8400 W( page size in bytes */)SH 12000 13688 MT (long free_count;) 1800 W( /*) 7200 W( # of pages free */)SH 12000 14719 MT (long active_count;) 1800 W( /*) 6000 W( # of pages active */)SH 12000 15750 MT (long inactive_count;) 1800 W( /*) 4800 W( # of pages inactive */)SH 12000 16781 MT (long wire_count;) 1800 W( /*) 7200 W( # of pages wired down */)SH 12000 17812 MT (long zero_fill_count; /*) 1800 W( # of zero fill pages */)SH 12000 18843 MT (long reactivations;) 1800 W( /*) 5400 W( # of pages reactivated */)SH 12000 19874 MT (long pageins;) 1800 W( /*) 9000 W( # of pageins */)SH 12000 20905 MT (long pageouts;) 1800 W( /*) 8400 W( # of pageouts */)SH 12000 21936 MT (long faults;) 1800 W( /*) 9600 W( # of faults */)SH 12000 22967 MT (long cow_faults;) 1800 W( /*) 7200 W( # of copy-on-writes */)SH 12000 23998 MT (long lookups;) 1800 W( /*) 9000 W( object cache lookups */)SH 12000 25029 MT (long hits;) 1800 W( /*) 10800 W( object cache hits */)SH 7200 26060 MT (};)SH 7200 28122 MT (typedef struct vm_statistics) SH( vm_statistics_data_t;)1800 W 7200 30642 MT (kern_return_t vm_statistics\050target_task,) 1200 W( vm_stats\051)SH 12000 31673 MT (task_t target_task;)10200 W 12000 32704 MT (vm_statistics_data_t *vm_stats;) 1800 W( /*) 3000 W( out */)SH 12 /Helvetica-Bold AF 7200 35721 MT (Arguments)SH 10 /Courier AF 10904 37593 MT (target_task)SH /Helvetica SF 19800 XM (Task which is requesting statistics.)SH /Courier SF 10904 39219 MT (vm_stats)SH /Helvetica SF 19800 XM (The structure that will receive the statistics.)SH 12 /Helvetica-Bold AF 7200 41237 MT (Description)SH 10 /Courier AF 8312 42736 MT (vm_statistics)SH /Helvetica SF 16489 XM (returns the) 99 W( statistics about the kernel's use of virtual memory since the kernel was)98 W 7200 44162 MT (booted.)SH /Courier SF 11703 XM (pagesize)SH /Helvetica SF 17087 XM (can also be found as a global variable)306 W /Courier SF 36600 XM (vm_page_size)SH /Helvetica SF 44384 XM (which is set at task)306 W 7200 45588 MT (initialization and remains constant for the life of the task.)SH 12 /Helvetica-Bold AF 7200 47574 MT (Returns)SH 10 /Courier AF 10904 49341 MT (KERN_SUCCESS)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 61 62 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (61)SH 12 SS 7200 8075 MT (vm_machine_attribute)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t vm_machine_attribute \050task, address, size, attribute, value\051)SH 12000 13115 MT (task_t task;)15600 W 12000 14146 MT (vm_address_t address;)12000 W 12000 15177 MT (vm_size_t size;)13800 W 12000 16208 MT (vm_machine_attribute_t attribute;)6000 W 12000 17239 MT (vm_machine_attribute_val_t *value;)3000 W 12 /Helvetica-Bold AF 7200 20256 MT (Arguments)SH 10 /Courier AF 10904 22128 MT (task)SH /Helvetica SF 19800 XM (The task whose memory is to be affected)SH /Courier SF 10904 23754 MT (address)SH /Helvetica SF 19800 XM (Starting address of the memory segment.)SH /Courier SF 10904 25380 MT (size)SH /Helvetica SF 19800 XM (Size of the memory segment)SH /Courier SF 10904 27006 MT (attribute)SH /Helvetica SF 19800 XM (Attribute type)SH /Courier SF 10904 28632 MT (value)SH /Helvetica SF 19800 XM (Pointer to the attribute's value)SH 12 /Helvetica-Bold AF 7200 30650 MT (Description)SH 10 /Courier AF 8312 32149 MT (vm_machine_attribute)SH /Helvetica SF 20591 XM (specifies machine-specific attributes for a VM mapping, such as) 1 W( cachability,)SH 7200 33575 MT (migrability, replicability. This is used on machines that allow the user) 74 W( control over the cache \050this is the)75 W 7200 35001 MT (case for MIPS architectures\051 or placement of memory pages as) 172 W( in NUMA architectures \050Non-Uniform)171 W 7200 36427 MT (Memory Access time\051 such as the IBM ACE multiprocessor.)SH 8312 38994 MT (Machine-specific attributes can be consider additions to the machine-independent ones) 308 W( such as)309 W 7200 40420 MT (protection and inheritance, but they are not guaranteed to be supported by any given machine.)357 W 7200 41846 MT (Moreover, implementations of Mach on new architectures might find the need for new attribute) 37 W( types and)38 W 7200 43272 MT (or values besides the ones defined in the initial implementation.)SH 8312 45839 MT (The types currently defined are)SH /Courier SF 8312 48406 MT (MATTR_CACHE)SH /Helvetica SF 15190 XM (Controls caching of memory pages)SH /Courier SF 8312 50973 MT (MATTR_MIGRATE)SH /Helvetica SF 16390 XM (Controls migrability of memory pages)SH /Courier SF 8312 53540 MT (MATTR_REPLICATE)SH /Helvetica SF 17590 XM (Controls replication of memory pages)SH 8312 56107 MT (Corresponding values, and meaning of a specific call to)SH /Courier SF 33101 XM (vm_machine_attribute)SH 8312 58674 MT (MATTR_VAL_ON)SH /Helvetica SF 15790 XM (Enables the attribute. Being enabled is the default value for any applicable attribute.)SH /Courier SF 8312 61241 MT (MATTR_VAL_OFF)SH /Helvetica SF 16683 XM (Disables the attribute, making memory non-cached, or non-migratable, or non-)293 W 7200 62667 MT (replicatable.)SH /Courier SF 8312 65234 MT (MATTR_VAL_GET)SH /Helvetica SF 16499 XM (Returns the) 109 W( current value of the attribute for the memory segment. If the attribute)110 W 7200 66660 MT (does not apply uniformly to the given range) 19 W( the value returned applies to the initial portion of the segment)18 W 7200 68086 MT (only.)SH /Courier SF 8312 70653 MT (MATTR_VAL_CACHE_FLUSH)SH /Helvetica SF 21297 XM (Flush the memory) 107 W( pages from the Cache. The)108 W /Courier SF 43220 XM (size)SH /Helvetica SF 46006 XM (value in this case)108 W 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 62 63 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (62)SH /Helvetica SF 7200 7929 MT (might be meaningful even if not a multiple of the page size, depending on the implementation.)SH /Courier SF 8312 10496 MT (MATTR_VAL_ICACHE_FLUSH)SH /Helvetica SF 21790 XM (Same as above, applied to the Instruction Cache alone.)SH /Courier SF 8312 13063 MT (MATTR_VAL_DCACHE_FLUSH)SH /Helvetica SF 21790 XM (Same as above, applied to the Data Cache alone.)SH 12 /Helvetica-Bold AF 7200 15049 MT (Returns)SH 10 /Courier AF 10904 16921 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH /Courier SF 10904 18547 MT (KERN_INVALID_ARGUMENT)SH 19800 19690 MT (task)SH /Helvetica SF 22662 XM (is not a task, or)184 W /Courier SF 30641 XM (address)SH /Helvetica SF 35303 XM (and)SH /Courier SF 37433 XM (size)SH /Helvetica SF 40295 XM (do not define a valid address)184 W 19800 20833 MT (range in)286 W /Courier SF 24263 XM (task)SH /Helvetica SF (, or)286 W /Courier SF 28958 XM (attribute)SH /Helvetica SF 34922 XM (is not a valid attribute type,) 286 W( or it is not)285 W 19800 21976 MT (implemented, or)SH /Courier SF 27247 XM (value)SH /Helvetica SF 30525 XM (is not a permissible value for)SH /Courier SF 43474 XM (attribute)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 23994 MT (Notes)SH 10 /Helvetica AF 8312 25493 MT (The initial implementation \050for MIPS\051 does not provide for inheritance of machine attributes. This) 15 W( might)16 W 7200 26919 MT (change if/when the IBM ACE code will be merged in the mainline.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 63 64 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (63)SH 12 SS 7200 8075 MT (6. Ancillary primitives)SH 8 SS 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 64 65 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (64)SH 12 SS 7200 8075 MT (mach_ports)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t mach_ports_register\050target_task,)SH 26400 13115 MT (init_port_set, init_port_array_count\051)SH 12000 14146 MT (task_t target_task;)5400 W 12000 15177 MT (port_array_t init_port_set;) 1800 W( /*) 4800 W( array */)SH 12000 16208 MT (int init_port_array_count;)7200 W 7200 18728 MT (kern_return_t mach_ports_lookup\050target_task,)SH 26400 19759 MT (init_port_set, init_port_array_count\051)SH 12000 20790 MT (task_t target_task;)5400 W 12000 21821 MT (port_array_t *init_port_set;) 1800 W( /*) 4800 W( out array */)SH 12000 22852 MT (int *init_port_array_count;) 7200 W( /* out */)SH 12 /Helvetica-Bold AF 7200 25869 MT (Arguments)SH 10 /Courier AF 10904 27741 MT (target_task)SH /Helvetica SF 19800 XM (Task to be affected.)SH /Courier SF 10904 29367 MT (init_port_set)SH /Helvetica SF 19800 XM (An array of system ports to be registered, or) 130 W( returned. Although the array)129 W 19800 30510 MT (size is given as) 19 W( variable, the)20 W 8 SS 32700 XM (MACH)SH 10 SS 35354 XM (kernel will only accept a limited number of)20 W 19800 31653 MT (ports.)SH /Courier SF 10904 33279 MT (init_port_array_count)SH /Helvetica SF 19800 34422 MT (The number of ports returned in)SH /Courier SF 34140 XM (init_port_set.)SH 12 /Helvetica-Bold AF 7200 36440 MT (Description)SH 10 /Courier AF 8312 37939 MT (mach_ports_register)SH /Helvetica SF 20053 XM (registers an array of well-known system ports with the kernel) 63 W( on behalf of a)64 W 7200 39365 MT (specific task. Currently) 77 W( the ports to be registered are: the port to the Network Name Server, the port to)76 W 7200 40791 MT (the Environment Manager, and a) 32 W( port to the Service server. These port values must be placed in specific)33 W 7200 42217 MT (slots in the)417 W /Courier SF 13509 XM (init_port_set.)SH /Helvetica SF 22604 XM (The slot numbers are given by the global constants defined in)416 W /Courier SF 7200 43643 MT (mach_init.h)SH /Helvetica SF (:)SH /Courier SF 14621 XM (NAME_SERVER_SLOT)SH /Helvetica SF (,)SH /Courier SF 25043 XM (ENVIRONMENT_SLOT)SH /Helvetica SF (, and)266 W /Courier SF 37677 XM (SERVICE_SLOT.)SH /Helvetica SF 46021 XM (These ports may)266 W 7200 45069 MT (later be retrieved with)SH /Courier SF 17037 XM (mach_ports_lookup.)SH /Helvetica SF 8312 47636 MT (When a new task is created \050see)109 W /Courier SF 23859 XM (task_create)SH /Helvetica SF (\051, the child task will be given access) 109 W( to these ports.)108 W 7200 49062 MT (Only port send rights may be registered. Furthermore, the number of ports which may be registered) 95 W( is)96 W 7200 50488 MT (fixed and given by the global constant)100 W /Courier SF 24910 XM (MACH_PORT_SLOTS_USED)SH /Helvetica SF (. Attempts) 477 W( to register too many ports)99 W 7200 51914 MT (will fail.)SH 8312 54481 MT (It is intended that this) 45 W( mechanism be used only for task initialization, and then only by runtime support)46 W 7200 55907 MT (modules. A) 280 W( parent) 1 W( task has three choices in passing these system ports to a child task. Most commonly it)SH 7200 57333 MT (can do nothing and its child will inherit access to the same)119 W /Courier SF 34584 XM (init_port_set)SH /Helvetica SF 42782 XM (that the parent has; or a)120 W 7200 58759 MT (parent task may register a set) 308 W( of ports it wishes to have passed to all of its children by calling)307 W /Courier SF 7200 60185 MT (mach_ports_register)SH /Helvetica SF 18909 XM (using its task port; or it may make necessary modifications to the set of ports) 31 W( it)32 W 7200 61611 MT (wishes its child to see,) 36 W( and then register those ports using the child's task port prior to starting the child's)35 W 7200 63037 MT (thread\050s\051. The)576 W /Courier SF 14483 XM (mach_ports_lookup)SH /Helvetica SF 25110 XM (call which) 149 W( is done by)150 W /Courier SF 35307 XM (mach_init)SH /Helvetica SF 41135 XM (in the child task will acquire)150 W 7200 64463 MT (these initial ports for the child.)SH 8312 67030 MT (Tasks other than the Network Name Server and the) 19 W( Environment Mangager should not need access to)18 W 7200 68456 MT (the Service port. The Network Name Server) 191 W( port is the same for all tasks on a given machine. The)192 W 7200 69882 MT (Environment port is the only port likely to have different values for different tasks.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 65 66 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (65)SH /Helvetica SF 8312 7929 MT (Since the number of ports which may be registered is limited, ports) 190 W( other than those used by the)189 W 7200 9355 MT (runtime system to initialize a task should be passed to children either through) 184 W( an initial message, or)185 W 7200 10781 MT (through the Network Name Server for public ports, or the Environment Manager for private ports.)SH 12 /Helvetica-Bold AF 7200 12767 MT (Returns)SH 10 /Courier AF 10904 14639 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (Memory allocated.)SH /Courier SF 10904 16265 MT (KERN_INVALID_ARGUMENT)SH /Helvetica SF 19800 17408 MT (An attempt) 405 W( was made to register more ports than the current kernel)406 W 19800 18551 MT (implementation allows.)SH 12 /Helvetica-Bold AF 7200 20569 MT (See Also)SH 10 /Courier AF 8312 21995 MT (mach_init, netname, env_mgr, service)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 66 67 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (66)SH 12 SS 7200 8075 MT (host_ipc_statistics)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t host_ipc_statistics\050task, statistics\051)SH 12000 13115 MT (task_t target_task;)SH 12000 14146 MT (ipc_statistics_t *statistics;) SH( /*) 1200 W( inout */)SH 12 /Helvetica-Bold AF 7200 17163 MT (Arguments)SH 10 /Courier AF 10904 19035 MT (task)SH /Helvetica SF 19800 XM (Task running on the kernel whose statistics are desired.)SH /Courier SF 10904 20661 MT (statistics)SH /Helvetica SF 19800 XM (The returned statistics.)SH 12 /Helvetica-Bold AF 7200 22679 MT (Description)SH 10 /Courier AF 8312 24178 MT (host_ipc_statistics)SH /Helvetica SF 20402 XM (returns the statistics about)412 W 8 SS 34000 XM (MACH)SH 10 SS 37046 XM (IPC, since the kernel) 412 W( was booted.)411 W /Courier SF 7200 25604 MT (statistics)SH /Helvetica SF 13671 XM (is a fixed length array provided) 193 W( by the user. See)194 W /Courier SF 37533 XM ()SH /Helvetica SF 51805 XM (for a)194 W 7200 27030 MT (description of what is returned.)SH 12 /Helvetica-Bold AF 7200 29016 MT (Returns)SH 10 /Courier AF 10904 30888 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The call succeeded.)SH 12 /Helvetica-Bold AF 7200 32906 MT (Notes)SH 10 /Helvetica AF 8312 34405 MT (Only kernels compiled with)SH /Courier SF 20482 XM (MACH_IPCSTATS)SH /Helvetica SF 28560 XM (enabled support this call.)SH 8312 36972 MT (The first argument should be a host port of some kind.)SH 8312 39539 MT (The meaning of the statistics varies; not all fields are used.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 67 68 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (67)SH 12 SS 7200 8075 MT (7. External memory management primitives)SH 11 SS 7200 11757 MT (7.1. Memory Managers)SH 10 /Helvetica AF 8312 13183 MT (The)SH 8 SS 10348 XM (MACH)SH 10 SS 13017 XM (kernel allows users to provide memory) 35 W( managment \050i.e. paging\051 services outside the kernel.)34 W 7200 14609 MT (A server that provides such functions is called a)289 W /Helvetica-Bold SF 31199 XM (memory manager)289 W /Helvetica SF (. There is a)290 W /Helvetica-Bold SF 46264 XM (default memory)290 W 7200 16035 MT (manager)SH /Helvetica SF 11795 XM (that is part) 149 W( of the kernel and is normally used to handle paging to both files and temporary)148 W 7200 17461 MT (memory objects. Users may provide additional memory managers to handle special) 155 W( kinds of objects,)156 W 7200 18887 MT (such as fault-tolerant) 153 W( objects, objects whose backing store is across a network link, or objects whose)152 W 7200 20313 MT (backing store is on devices for which the kernel does not provide drivers.)SH 8312 22880 MT (The protocol defined in this section consists of messages that) 311 W( the kernel will send to memory)312 W 7200 24306 MT (managers and the primitives that the kernel provides for the use of memory) 141 W( managers. Use of these)140 W 7200 25732 MT (primitives involves increased responsibility. A memory manager is expected) 4 W( to respond in a timely fashion)5 W 7200 27158 MT (to all the requests that the kernel) 24 W( makes of it, otherwise threads within the kernel are left hanging and the)23 W 7200 28584 MT (client task that is attempting to reference the memory object is also left hanging.)SH 8312 31151 MT (It is also possible for a privileged user to replace the default memory manager. This involves) 21 W( increased)22 W 7200 32577 MT (reliability and responsibility as now all the users of the system will be dependent on the new server.)SH /Helvetica-Bold SF 7200 35466 MT (7.1.1. Memory objects: definitions and basics)SH /Helvetica SF 8312 36892 MT (In)SH 8 SS 9600 XM (MACH)SH 10 SS (, physical memory is used as a cache of the contents of secondary) 176 W( storage objects called)175 W /Helvetica-Bold SF 7200 38318 MT (memory objects)180 W /Helvetica SF (. The) 638 W( virtual address space of a task is represented as a series of mappings from)180 W 7200 39744 MT (contiguous virtual address ranges to such memory objects. For each memory object) 119 W( the kernel keeps)118 W 7200 41170 MT (track of those pages that are currently in the physical memory cache and it allows tasks mapped to that)68 W 7200 42596 MT (memory to use those physical pages.)SH 8312 45163 MT (When a virtual memory request occurs that cannot be resolved through the use of) 28 W( a previously cached)27 W 7200 46589 MT (physical page, the kernel must make a request) 197 W( of the memory object for the required data. As the)198 W 7200 48015 MT (physical page cache becomes) 46 W( full, the kernel must replace pages from the cache, writing the contents of)45 W 7200 49441 MT (modified pages back to the corresponding memory objects.)SH 8312 52008 MT (When a task uses the)134 W /Courier SF 18876 XM (vm_allocate)SH /Helvetica SF 25888 XM (call, the kernel) 134 W( allocates a memory object that provides zero-)135 W 7200 53434 MT (filled memory on reference; this memory object is managed by a default memory manager.)SH 8312 56001 MT (Alternatively, a task may map a specific memory object into its) 123 W( address space by issuing a)122 W /Courier SF 50400 XM (vm_map)SH /Helvetica SF 7200 57427 MT (call. Included) 430 W( in this call is) 76 W( the memory object, represented by a port, that is to manage the data in the)77 W 7200 58853 MT (allocated region. The kernel will use the memory object port) 21 W( to make requests for data, or to request that)20 W 7200 60279 MT (data be written back to the) 66 W( object. The memory manager must act as a server for these requests. The)67 W 7200 61705 MT (memory manager server interface differs from other servers only in that the) 465 W( kernel does not)464 W 7200 63131 MT (synchronously await replies.)SH 8312 65698 MT (A given memory object may be mapped into an arbitrary number of tasks, at any addresses) SH( available in)1 W 7200 67124 MT (those tasks. When a)97 W /Courier SF 17301 XM (vm_map)SH /Helvetica SF 21275 XM (call is issued, the)96 W 8 SS 29551 XM (MACH)SH 10 SS 32281 XM (kernel will recognize the memory object if it has)96 W 7200 68550 MT (been mapped before; any physical memory pages from this memory object already cached) 20 W( from previous)21 W 7200 69976 MT (uses may be shared by later mappings as well.) 52 W( A) 381 W( single)51 W 8 SS 32998 XM (MACH)SH 10 SS 35683 XM (kernel keeps the physical memory cache)51 W 7200 71402 MT (consistent across all uses of the same memory object at similar page alignments on that host.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 68 69 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (68)SH /Helvetica SF 8312 7929 MT (Furthermore, a single memory object may be mapped into tasks created on) 254 W( different hosts \050and)255 W 7200 9355 MT (therefore be cached by different)152 W 8 SS 22357 XM (MACH)SH 10 SS 25143 XM (kernels\051. In) 582 W( this case,) 152 W( the memory manager is responsible for)151 W 7200 10781 MT (maintaining any desired consistency among the various hosts on which its data resides.)SH /Helvetica-Bold SF 7200 13670 MT (7.1.2. Initialization and termination)SH /Helvetica SF 8312 15096 MT (The memory manager must define a protocol for giving) 90 W( out memory object ports. This could take the)91 W 7200 16522 MT (form of the memory manager registering) 138 W( a general service port somewhere that clients could find and)137 W 7200 17948 MT (exporting an object create) 49 W( or object lookup call that will return a memory object port. This is the port that)50 W 7200 19374 MT (is passed to the kernel in the)SH /Courier SF 20207 XM (vm_map)SH /Helvetica SF 24085 XM (call.)SH 8312 21941 MT (Upon processing the) 275 W( first)274 W /Courier SF 20748 XM (vm_map)SH /Helvetica SF 24900 XM (call for a given memory object, the)274 W 8 SS 42324 XM (MACH)SH 10 SS 45232 XM (kernel will make a)274 W /Courier SF 7200 23367 MT (memory_object_init)SH /Helvetica SF 18312 XM (call, providing) 34 W( the memory manager with two ports: a)35 W /Helvetica-Bold SF 42301 XM (control port)35 W /Helvetica SF (, and a)35 W /Helvetica-Bold SF 51388 XM (name)SH 7200 24793 MT (port)SH /Helvetica SF (. The) 373 W( memory manager may use the memory object control port to supply the kernel with data for it)47 W 7200 26219 MT (to cache, or to perform other cache management functions.) 78 W( These) 435 W( requests will be covered in the next)79 W 7200 27645 MT (section.)SH 8312 30212 MT (The memory object name, a port, will only be used by the) 44 W( kernel in the results from a)43 W /Courier SF 46779 XM (vm_region)SH /Helvetica SF 52500 XM (call)SH 7200 31638 MT (to describe the source of data for a given region. Since) 60 W( this port is not to be used for requests for data,)61 W 7200 33064 MT (the memory manager may wish to provide this port to clients to identify memory which it supplies.)SH 8312 35631 MT (The initialization call also includes the system page size for the host on which the mapping took place.)36 W 7200 37057 MT (This allows the memory manager to provide data) 21 W( to the kernel in whole pages, and to detect mappings at)22 W 7200 38483 MT (inconsistent page alignments.)SH 8312 41050 MT (In order to indicate its readiness to) 260 W( accept requests, the memory manager must respond to the)259 W 7200 42476 MT (initialization call by) 492 W( making a)493 W /Courier SF 22556 XM (memory_object_set_attributes)SH /Helvetica SF 40127 XM (call, asserting the readiness)493 W 7200 43902 MT (parameter.)SH 8312 46469 MT (Normally, when a memory object is no longer referenced by any virtual address space,) 6 W( the)5 W 8 SS 48638 XM (MACH)SH 10 SS 51277 XM (kernel)SH 7200 47895 MT (will deallocate its port rights to that memory object after) 83 W( sending all port rights for the control and name)84 W 7200 49321 MT (ports in an)25 W /Courier SF 12222 XM (memory_object_terminate)SH /Helvetica SF 26325 XM (call. To) 328 W( enhance performance, a) 25 W( memory manager may allow)24 W 7200 50747 MT (a)SH 8 SS 8342 XM (MACH)SH 10 SS 11284 XM (kernel to maintain its memory cache for a memory object after all virtual) 308 W( address space)309 W 7200 52173 MT (references to) 1547 W( it are gone, by asserting the caching parameter to the)1546 W /Courier SF 7200 53599 MT (memory_object_set_attributes)SH /Helvetica SF 24357 XM (call. However,) 436 W( allowing caching does not prevent the kernel from)80 W 7200 55025 MT (terminating an object.)SH 8312 57592 MT (In the event that) 63 W( a memory manager destroys a memory object port that is currently mapped into one)62 W 7200 59018 MT (or more virtual address spaces, future page) 55 W( faults on addresses mapped to this object \050for which data is)56 W 7200 60444 MT (not available in the cache\051 will result in a memory exception.)SH /Helvetica-Bold SF 7200 63333 MT (7.1.3. Kernel-created memory objects)SH /Helvetica SF 8312 64759 MT (As noted earlier, memory created using)46 W /Courier SF 26317 XM (vm_allocate)SH /Helvetica SF 33241 XM (results in the) 46 W( creation of a memory object; this)45 W 7200 66185 MT (object is created by the kernel, and is) 533 W( passed to the default memory manager, using the)534 W /Courier SF 7200 67611 MT (memory_object_create)SH /Helvetica SF 19547 XM (call. Since) 415 W( the memory object is initially zero-filled, it only contains data that)68 W 7200 69037 MT (has been modified.)SH 8312 71604 MT (The)SH /Courier SF 10321 XM (memory_object_create)SH /Helvetica SF 22607 XM (request will only be made of the default) 8 W( memory manager. The default)9 W 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 69 70 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (69)SH /Helvetica SF 7200 7929 MT (memory manager must not allow any memory object passed in a)116 W /Courier SF 37375 XM (memory_object_create)SH /Helvetica SF 49768 XM (call to be)115 W 7200 9355 MT (used in any other task, as the kernel may make assumptions about such an object) 75 W( that could adversely)76 W 7200 10781 MT (affect external consistency.)SH 11 /Helvetica-Bold AF 7200 14463 MT (7.2. Kernel calls supporting memory managers)SH 8 SS 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 70 71 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (70)SH 12 SS 7200 8075 MT (vm_map)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t vm_map\050target_task, address, size, mask, anywhere,)SH 26400 13115 MT (memory_object, offset, copy,)SH 26400 14146 MT (cur_protection, max_protection,)SH 26400 15177 MT (inheritance\051)SH 12000 16208 MT (task_t target_task;)5400 W 12000 17239 MT (vm_offset_t *address;) 2400 W( /*) 3600 W( in/out */)SH 12000 18270 MT (vm_size_t size;)3600 W 12000 19301 MT (vm_offset_t mask;)2400 W 12000 20332 MT (boolean_t anywhere;)3600 W 12000 21363 MT (memory_object_t memory_object;)SH 12000 22394 MT (vm_offset_t offset;)2400 W 12000 23425 MT (boolean_t copy;)3600 W 12000 24456 MT (vm_prot_t cur_protection;)3600 W 12000 25487 MT (vm_prot_t max_protection;)3600 W 12000 26518 MT (vm_inherit_t inheritance;)1800 W 12 /Helvetica-Bold AF 7200 30566 MT (Description)SH 10 /Courier AF 8312 32065 MT (vm_map)SH /Helvetica SF 12250 XM (maps a region of virtual memory at the) 60 W( specified address, for which data is to be supplied by)59 W 7200 33491 MT (the given memory object, starting at the) 27 W( given offset within that object. In addition to the arguments used)28 W 7200 34917 MT (in)SH /Courier SF 8273 XM (vm_allocate)SH /Helvetica SF (, the)17 W /Courier SF 17131 XM (vm_map)SH /Helvetica SF 21026 XM (call allows the specification of an) 17 W( address alignment parameter, and of the)16 W 7200 36343 MT (initial protection and inheritance values. [See the descriptions of)219 W /Courier SF 38182 XM (vm_allocate)SH /Helvetica SF (,)SH /Courier SF 45557 XM (vm_protect)SH /Helvetica SF (, and)219 W /Courier SF 7200 37769 MT (vm_inherit)SH /Helvetica SF (.])SH 8312 40336 MT (If the) 500 W( memory object in question is not currently in use, the)499 W 8 SS 40424 XM (MACH)SH 10 SS 43557 XM (kernel will perform a)499 W /Courier SF 7200 41762 MT (memory_object_init)SH /Helvetica SF 18384 XM (call at this time. If) 106 W( the copy parameter is asserted, the specified region of the)107 W 7200 43188 MT (memory object will) 1 W( be copied to this address space; changes made to this object by other tasks will not be)SH 7200 44614 MT (visible in this mapping, and changes made in this mapping will not be visible to others \050or returned) 38 W( to the)39 W 7200 46040 MT (memory object\051.)SH 8312 48607 MT (The)SH /Courier SF 10344 XM (vm_map)SH /Helvetica SF 14253 XM (call returns) 31 W( once the mapping is established. Completion of the call does not require any)30 W 7200 50033 MT (action on the part of the memory manager.)SH 8312 52600 MT (Warning: Only memory objects that are provided) 81 W( by bona fide)82 W /Helvetica-Bold SF 36582 XM (memory managers)82 W /Helvetica SF 45916 XM (should be used in)82 W 7200 54026 MT (the)SH /Courier SF 8921 XM (vm_map)SH /Helvetica SF 12852 XM (call. A) 384 W( memory manager must implement the memory object interface described) 53 W( elsewhere)52 W 7200 55452 MT (in this manual. If other ports) 55 W( are used, a thread that accesses the mapped virtual memory may become)56 W 7200 56878 MT (permanently hung or may receive a memory exception.)SH 12 /Helvetica-Bold AF 7200 58864 MT (Arguments)SH 10 /Courier AF 10904 60736 MT (target_task)SH /Helvetica SF 19800 XM (Task to be affected.)SH /Courier SF 10904 62362 MT (address)SH /Helvetica SF 19800 XM (Starting address. If the anywhere option) 164 W( is used, this address is ignored.)163 W 19800 63505 MT (The address actually allocated will be returned in)SH /Courier SF 41698 XM (address)SH /Helvetica SF (.)SH /Courier SF 10904 65131 MT (size)SH /Helvetica SF 19800 XM (Number of bytes to allocate \050rounded by the system in a) 29 W( machine dependent)30 W 19800 66274 MT (way\051.)SH /Courier SF 10904 67900 MT (mask)SH /Helvetica SF 19800 XM (Alignment restriction. Bits asserted in this mask) 49 W( must not be asserted in the)48 W 19800 69043 MT (address returned.)SH /Courier SF 10904 70669 MT (anywhere)SH /Helvetica SF 19800 XM (If set, the kernel should find and allocate any region of the specified size, and)5 W 19800 71812 MT (return the address of the resulting region in)SH /Courier SF 39143 XM (address)SH /Helvetica SF (.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 71 72 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (71)SH /Courier SF 10904 7929 MT (memory_object)SH /Helvetica SF 19800 XM (Port that represents the memory) 31 W( object: used by user tasks in)30 W /Courier SF 47646 XM (vm_map)SH /Helvetica SF (; used)30 W 19800 9072 MT (by the)55 W 8 SS 22912 XM (MACH)SH 10 SS 25601 XM (kernel to make requests for data or other) 55 W( management actions.)56 W 19800 10215 MT (If this port is)161 W /Courier SF 26113 XM (MEMORY_OBJECT_NULL)SH /Helvetica SF (, then zero-filled memory is) 161 W( allocated)160 W 19800 11358 MT (instead.)SH /Courier SF 10904 12984 MT (offset)SH /Helvetica SF 19800 XM (An offset within a memory object, in bytes. This must be page aligned.)SH /Courier SF 10904 14610 MT (copy)SH /Helvetica SF 19800 XM (If set, the range of the memory object should be copied to the target) 128 W( task,)129 W 19800 15753 MT (rather than mapped read-write.)SH 12 /Helvetica-Bold AF 7200 17771 MT (Returns)SH 10 /Courier AF 10904 19643 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The object is mapped.)SH /Courier SF 10904 21269 MT (KERN_NO_SPACE)SH /Helvetica SF 19800 XM (No unused region of the task's virtual address space that meets the) 20 W( address,)19 W 19800 22412 MT (size, and alignment criteria could be found.)SH /Courier SF 10904 24038 MT (KERN_INVALID_ARGUMENT)SH /Helvetica SF 19800 25181 MT (An illegal argument was provided.)SH 12 /Helvetica-Bold AF 7200 27199 MT (See Also)SH 10 /Courier AF 8312 28625 MT (memory_object_server, vm_allocate)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 72 73 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (72)SH 12 SS 7200 8075 MT (memory_object_set_attributes)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t memory_object_set_attributes\050memory_control,)SH 26400 13115 MT (object_ready, may_cache_object,)SH 26400 14146 MT (copy_strategy\051)SH 12000 15177 MT (memory_object_control_t)SH 21600 16208 MT (memory_control;)SH 12000 17239 MT (boolean_t object_ready;)3600 W 12000 18270 MT (boolean_t may_cache_object;)3600 W 12000 19301 MT (memory_object_copy_strategy_t)SH 21600 20332 MT (copy_strategy;)SH 12 /Helvetica-Bold AF 7200 23349 MT (Description)SH 10 /Courier AF 8312 24848 MT (memory_object_set_attributes)SH /Helvetica SF 25594 XM (controls how the)204 W 8 SS 33765 XM (MACH)SH 10 SS 36603 XM (kernel uses the memory object. The)204 W 7200 26274 MT (kernel will only make data or unlock requests when the ready attribute is asserted.) 6 W( If) 291 W( the caching attribute)7 W 7200 27700 MT (is asserted, the kernel is permitted \050and encouraged\051) 160 W( to maintain cached data for this memory object)159 W 7200 29126 MT (even after no virtual address space contains this data.)SH 8312 31693 MT (There are three possible caching) 356 W( strategies:)357 W /Courier SF 30181 XM (MEMORY_OBJECT_COPY_NONE)SH /Helvetica SF 44616 XM (which specifies that)357 W 7200 33119 MT (nothing special should be done when data in the object is copied;)80 W /Courier SF 37287 XM (MEMORY_OBJECT_COPY_CALL)SH /Helvetica SF 51444 XM (which)SH 7200 34545 MT (specifies that the memory manager should be notified via a)58 W /Courier SF 34182 XM (memory_object_copy)SH /Helvetica SF 45319 XM (call before any part)59 W 7200 35971 MT (of the object is copied; and)32 W /Courier SF 19566 XM (MEMORY_OBJECT_COPY_DELAY)SH /Helvetica SF 34276 XM (which guarantees that the memory manager)32 W 7200 37397 MT (does not externally modify the data so) 233 W( that the kernel can use its normal copy-on-write algorithms.)234 W /Courier SF 7200 38823 MT (MEMORY_OBJECT_COPY_DELAY)SH /Helvetica SF 21878 XM (is the strategy most commonly used.)SH 12 /Helvetica-Bold AF 7200 40809 MT (Arguments)SH 10 /Courier AF 10904 42681 MT (memory_control)SH /Helvetica SF 19800 XM (The port,) 102 W( provided by the kernel in a)101 W /Courier SF 36895 XM (memory_object_init)SH /Helvetica SF 48074 XM (call, to which)101 W 19800 43824 MT (cache management requests may be issued.)SH /Courier SF 10904 45450 MT (object_ready)SH /Helvetica SF 19800 XM (When set, the kernel may issue new data) 302 W( and unlock requests on the)303 W 19800 46593 MT (associated memory object.)SH /Courier SF 10904 48219 MT (may_cache_object)SH /Helvetica SF 19800 49362 MT (If set, the kernel may keep data associated with this memory object,) 145 W( even)146 W 19800 50505 MT (after virtual memory references to it are gone.)SH /Courier SF 10904 52131 MT (copy_strategy)SH /Helvetica SF 19800 XM (How the kernel should copy regions of the associated memory object.)SH 12 /Helvetica-Bold AF 7200 54149 MT (Returns)SH 10 /Courier AF 10904 56021 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (This routine does not receive a) 184 W( reply message \050and consequently has no)183 W 19800 57164 MT (return value\051, so only message transmission errors apply.)SH 12 /Helvetica-Bold AF 7200 59182 MT (See Also)SH 10 /Courier AF 8312 60608 MT (memory_object_init, memory_object_copy, memory_object_attributes)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 73 74 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (73)SH 12 SS 7200 8075 MT (memory_object_get_attributes)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t memory_object_get_attributes\050memory_control,)SH 26400 13115 MT (object_ready, may_cache_object,)SH 26400 14146 MT (copy_strategy\051)SH 12000 15177 MT (memory_object_control_t)SH 21600 16208 MT (memory_control;)SH 12000 17239 MT (boolean_t *object_ready;)3600 W 12000 18270 MT (boolean_t *may_cache_object;)3600 W 12000 19301 MT (memory_object_copy_strategy_t)SH 21600 20332 MT (*copy_strategy;)SH 12 /Helvetica-Bold AF 7200 23349 MT (Description)SH 10 /Courier AF 8312 24848 MT (memory_object_get_attributes)SH /Helvetica SF 25722 XM (retrieves the current attributes associated with the memory)332 W 7200 26274 MT (object.)SH 12 /Helvetica-Bold AF 7200 28260 MT (Arguments)SH 10 /Courier AF 10904 30132 MT (memory_control)SH /Helvetica SF 19800 XM (The port,) 102 W( provided by the kernel in a)101 W /Courier SF 36895 XM (memory_object_init)SH /Helvetica SF 48074 XM (call, to which)101 W 19800 31275 MT (cache management requests may be issued.)SH /Courier SF 10904 32901 MT (object_ready)SH /Helvetica SF 19800 XM (When set, the kernel may issue new data) 302 W( and unlock requests on the)303 W 19800 34044 MT (associated memory object.)SH /Courier SF 10904 35670 MT (may_cache_object)SH /Helvetica SF 19800 36813 MT (If set, the kernel may keep data associated with this memory object,) 145 W( even)146 W 19800 37956 MT (after virtual memory references to it are gone.)SH /Courier SF 10904 39582 MT (copy_strategy)SH /Helvetica SF 19800 XM (How the kernel should copy regions of the associated memory object.)SH 12 /Helvetica-Bold AF 7200 41600 MT (Returns)SH 10 /Courier AF 10904 43472 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (This routine does not receive a) 184 W( reply message \050and consequently has no)183 W 19800 44615 MT (return value\051, so only message transmission errors apply.)SH 12 /Helvetica-Bold AF 7200 46633 MT (See Also)SH 10 /Courier AF 8312 48059 MT (memory_object_set_attributes, memory_object_copy)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 74 75 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (74)SH 12 SS 7200 8075 MT (memory_object_lock_request)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t memory_object_lock_request\050memory_control,)1200 W 26400 13115 MT (offset, size, should_clean)SH 26400 14146 MT (should_flush, lock_value, reply_to\051)SH 12000 15177 MT (memory_object_control_t)SH 21600 16208 MT (memory_control;)SH 12000 17239 MT (vm_offset_t offset;)2400 W 12000 18270 MT (vm_size_t size;)3600 W 12000 19301 MT (boolean_t should_clean;)3600 W 12000 20332 MT (boolean_t should_flush;)3600 W 12000 21363 MT (vm_prot_t lock_value;)3600 W 12000 22394 MT (port_t reply_to;)5400 W 12 /Helvetica-Bold AF 7200 25411 MT (Description)SH 10 /Courier AF 8312 26910 MT (memory_object_lock_request)SH /Helvetica SF 24278 XM (allows a) 88 W( memory manager to make cache management requests.)89 W 7200 28336 MT (As specified in arguments to the call,) 753 W( the kernel will: clean \050i.e., write back using)752 W /Courier SF 7200 29762 MT (memory_object_data_write)SH /Helvetica SF (\051 any) 157 W( cached data which has been modified since the last time it was)158 W 7200 31188 MT (written; flush \050i.e., remove any) 86 W( uses of\051 that data from memory; lock \050i.e., prohibit the specified uses of\051)85 W 7200 32614 MT (the cached data. Locks applied to cached data are not cumulative; new lock values override) 118 W( previous)119 W 7200 34040 MT (ones. Thus,) 332 W( data may also be unlocked using this primitive.) 27 W( The) 331 W( lock values must be one or more of the)26 W 7200 35466 MT (following values:)308 W /Courier SF 16018 XM (VM_PROT_NONE, VM_PROT_READ, VM_PROT_WRITE, VM_PROT_EXECUTE)309 W /Helvetica SF 52332 XM (and)SH /Courier SF 7200 36892 MT (VM_PROT_ALL)SH /Helvetica SF 14078 XM (as defined in)SH /Courier SF 20026 XM ()SH /Helvetica SF (.)SH 8312 39459 MT (Only data which is cached at the time of this call is affected. When a running) 202 W( thread requires a)201 W 7200 40885 MT (prohibited access to cached data,) 202 W( the)203 W 8 SS 25257 XM (MACH)SH 10 SS 28094 XM (kernel will issue a)203 W /Courier SF 37019 XM (memory_object_data_unlock)SH /Helvetica SF 52500 XM (call)SH 7200 42311 MT (specifying the forms of access required. Once all of the actions requested by this call have) 242 W( been)241 W 7200 43737 MT (completed, the)75 W 8 SS 14188 XM (MACH)SH 10 SS 16898 XM (kernel will issue a)76 W /Courier SF 25315 XM (memory_object_lock_completed)SH /Helvetica SF 42469 XM (call on the specified reply)76 W 7200 45163 MT (port.)SH 12 /Helvetica-Bold AF 7200 47149 MT (Arguments)SH 10 /Courier AF 10904 49021 MT (memory_control)SH /Helvetica SF 19800 XM (The port,) 102 W( provided by the kernel in a)101 W /Courier SF 36895 XM (memory_object_init)SH /Helvetica SF 48074 XM (call, to which)101 W 19800 50164 MT (cache management requests may be issued.)SH /Courier SF 10904 51790 MT (offset)SH /Helvetica SF 19800 XM (An offset within a memory object, in bytes. This must be page aligned.)SH /Courier SF 10904 53416 MT (size)SH /Helvetica SF 19800 XM (The amount of cached) 74 W( data \050starting at)75 W /Courier SF 37776 XM (offset)SH /Helvetica SF (\051 to be handled, must be an)75 W 19800 54559 MT (integral multiple of the memory object page size.)SH /Courier SF 10904 56185 MT (should_clean)SH /Helvetica SF 19800 XM (If set, modified data should be written back to the memory manager.)SH /Courier SF 10904 57811 MT (should_flush)SH /Helvetica SF 19800 XM (If set, the specified cached data should) 117 W( be invalidated, and all uses of that)116 W 19800 58954 MT (data should be revoked.)SH /Courier SF 10904 60580 MT (lock_value)SH /Helvetica SF 19800 XM (A protection value indicating) 299 W( those forms of access that should)300 W /Helvetica-Bold SF 50755 XM (not)SH /Helvetica SF 52888 XM (be)SH 19800 61723 MT (permitted to the specified cached data.)SH /Courier SF 10904 63349 MT (reply_to)SH /Helvetica SF 19800 XM (A port on which a)376 W /Courier SF 29683 XM (memory_object_lock_completed)SH /Helvetica SF 47136 XM (call should be)375 W 19800 64492 MT (issued, or)SH /Courier SF 24413 XM (PORT_NULL)SH /Helvetica SF 30091 XM (if no acknowledgement is desired.)SH 12 /Helvetica-Bold AF 7200 66510 MT (Returns)SH 10 /Courier AF 10904 68382 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (This routine does not receive a reply) 183 W( message \050and consequently has no)184 W 19800 69525 MT (return value\051, so only message transmission errors apply.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 75 76 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (75)SH 12 SS 7200 8075 MT (See Also)SH 10 /Courier AF 8312 9501 MT (memory_object_lock_completed, memory_object_data_unlock)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 76 77 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (76)SH 12 SS 7200 8075 MT (memory_object_data_provided)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t memory_object_data_provided\050memory_control,)SH 26400 13115 MT (offset, data, data_count, lock_value\051)SH 12000 14146 MT (memory_object_control_t)SH 21600 15177 MT (memory_control;)SH 12000 16208 MT (vm_offset_t offset;)2400 W 12000 17239 MT (pointer_t data;)3600 W 12000 18270 MT (int data_count;)7200 W 12000 19301 MT (vm_prot_t lock_value;)3600 W 12 /Helvetica-Bold AF 7200 23349 MT (Description)SH 10 /Courier AF 8312 24848 MT (memory_object_data_provided)SH /Helvetica SF 25005 XM (supplies the kernel) 215 W( with data for the specified memory object.)214 W 7200 26274 MT (Ordinarily, memory managers should) 57 W( only provide data in reponse to)58 W /Courier SF 38400 XM (memory_object_data_request)SH /Helvetica SF 7200 27700 MT (calls from the kernel. The)124 W /Courier SF 19726 XM (lock_value)SH /Helvetica SF 26128 XM (specifies what type of access will)124 W /Helvetica-Bold SF 41766 XM (not)SH /Helvetica SF 43723 XM (be allowed) 124 W( to the data)123 W 7200 29126 MT (range. The lock values must be one or more of the set:)415 W /Courier SF 37385 XM (VM_PROT_NONE, VM_PROT_READ,)415 W 7200 30552 MT (VM_PROT_WRITE, VM_PROT_EXECUTE)SH /Helvetica SF 25478 XM (and)SH /Courier SF 27424 XM (VM_PROT_ALL)SH /Helvetica SF 34302 XM (as defined in)SH /Courier SF 40250 XM ()SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 32538 MT (Arguments)SH 10 /Courier AF 10904 34410 MT (memory_control)SH /Helvetica SF 19800 XM (The port,) 102 W( provided by the kernel in a)101 W /Courier SF 36895 XM (memory_object_init)SH /Helvetica SF 48074 XM (call, to which)101 W 19800 35553 MT (cache management requests may be issued.)SH /Courier SF 10904 37179 MT (offset)SH /Helvetica SF 19800 XM (An offset within a memory object, in bytes. This must be page aligned.)SH /Courier SF 10904 38805 MT (data)SH /Helvetica SF 19800 XM (Data that is being provided to the kernel. This is a pointer to the data.)SH /Courier SF 10904 40431 MT (data_count)SH /Helvetica SF 19800 XM (The amount of data to) 64 W( be provided. Must be an integral number of memory)65 W 19800 41574 MT (object pages.)SH /Courier SF 10904 43200 MT (lock_value)SH /Helvetica SF 19800 XM (A protection value indicating those forms of access that) 300 W( should)299 W /Helvetica-Bold SF 50756 XM (not)SH /Helvetica SF 52888 XM (be)SH 19800 44343 MT (permitted to the specified cached data.)SH 12 /Helvetica-Bold AF 7200 46361 MT (Returns)SH 10 /Courier AF 10904 48233 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (This routine does not receive a reply) 183 W( message \050and consequently has no)184 W 19800 49376 MT (return value\051, so only message transmission errors apply.)SH 12 /Helvetica-Bold AF 7200 51394 MT (See Also)SH 10 /Courier AF 8312 52820 MT (memory_object_data_request, memory_object_data_error,)13888 W 7200 54246 MT (memory_object_lock_request)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 77 78 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (77)SH 12 SS 7200 8075 MT (memory_object_data_unavailable)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t memory_object_data_unavailable\050memory_control,)SH 26400 13115 MT (offset, size\051;)SH 12000 14146 MT (memory_object_control_t)SH 21600 15177 MT (memory_control;)SH 12000 16208 MT (vm_offset_t offset;)2400 W 12000 17239 MT (vm_size_t size;)3600 W 12 /Helvetica-Bold AF 7200 20256 MT (Description)SH 10 /Courier AF 8312 21755 MT (memory_object_data_unavailable)SH /Helvetica SF 26691 XM (indicates that the memory) 101 W( object does not have data for the)102 W 7200 23181 MT (given region and that the kernel should provide the data) 92 W( for this range. The memory manager may use)91 W 7200 24607 MT (this call in three different situations. 1\051 The object was created by)155 W /Courier SF 38074 XM (memory_object_create)SH /Helvetica SF 50508 XM (and the)156 W 7200 26033 MT (kernel has) 92 W( not yet provided data for this range \050either via a)91 W /Courier SF 34417 XM (memory_object_data_initialize)SH /Helvetica SF 52186 XM (or a)91 W /Courier SF 7200 27459 MT (memory_object_data_write)SH /Helvetica SF (. In this case the) 46 W( kernel should supply zero-filled pages for the object. 2\051)47 W 7200 28885 MT (The object was created by an)19 W /Courier SF 20654 XM (memory_object_data_copy)SH /Helvetica SF 34751 XM (and the kernel should) 19 W( copy this region from)18 W 7200 30311 MT (the original memory object. 3\051 The object is a normal user-created memory) 59 W( object and the kernel should)60 W 7200 31737 MT (supply unlocked zero-filled pages for the range.)SH 12 /Helvetica-Bold AF 7200 33723 MT (Arguments)SH 10 /Courier AF 10904 35595 MT (memory_control)SH /Helvetica SF 19800 XM (The port,) 102 W( provided by the kernel in a)101 W /Courier SF 36895 XM (memory_object_init)SH /Helvetica SF 48074 XM (call, to which)101 W 19800 36738 MT (cache management requests may be issued.)SH /Courier SF 10904 38364 MT (offset)SH /Helvetica SF 19800 XM (An offset within a memory object, in bytes. This must be page aligned.)SH /Courier SF 10904 39990 MT (size)SH /Helvetica SF 19800 XM (The amount of cached data \050starting at)15 W /Courier SF 37359 XM (offset)SH /Helvetica SF (\051 to be handled. This must be)15 W 19800 41133 MT (an integral multiple of the memory object page size.)SH 12 /Helvetica-Bold AF 7200 43151 MT (Returns)SH 10 /Courier AF 10904 45023 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (This routine does not receive a) 184 W( reply message \050and consequently has no)183 W 19800 46166 MT (return value\051, so only message transmission errors apply.)SH 12 /Helvetica-Bold AF 7200 48184 MT (See Also)SH 10 /Courier AF 8312 49610 MT (memory_object_create, memory_object_data_request, memory_object_data_error)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 78 79 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (78)SH 12 SS 7200 8075 MT (memory_object_data_error)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t memory_object_data_error\050memory_control,)SH 26400 13115 MT (offset, size, reason\051;)SH 12000 14146 MT (memory_object_control_t)SH 21600 15177 MT (memory_control;)SH 12000 16208 MT (vm_offset_t offset;)2400 W 12000 17239 MT (vm_size_t size;)3600 W 12000 18270 MT (kern_return_t reason;)1200 W 12 /Helvetica-Bold AF 7200 21287 MT (Description)SH 10 /Courier AF 8312 22786 MT (memory_object_data_error)SH /Helvetica SF 23045 XM (indicates that the memory manager cannot return the data requested)55 W 7200 24212 MT (for the given region, specifying) 118 W( a reason for the error. This is typically used when a hardware error is)117 W 7200 25638 MT (encountered.)SH 12 /Helvetica-Bold AF 7200 27624 MT (Arguments)SH 10 /Courier AF 10904 29496 MT (memory_control)SH /Helvetica SF 19800 XM (The port, provided by the kernel in a)101 W /Courier SF 36894 XM (memory_object_init)SH /Helvetica SF 48073 XM (call, to) 101 W( which)102 W 19800 30639 MT (cache management requests may be issued.)SH /Courier SF 10904 32265 MT (offset)SH /Helvetica SF 19800 XM (An offset within a memory object, in bytes. This must be page aligned.)SH /Courier SF 10904 33891 MT (size)SH /Helvetica SF 19800 XM (The amount of cached data \050starting at)101 W /Courier SF 37961 XM (offset)SH /Helvetica SF (\051 to be handled. This must)100 W 19800 35034 MT (be an integral multiple of the memory object page size.)SH /Courier SF 10904 36660 MT (reason)SH /Helvetica SF 19800 XM (Could be a Unix error code for a hardware error.)SH 12 /Helvetica-Bold AF 7200 38678 MT (Returns)SH 10 /Courier AF 10904 40550 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (This routine does not receive a reply) 183 W( message \050and consequently has no)184 W 19800 41693 MT (return value\051, so only message transmission errors apply.)SH 12 /Helvetica-Bold AF 7200 43711 MT (See Also)SH 10 /Courier AF 8312 45137 MT (memory_object_data_request, memory_object_data_provided)SH 12 /Helvetica-Bold AF 7200 47123 MT (Notes)SH 10 /Helvetica AF 8312 48622 MT (The error code is currently ignored.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 79 80 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (79)SH 12 SS 7200 8075 MT (memory_object_destroy)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t memory_object_destroy\050memory_control, reason\051;)SH 12000 13115 MT (memory_object_control_t)SH 21600 14146 MT (memory_control;)SH 12000 15177 MT (kern_return_t reason;)1200 W 12 /Helvetica-Bold AF 7200 18194 MT (Description)SH 10 /Courier AF 8312 19693 MT (memory_object_destroy)SH /Helvetica SF 21292 XM (tells the kernel to shut down the memory object. As a result of) 102 W( this call)101 W 7200 21119 MT (the kernel will no longer support paging activity or any memory_object calls on) 6 W( this object, and all rights to)7 W 7200 22545 MT (the memory object port, the memory control) 197 W( port and the memory name port will be returned to the)196 W 7200 23971 MT (memory manager in a)41 W /Courier SF 17368 XM (memory_object_terminate)SH /Helvetica SF 31488 XM (call. If the memory manager is concerned that any)42 W 7200 25397 MT (modified cached data be returned to it) 731 W( before the object is terminated, it should call)730 W /Courier SF 7200 26823 MT (memory_object_lock_request)SH /Helvetica SF 23102 XM (with)SH /Courier SF 25182 XM (should_flush)SH /Helvetica SF 32684 XM (set and a lock value of)25 W /Courier SF 43062 XM (VM_PROT_WRITE)SH /Helvetica SF 51165 XM (before)SH 7200 28249 MT (making this call.)SH 12 /Helvetica-Bold AF 7200 30235 MT (Arguments)SH 10 /Courier AF 10904 32107 MT (memory_control)SH /Helvetica SF 19800 XM (The port,) 102 W( provided by the kernel in a)101 W /Courier SF 36895 XM (memory_object_init)SH /Helvetica SF 48074 XM (call, to which)101 W 19800 33250 MT (cache management requests may be issued.)SH /Courier SF 10904 34876 MT (reason)SH /Helvetica SF 19800 XM (An error code indicating when the object must be destroyed.)SH 12 /Helvetica-Bold AF 7200 36894 MT (Returns)SH 10 /Courier AF 10904 38766 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (This routine does not receive a reply) 183 W( message \050and consequently has no)184 W 19800 39909 MT (return value\051, so only message transmission errors apply.)SH 12 /Helvetica-Bold AF 7200 41927 MT (See Also)SH 10 /Courier AF 8312 43353 MT (memory_object_terminate, memory_object_lock_request)SH 12 /Helvetica-Bold AF 7200 45339 MT (Notes)SH 10 /Helvetica AF 8312 46838 MT (The error code is currently ingnored.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 80 81 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (80)SH 12 SS 7200 8075 MT (vm_set_default_memory_manager)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (routine vm_set_default_memory_manager\050host,default_manager\051)SH 12000 13115 MT (task_t host;)5400 W 12000 14146 MT (memory_object_t default_manager;) SH( /*) 4200 W( in/out */)SH 12 /Helvetica-Bold AF 7200 17163 MT (Description)SH 10 /Courier AF 8312 18662 MT (vm_set_default_memory_manager)SH /Helvetica SF 26083 XM (sets the kernel's default memory) 93 W( manager. It sets the port to)92 W 7200 20088 MT (which newly-created temporary memory objects are delivered by)20 W /Courier SF 36202 XM (memory_object_create)SH /Helvetica SF 48500 XM (to the)21 W /Courier SF 51322 XM (host)SH /Helvetica SF (.)SH 7200 21514 MT (The old memory manager port is returned.) 119 W( If)514 W /Courier SF 28387 XM (default_manager)SH /Helvetica SF 37783 XM (is)SH /Courier SF 38901 XM (PORT_NULL)SH /Helvetica SF 44697 XM (then this routine just)118 W 7200 22940 MT (returns the current default manager port without changing it.)SH 12 /Helvetica-Bold AF 7200 24926 MT (Arguments)SH 10 /Courier AF 10904 26798 MT (host)SH /Helvetica SF 19800 XM (A task port to the kernel whose default memory manager is to be changed.)SH /Courier SF 10904 28424 MT (default_manager)SH /Helvetica SF 19800 29567 MT (Input as) 447 W( the port that the new memory manager is listening on for)446 W /Courier SF 19800 30710 MT (memory_object_create)SH /Helvetica SF 32573 XM (calls. Returned) 495 W( as the old default memory)496 W 19800 31853 MT (manager's port.)SH 12 /Helvetica-Bold AF 7200 33871 MT (Returns)SH 10 /Courier AF 10904 35743 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (The new memory manager is installed.)SH /Courier SF 10904 37369 MT (KERN_INVALID_ARGUMENT)SH /Helvetica SF 19800 38512 MT (This task does not have the privileges required for this call.)SH 12 /Helvetica-Bold AF 7200 40530 MT (See Also)SH 10 /Courier AF 8312 41956 MT (vm_allocate, memory_object_create, memory_object_data_initialize)SH 12 /Helvetica-Bold AF 7200 43942 MT (Notes)SH 10 /Helvetica AF 8312 45441 MT (There is no way for the user task to acquire the appropriate privilege to make this call.)SH 8312 48008 MT (<<<)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 81 82 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (81)SH 11 SS 7200 8002 MT (7.3. Memory Manager calls)SH 10 /Helvetica AF 8312 9428 MT (This section) 146 W( describes calls made by the)147 W 8 SS 27569 XM (MACH)SH 10 SS 30350 XM (kernelon a memory object that has previously been)147 W 7200 10854 MT (mapped by some task \050see)297 W /Courier SF 20967 XM (vm_map)SH /Helvetica SF (\051. A) 870 W( task that manages a memory object \050called a)296 W /Helvetica-Bold SF 50110 XM (memory)SH 7200 12280 MT (manager)SH /Helvetica SF (\051 must act as a server for this interface.)SH 8312 14847 MT (In order to isolate the) 329 W( memory manager from the specifics of message formatting, the remote)330 W 7200 16273 MT (procedure call generator,)102 W /Helvetica-Bold SF 18900 XM (MIG)SH /Helvetica SF (, produces a procedure,)102 W /Courier SF 32035 XM (memory_object_server)SH /Helvetica SF (, to handle a received)101 W 7200 17699 MT (messag This function does all necessary argument) 186 W( handling, and calls one of the interface functions)187 W 7200 19125 MT (described below.)SH 8312 21692 MT (The procedures described in this section are the calls that the) 30 W( kernel may make to a memory manager)29 W 7200 23118 MT (either as a result of a user action on a memory object or as part of) 234 W( the kernel's physical memory)235 W 7200 24544 MT (management. To be useful a memory manager must) 4 W( define a least a couple more protocols. It must make)3 W 7200 25970 MT (a service port) 87 W( available to potential clients and it must provide a way for clients to get a memory object)88 W 7200 27396 MT (port to hand to the)115 W /Courier SF 16170 XM (vm_map)SH /Helvetica SF 20163 XM (call. It may also wish to provide calls) 115 W( for clients to get or pass information)114 W 7200 28822 MT (about a specific memory object. The memory object name port can be used for this purpose.)SH 8312 31389 MT (The kernel includes a default memory manager which handles those memory) 85 W( objects that it needs to)86 W 7200 32815 MT (create or are created by a user with the call)194 W /Courier SF 28593 XM (vm_allocate)SH /Helvetica SF (. The user may) 194 W( substitute a new default)193 W 7200 34241 MT (memory manager if he wishes with the privileged call)88 W /Courier SF 31666 XM (vm_set_default_memory_manager)SH /Helvetica SF (. The) 454 W( final)89 W 7200 35667 MT (two calls in the section are only made to the default memory manager. Other memory managers need) 10 W( not)9 W 7200 37093 MT (provide these calls.)SH 8312 39660 MT (These calls are) 120 W( the result of an asynchronous message sent by the kernel, i.e., the kernel does not)121 W 7200 41086 MT (wait for a reply to the message. Thus the error returned from these calls are ignored; however,) 133 W( most)132 W 7200 42512 MT (require some action on the part of the memory manager. These response actions need not necessarily)73 W 7200 43938 MT (be done in the order requested, but should be done as soon as practical.)SH 8312 46505 MT (The calls that are made by the kernel to all memory managers are:)SH /Symbol SF 9242 48448 MT (\267)SH /Helvetica SF 9980 XM (memory_object_init)SH /Symbol SF 9242 50163 MT (\267)SH /Helvetica SF 9980 XM (memory_object_data_request)SH /Symbol SF 9242 51878 MT (\267)SH /Helvetica SF 9980 XM (memory_object_data_write)SH /Symbol SF 9242 53593 MT (\267)SH /Helvetica SF 9980 XM (memory_object_data_unlock)SH /Symbol SF 9242 55308 MT (\267)SH /Helvetica SF 9980 XM (memory_object_lock_completed)SH /Symbol SF 9242 57023 MT (\267)SH /Helvetica SF 9980 XM (memory_object_copy)SH /Symbol SF 9242 58738 MT (\267)SH /Helvetica SF 9980 XM (memory_object_terminate)SH 8312 61305 MT (The following two calls must also be provided by the default memory manager.)SH /Symbol SF 9242 63248 MT (\267)SH /Helvetica SF 9980 XM (memory_object_create)SH /Symbol SF 9242 64963 MT (\267)SH /Helvetica SF 9980 XM (memory_object_data_initialize)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 82 83 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (82)SH 12 SS 7200 8075 MT (memory_object_server)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (boolean_t memory_object_server\050in_msg, out_msg\051)SH 12000 13115 MT (msg_header_t *in_msg;)1800 W 12000 14146 MT (msg_header_t *out_msg;)1800 W 12 /Helvetica-Bold AF 7200 17163 MT (Description)SH 10 /Helvetica AF 8312 18662 MT (A)SH /Helvetica-Bold SF 9362 XM (memory manager)105 W /Helvetica SF 18186 XM (is a server task that responds to specific messages from the kernel) 105 W( in order to)104 W 7200 20088 MT (handle memory management functions for the kernel.)SH 8312 22655 MT (In order to isolate the) 329 W( memory manager from the specifics of message formatting, the remote)330 W 7200 24081 MT (procedure call generator produces a procedure,)384 W /Courier SF 30903 XM (memory_object_server)SH /Helvetica SF (, to handle a received)384 W 7200 25507 MT (message. This) 552 W( function does all necessary argument handling, and actually calls one of) 137 W( the following)138 W 7200 26933 MT (functions:)SH /Courier SF 19701 XM (memory_object_init)SH /Helvetica SF (,)SH /Courier SF 39000 XM (memory_object_data_write,)SH 7200 28359 MT (memory_object_data_request, memory_object_data_unlock,)14400 W 7200 29785 MT (memory_object_lock_completed, memory_object_copy,) 378 W( memory_object_terminate)700 W /Helvetica SF (. A)699 W /Helvetica-Bold SF 7200 31211 MT (default memory manager)96 W /Helvetica SF 19659 XM (may get two additional requests from the kernel:)97 W /Courier SF 42000 XM (memory_object_create)SH /Helvetica SF 7200 32637 MT (and)SH /Courier SF 9146 XM (memory_object_data_initialize)SH /Helvetica SF (.)SH 8312 35204 MT (The return value from the)380 W /Courier SF 21717 XM (memory_object_server)SH /Helvetica SF 34374 XM (function indicates that the message was)379 W 7200 36630 MT (appropriate to the memory management interface \050returning)261 W /Courier SF 35816 XM (TRUE)SH /Helvetica SF (\051, or that) 261 W( it could not handle this)262 W 7200 38056 MT (message \050returning)SH /Courier SF 16092 XM (FALSE)SH /Helvetica SF (\051.)SH 12 /Helvetica-Bold AF 7200 40042 MT (Arguments)SH 10 /Courier AF 10904 41914 MT (in_msg)SH /Helvetica SF 19800 XM (The message that has been received from the kernel.)SH /Courier SF 10904 43540 MT (out_msg)SH /Helvetica SF 19800 XM (A reply message. Not used for this server)SH 12 /Helvetica-Bold AF 7200 45558 MT (Returns)SH 10 /Courier AF 10904 47430 MT (TRUE)SH /Helvetica SF 19800 XM (From)SH /Courier SF 22701 XM (memory_object_server)SH /Helvetica SF (, indicates that the message in question)289 W 19800 48573 MT (was applicable to this interface, and that the appropriate) 1 W( routine was called to)2 W 19800 49716 MT (interpret the message.)SH /Courier SF 10904 51342 MT (FALSE)SH /Helvetica SF 19800 XM (From)SH /Courier SF 22420 XM (memory_object_server)SH /Helvetica SF (, indicates that the message did) 9 W( not apply to)8 W 19800 52485 MT (this interface, and that no other action was taken.)SH 12 /Helvetica-Bold AF 7200 54503 MT (See Also)SH 10 /Courier AF 8312 55929 MT (memory_object_init,memory_object_data_request,memory_object_data_unlock,)SH 7200 57355 MT (memory_object_data_write,memory_object_copy,memory_object_terminate,)SH 7200 58781 MT (memory_object_lock_completed, memory_object_data_initialize,)10800 W 7200 60207 MT (memory_object_create)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 83 84 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (83)SH 12 SS 7200 8075 MT (memory_object_init)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t memory_object_init\050memory_object, memory_control,)SH 24000 13115 MT (memory_object_name, memory_object_page_size\051)SH 12000 14146 MT (memory_object_t memory_object;)SH 12000 15177 MT (memory_object_control_t)SH 21600 16208 MT (memory_control;)SH 12000 17239 MT (memory_object_name_t)SH 21600 18270 MT (memory_object_name;)SH 12000 19301 MT (vm_size_t memory_object_page_size;)3600 W 12 /Helvetica-Bold AF 7200 22318 MT (Description)SH 10 /Courier AF 8312 23817 MT (memory_object_init)SH /Helvetica SF 19458 XM (serves as a notification that a)68 W 8 SS 33095 XM (MACH)SH 10 SS 35797 XM (kernel has been) 68 W( asked to map the given)67 W 7200 25243 MT (memory object into a task's virtual address space. Additionally,) 75 W( it provides a port on which the memory)76 W 7200 26669 MT (manager may issue) 50 W( cache management requests, and a port which the kernel will use to name this data)49 W 7200 28095 MT (region. In) 540 W( the event that different)131 W 8 SS 23071 XM (MACH)SH 10 SS 25837 XM (kernels are asked to map the same memory object, each will)132 W 7200 29521 MT (perform a)104 W /Courier SF 11965 XM (memory_object_init)SH /Helvetica SF 23147 XM (call with) 104 W( new request and name ports. The virtual page size that is)103 W 7200 30947 MT (used by the calling kernel is included for planning purposes.)SH 8312 33514 MT (When the memory) 225 W( manager is prepared to accept requests for data for this object, it should call)226 W /Courier SF 7200 34940 MT (memory_object_set_attribute)SH /Helvetica SF 23823 XM (with the attribute)145 W /Courier SF 31873 XM (ready)SH /Helvetica SF 35296 XM (set. Othewise the kernel will not process)144 W 7200 36366 MT (requests on this object.)SH 12 /Helvetica-Bold AF 7200 38352 MT (Arguments)SH 10 /Courier AF 10904 40224 MT (memory_object)SH /Helvetica SF 19800 XM (The port) 26 W( that represents the memory object data, as supplied to the kernel in)27 W 19800 41367 MT (a)SH /Courier SF 20634 XM (vm_map)SH /Helvetica SF 24512 XM (call.)SH /Courier SF 10904 42993 MT (memory_control)SH /Helvetica SF 19800 XM (The request port to which a response is) 204 W( requested. [In the event that a)203 W 19800 44136 MT (memory object has been supplied to more than one)333 W 8 SS 45864 XM (MACH)SH 10 SS 48831 XM (kernel, this)334 W 19800 45279 MT (argument identifies the kernel that has made the request.])SH /Courier SF 10904 46905 MT (memory_object_name)SH /Helvetica SF 19800 48048 MT (A port) 115 W( used by the kernel to refer to the memory object data in reponse to)116 W /Courier SF 19800 49191 MT (vm_region)SH /Helvetica SF 25478 XM (calls.)SH /Courier SF 10904 50817 MT (memory_object_page_size)SH /Helvetica SF 19800 51960 MT (The page size to be used by this kernel. All data) 46 W( sizes in calls involving this)47 W 19800 53103 MT (kernel must be an integral multiple of the page size. [Note that) 198 W( different)197 W 19800 54246 MT (kernels, indicated by different)126 W /Courier SF 33588 XM (memory_control)SH /Helvetica SF (s may have) 126 W( different page)127 W 19800 55389 MT (sizes.])SH 12 /Helvetica-Bold AF 7200 57407 MT (Returns)SH 10 /Courier AF 10904 59279 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (Since this routine is called by the kernel, which does not wait for a) 188 W( reply)187 W 19800 60422 MT (message, this value is ignored.)SH 12 /Helvetica-Bold AF 7200 62440 MT (See Also)SH 10 /Courier AF 8312 63866 MT (memory_object_set_attributes)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 84 85 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (84)SH 12 SS 7200 8075 MT (memory_object_data_request)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t memory_object_data_request\050memory_object,memory_control,)SH 24600 13115 MT (offset, length, desired_access\051)SH 12000 14146 MT (memory_object_t memory_object;)SH 12000 15177 MT (memory_object_control_t)SH 21600 16208 MT (memory_control;)SH 12000 17239 MT (vm_offset_t offset;)2400 W 12000 18270 MT (vm_size_t length;)3600 W 12000 19301 MT (vm_prot_t desired_access;)3600 W 12 /Helvetica-Bold AF 7200 22318 MT (Description)SH 10 /Courier AF 8312 23817 MT (memory_object_data_request)SH /Helvetica SF 24247 XM (is a request for data from the specified memory object, for at) 57 W( least)58 W 7200 25243 MT (the access specified.) 148 W( The) 573 W( memory manager is expected to return at least the specified data, with as)147 W 7200 26669 MT (much access as it can allow, using)216 W /Courier SF 24329 XM (memory_object_data_provided)SH /Helvetica SF (. If) 710 W( the memory manager is)217 W 7200 28095 MT (unable to provide the data \050for example,) 612 W( because of a hardware error\051, it may use the)611 W /Courier SF 7200 29521 MT (memory_object_data_error)SH /Helvetica SF 22026 XM (call.)SH /Courier SF 24657 XM (memory_object_data_unavailable)SH /Helvetica SF 43084 XM (call may be used to tell)149 W 7200 30947 MT (the kernel to supply zero-filled memory for this region.)SH 12 /Helvetica-Bold AF 7200 32933 MT (Arguments)SH 10 /Courier AF 10904 34805 MT (memory_object)SH /Helvetica SF 19800 XM (The port that represents the memory object data, as supplied to the kernel) 27 W( in)26 W 19800 35948 MT (a)SH /Courier SF 20634 XM (vm_map)SH /Helvetica SF 24512 XM (call.)SH /Courier SF 10904 37574 MT (memory_control)SH /Helvetica SF 19800 XM (The request port to which a response is) 203 W( requested. [In the event that a)204 W 19800 38717 MT (memory object) 334 W( has been supplied to more than one)333 W 8 SS 45865 XM (MACH)SH 10 SS 48832 XM (kernel, this)333 W 19800 39860 MT (argument identifies the kernel that has made the request.])SH /Courier SF 10904 41486 MT (offset)SH /Helvetica SF 19800 XM (The offset within a memory object to which this) 38 W( call refers. This will be page)39 W 19800 42629 MT (aligned.)SH /Courier SF 10904 44255 MT (length)SH /Helvetica SF 19800 XM (The number of bytes of data, starting at)148 W /Courier SF 38716 XM (offset)SH /Helvetica SF (, to) 148 W( which this call refers.)147 W 19800 45398 MT (This will be an integral number of memory object pages.)SH /Courier SF 10904 47024 MT (desired_access)SH /Helvetica SF 19800 XM (A protection value describing the) 246 W( memory access modes which must be)247 W 19800 48167 MT (permitted on the specified cached data. One or more of:)101 W /Courier SF 46200 XM (VM_PROT_READ,)SH 19800 49310 MT (VM_PROT_WRITE)SH /Helvetica SF 27878 XM (or)SH /Courier SF 29045 XM (VM_PROT_EXECUTE)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 51328 MT (Returns)SH 10 /Courier AF 10904 53200 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (Since this) 187 W( routine is called by the kernel, which does not wait for a reply)188 W 19800 54343 MT (message, this value is ignored.)SH 12 /Helvetica-Bold AF 7200 56361 MT (See Also)SH 10 /Courier AF 8312 57787 MT (memory_object_data_provided, memory_object_data_error,)13288 W 7200 59213 MT (memory_object_data_unavailable)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 85 86 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (85)SH 12 SS 7200 8075 MT (memory_object_data_write)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t memory_object_data_write\050memory_object,) 1200 W( memory_control,)SH 26400 13115 MT (offset, data, data_count\051)SH 12000 14146 MT (memory_object_t memory_object;)SH 12000 15177 MT (memory_object_control_t)SH 21600 16208 MT (memory_control;)SH 12000 17239 MT (vm_offset_t offset;)2400 W 12000 18270 MT (pointer_t data;)3600 W 12000 19301 MT (unsigned int) SH( data_count;)1800 W 12 /Helvetica-Bold AF 7200 22318 MT (Description)SH 10 /Courier AF 8312 23817 MT (memory_object_data_write)SH /Helvetica SF 23009 XM (provides the memory manager with data that has been modified while)20 W 7200 25243 MT (cached in physical memory.) 148 W( Once) 572 W( the memory manager no longer needs this data \050e.g., it has been)147 W 7200 26669 MT (written to another storage medium\051, it should be deallocated using)SH /Courier SF 36714 XM (vm_deallocate)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 28655 MT (Arguments)SH 10 /Courier AF 10904 30527 MT (memory_object)SH /Helvetica SF 19800 XM (The port) 26 W( that represents the memory object data, as supplied to the kernel in)27 W 19800 31670 MT (a)SH /Courier SF 20634 XM (vm_map)SH /Helvetica SF 24512 XM (call.)SH /Courier SF 10904 33296 MT (memory_control)SH /Helvetica SF 19800 XM (The request port to which a response is) 204 W( requested. [In the event that a)203 W 19800 34439 MT (memory object has been supplied to more than one)333 W 8 SS 45864 XM (MACH)SH 10 SS 48831 XM (kernel, this)334 W 19800 35582 MT (argument identifies the kernel that has made the request.])SH /Courier SF 10904 37208 MT (offset)SH /Helvetica SF 19800 XM (The offset within a memory object to which) 39 W( this call refers. This will be page)38 W 19800 38351 MT (aligned.)SH /Courier SF 10904 39977 MT (data)SH /Helvetica SF 19800 XM (Data which has been modified while cached in physical memory.)SH /Courier SF 10904 41603 MT (data_count)SH /Helvetica SF 19800 XM (The amount of data to be written, in bytes.) 18 W( This) 315 W( will be an integral number of)19 W 19800 42746 MT (memory object pages.)SH 12 /Helvetica-Bold AF 7200 44764 MT (Returns)SH 10 /Courier AF 10904 46636 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (Since this routine is called by the kernel, which does not wait for a) 188 W( reply)187 W 19800 47779 MT (message, this value is ignored.)SH 12 /Helvetica-Bold AF 7200 49797 MT (See Also)SH 10 /Courier AF 8312 51223 MT (vm_deallocate)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 86 87 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (86)SH 12 SS 7200 8075 MT (memory_object_data_unlock)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t memory_object_data_unlock\050memory_object, memory_control,)SH 24000 13115 MT (offset, length, desired_access\051)SH 12000 14146 MT (memory_object_t memory_object;)SH 12000 15177 MT (memory_object_control_t)SH 21600 16208 MT (memory_control;)SH 12000 17239 MT (vm_offset_t offset;)2400 W 12000 18270 MT (vm_size_t length;)3600 W 12000 19301 MT (vm_prot_t desired_access;)3600 W 12 /Helvetica-Bold AF 7200 22318 MT (Description)SH 10 /Courier AF 8312 23817 MT (memory_object_data_unlock)SH /Helvetica SF 23734 XM (is a request that the memory manager permit at) 144 W( least the desired)145 W 7200 25243 MT (access to the specified data) 264 W( cached by the kernel. A call to)263 W /Courier SF 37137 XM (memory_object_lock_request)SH /Helvetica SF 53278 XM (is)SH 7200 26669 MT (expected in response.)SH 12 /Helvetica-Bold AF 7200 28655 MT (Arguments)SH 10 /Courier AF 10904 30527 MT (memory_object)SH /Helvetica SF 19800 XM (The port) 26 W( that represents the memory object data, as supplied to the kernel in)27 W 19800 31670 MT (a)SH /Courier SF 20634 XM (vm_map)SH /Helvetica SF 24512 XM (call.)SH /Courier SF 10904 33296 MT (memory_control)SH /Helvetica SF 19800 XM (The request port to which a response is) 204 W( requested. [In the event that a)203 W 19800 34439 MT (memory object has been supplied to more than one)333 W 8 SS 45864 XM (MACH)SH 10 SS 48831 XM (kernel, this)334 W 19800 35582 MT (argument identifies the kernel that has made the request.])SH /Courier SF 10904 37208 MT (offset)SH /Helvetica SF 19800 XM (The offset within a memory object to which) 39 W( this call refers. This will be page)38 W 19800 38351 MT (aligned.)SH /Courier SF 10904 39977 MT (length)SH /Helvetica SF 19800 XM (The number of bytes of) 147 W( data, starting at)148 W /Courier SF 38712 XM (offset)SH /Helvetica SF (, to which this call refers.)148 W 19800 41120 MT (This will be an integral number of memory object pages.)SH /Courier SF 10904 42746 MT (desired_access)SH /Helvetica SF 19800 XM (A protection value describing the memory access) 247 W( modes which must be)246 W 19800 43889 MT (permitted on the) 100 W( specified cached data. One or more of:)101 W /Courier SF 46200 XM (VM_PROT_READ,)SH 19800 45032 MT (VM_PROT_WRITE)SH /Helvetica SF 27878 XM (or)SH /Courier SF 29045 XM (VM_PROT_EXECUTE)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 47050 MT (Returns)SH 10 /Courier AF 10904 48922 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (Since this routine is called by the kernel, which does not wait for a) 188 W( reply)187 W 19800 50065 MT (message, this value is ignored.)SH 12 /Helvetica-Bold AF 7200 52083 MT (See Also)SH 10 /Courier AF 8312 53509 MT (memory_object_lock_request,memory_object_lock_completed)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 87 88 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (87)SH 12 SS 7200 8075 MT (memory_object_copy)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t memory_object_copy\050old_memory_object, old_memory_control,)SH 26400 13115 MT (offset, length, new_memory_object\051)SH 10200 14146 MT (memory_object_t old_memory_object;)6600 W 10200 15177 MT (memory_object_control_t old_memory_control;)1800 W 10200 16208 MT (vm_offset_t offset;)9000 W 10200 17239 MT (vm_size_t length;)10200 W 10200 18270 MT (memory_object_t new_memory_object;)6600 W 12 /Helvetica-Bold AF 7200 22318 MT (Description)SH 10 /Courier AF 8312 23817 MT (memory_object_copy)SH /Helvetica SF 19606 XM (indicates that) 216 W( a copy has been made of the specified range of the given)217 W 7200 25243 MT (original memory object. This call includes only the) 75 W( new memory object itself; a)74 W /Courier SF 43200 XM (memory_object_init)SH /Helvetica SF 7200 26669 MT (call will be made on the new memory object after the currently cached pages of the) 108 W( original object are)109 W 7200 28095 MT (prepared. After the memory) 839 W( manager receives the init call, it should reply with the)838 W /Courier SF 7200 29521 MT (memory_object_set_attributes)SH /Helvetica SF 24481 XM (call to assert) 203 W( the "ready" attribute. The kernel will use the new)204 W 7200 30947 MT (memory object, contol and name ports to refer to the new copy.)SH 8312 33514 MT (This call is made when the original memory) 620 W( object had the caching parameter set to)619 W /Courier SF 7200 34940 MT (MEMORY_OBJECT_COPY_CALL)SH /Helvetica SF 21278 XM (and a user of the object has asked the kernel to copy it.)SH 8312 37507 MT (Cached pages from the) 218 W( original memory object at the time of the copy operation are handled as)219 W 7200 38933 MT (follows: Readable pages may be) 53 W( silently copied to the new memory object \050with all access permissions\051.)52 W 7200 40359 MT (Pages not copied are locked to prevent write access.)SH 8312 42926 MT (The new memory object is)242 W /Helvetica-Oblique SF 21470 XM (temporary)SH /Helvetica SF (, meaning that the memory) 242 W( manager should not change its)243 W 7200 44352 MT (contents or allow the) 38 W( memory object to be mapped in another client. The memory manager may use the)37 W /Courier SF 7200 45778 MT (memory_object_data_unavailable)SH /Helvetica SF 25483 XM (call to) 5 W( indicate that the appropriate pages of the original memory)6 W 7200 47204 MT (object may be used to fulfill the data request.)SH 12 /Helvetica-Bold AF 7200 49190 MT (Arguments)SH 10 /Courier AF 10904 50957 MT (old_memory_object)SH /Helvetica SF 19800 52100 MT (The port that represents the old memory object date.)SH /Courier SF 10904 53726 MT (old_memory_contol)SH /Helvetica SF 19800 54869 MT (The kernel control port for the old object.)SH /Courier SF 10904 56495 MT (offset)SH /Helvetica SF 19800 XM (The offset within a memory object to which) 39 W( this call refers. This will be page)38 W 19800 57638 MT (aligned.)SH /Courier SF 10904 59264 MT (length)SH /Helvetica SF 19800 XM (The number of bytes of) 147 W( data, starting at)148 W /Courier SF 38712 XM (offset)SH /Helvetica SF (, to which this call refers.)148 W 19800 60407 MT (This will be an integral number of memory object pages.)SH /Courier SF 10904 62033 MT (new_memory_object)SH /Helvetica SF 19800 63176 MT (A new memory object created by) 365 W( the kernel; see synopsis for further)366 W 19800 64319 MT (description. Note) 310 W( that all port rights \050including) 16 W( receive rights\051 are included for)15 W 19800 65462 MT (the new memory object.)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 88 89 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (88)SH 12 SS 7200 8075 MT (Returns)SH 10 /Courier AF 10904 9947 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (Since this) 187 W( routine is called by the kernel, which does not wait for a reply)188 W 19800 11090 MT (message, this value is ignored.)SH 12 /Helvetica-Bold AF 7200 13108 MT (See Also)SH 10 /Courier AF 8312 14534 MT (memory_object_init, memory_object_set_attributes,)16288 W 7200 15960 MT (memory_object_data_unavailable)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 89 90 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (89)SH 12 SS 7200 8075 MT (memory_object_terminate)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t memory_object_terminate\050memory_object, memory_control,)SH 24600 13115 MT (memory_object_name\051)SH 12000 14146 MT (memory_object_t memory_object;)SH 20400 15177 MT (memory_object_control_t)SH 21600 16208 MT (memory_control;)SH 21000 17239 MT (memory_object_name_t)SH 21600 18270 MT (memory_object_name;)SH 12 /Helvetica-Bold AF 7200 21287 MT (Description)SH 10 /Courier AF 8312 22786 MT (memory_object_terminate)SH /Helvetica SF 22641 XM (indicates that the)251 W 8 SS 31232 XM (MACH)SH 10 SS 34117 XM (kernel has) 251 W( completed its use of the given)252 W 7200 24212 MT (memory object. All) 35 W( rights to the memory object control and name ports are included, so that the memory)34 W 7200 25638 MT (manager can destroy them \050using)37 W /Courier SF 22558 XM (port_deallocate)SH /Helvetica SF (\051 after doing) 37 W( appropriate bookkeeping. The kernel)38 W 7200 27064 MT (will terminate) 88 W( a memory object only after all address space mappings of that memory object have been)87 W 7200 28490 MT (deallocated, or upon explicit request by the memory manager.)SH 12 /Helvetica-Bold AF 7200 30476 MT (Arguments)SH 10 /Courier AF 10904 32348 MT (memory_object)SH /Helvetica SF 19800 XM (The port) 26 W( that represents the memory object data, as supplied to the kernel in)27 W 19800 33491 MT (a)SH /Courier SF 20634 XM (vm_map)SH /Helvetica SF 24512 XM (call.)SH /Courier SF 10904 35117 MT (memory_control)SH /Helvetica SF 19800 XM (The request port to which a response is) 204 W( requested. [In the event that a)203 W 19800 36260 MT (memory object has been supplied to more than one)333 W 8 SS 45864 XM (MACH)SH 10 SS 48831 XM (kernel, this)334 W 19800 37403 MT (argument identifies the kernel that has made the request.])SH /Courier SF 10904 39029 MT (memory_object_name)SH /Helvetica SF 19800 40172 MT (A port) 115 W( used by the kernel to refer to the memory object data in reponse to)116 W /Courier SF 19800 41315 MT (vm_region)SH /Helvetica SF 25478 XM (calls.)SH 12 /Helvetica-Bold AF 7200 43333 MT (Returns)SH 10 /Courier AF 10904 45205 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (Since this routine is called by the kernel, which does not wait for a) 188 W( reply)187 W 19800 46348 MT (message, this value is ignored.)SH 12 /Helvetica-Bold AF 7200 48366 MT (See Also)SH 10 /Courier AF 8312 49792 MT (memory_object_destroy, port_deallocate)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 90 91 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (90)SH 12 SS 7200 8075 MT (memory_object_create)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t memory_object_create\050old_memory_object,new_memory_object,)SH 24000 13115 MT (new_object_size, new_control,)600 W 24000 14146 MT (new_name, new_page_size\051)SH 12000 15177 MT (memory_object_t old_memory_object;)SH 21600 16208 MT (memory_object_t)SH 21600 17239 MT (new_memory_object;)SH 12000 18270 MT (vm_size_t new_object_size;)3600 W 12000 19301 MT (memory_object_control_t)SH 21600 20332 MT (new_control;)SH 12000 21363 MT (memory_object_name_t)SH 21600 22394 MT (new_name;)SH 12000 23425 MT (vm_size_t new_page_size;)3600 W 12 /Helvetica-Bold AF 7200 26442 MT (Description)SH 10 /Courier AF 8312 27941 MT (memory_object_create)SH /Helvetica SF 20711 XM (is a request that the given memory manager accept responsibility for the)121 W 7200 29367 MT (given memory object created by the kernel. This call will only be made to) 87 W( the system)86 W /Helvetica-Bold SF 46468 XM (default memory)86 W 7200 30793 MT (manager)SH /Helvetica SF (. The) 292 W( memory object in question initially consists of zero-filled memory; only memory pages that)8 W 7200 32219 MT (are actually written will ever be provided to the memory manager. When processing)740 W /Courier SF 7200 33645 MT (memory_object_data_request)SH /Helvetica SF 24684 XM (calls, the default memory manager must use)1607 W /Courier SF 7200 35071 MT (memory_object_data_unavailable)SH /Helvetica SF 25478 XM (for any pages that have not previously been written.)SH 8312 37638 MT (No reply is expected after this call.) 7 W( Since this call is directed to the default memory manager, the kernel)6 W 7200 39064 MT (assumes that it will be ready to handle data requests to this object and does not need the) 29 W( confirmation of)30 W 7200 40490 MT (a)SH /Courier SF 8034 XM (memory_object_set_attributes)SH /Helvetica SF 25112 XM (call.)SH 12 /Helvetica-Bold AF 7200 42476 MT (Arguments)SH 10 /Courier AF 10904 44243 MT (old_memory_object)SH /Helvetica SF 19800 45386 MT (A memory) 208 W( object provided by the default memory manager on which the)209 W 19800 46529 MT (kernel can make)SH /Courier SF 27414 XM (memory_object_create)SH /Helvetica SF 39692 XM (calls.)SH /Courier SF 10904 48155 MT (new_memory_object)SH /Helvetica SF 19800 49298 MT (A new memory object created by) 365 W( the kernel; see synopsis for further)366 W 19800 50441 MT (description. Note) 310 W( that all port rights \050including) 16 W( receive rights\051 are included for)15 W 19800 51584 MT (the new memory object.)SH /Courier SF 10904 53210 MT (new_object_size)SH /Helvetica SF 19800 54353 MT (Maximum size of the new object.)SH /Courier SF 10904 55979 MT (new_control)SH /Helvetica SF 19800 XM (A port, created by the kernel, on which a memory) 36 W( manager may issue cache)35 W 19800 57122 MT (management requests for the new object.)SH /Courier SF 10904 58748 MT (new_name)SH /Helvetica SF 19800 XM (A port) 15 W( used by the kernel to refer to the new memory object data in response)16 W 19800 59891 MT (to)SH /Courier SF 20912 XM (vm_region)SH /Helvetica SF 26590 XM (calls.)SH /Courier SF 10904 61517 MT (new_page_size)SH /Helvetica SF 19800 XM (The page size to be used) 47 W( by this kernel. All data sizes in calls involving this)46 W 19800 62660 MT (kernel must) 197 W( be an integral multiple of the page size. [Note that different)198 W 19800 63803 MT (kernels, indicated by) 127 W( different)126 W /Courier SF 33590 XM (memory_control)SH /Helvetica SF (s may have different page)126 W 19800 64946 MT (sizes.])SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 91 92 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (91)SH 12 SS 7200 8075 MT (Returns)SH 10 /Courier AF 10904 9947 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (Since this) 187 W( routine is called by the kernel, which does not wait for a reply)188 W 19800 11090 MT (message, this value is ignored.)SH 12 /Helvetica-Bold AF 7200 13108 MT (See Also)SH 10 /Courier AF 8312 14534 MT (memory_object_data_initialize)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 92 93 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (92)SH 12 SS 7200 8075 MT (memory_object_data_initialize)SH 10 /Courier AF 7200 9564 MT (#include )SH 7200 12084 MT (kern_return_t memory_object_data_initialize\050memory_object,memory_control,)SH 26400 13115 MT (offset, data, data_count\051)SH 12000 14146 MT (memory_object_t memory_object;)SH 12000 15177 MT (memory_object_control_t)SH 21600 16208 MT (memory_control;)SH 12000 17239 MT (vm_offset_t offset;)2400 W 12000 18270 MT (pointer_t data;)3600 W 12000 19301 MT (unsigned int) SH( data_count;)1800 W 12 /Helvetica-Bold AF 7200 23349 MT (Description)SH 10 /Courier AF 8312 24848 MT (memory_object_data_initialize)SH /Helvetica SF 26191 XM (provides the memory manager with initial data for a kernel-)200 W 7200 26274 MT (created memory object. If the memory manager already has been supplied data \050by a) 315 W( previous)316 W /Courier SF 7200 27700 MT (memory_object_data_initialize)SH /Helvetica SF 25171 XM (or)SH /Courier SF 26631 XM (memory_object_data_write)SH /Helvetica SF (\051, then this) 293 W( data should be)292 W 7200 29126 MT (ignored. Otherwise,) 285 W( this call behaves exactly as does)4 W /Courier SF 31301 XM (memory_object_data_write)SH /Helvetica SF (. This) 286 W( call will only)4 W 7200 30552 MT (be made on memory objects created by the kernel via)97 W /Courier SF 32236 XM (memory_object_create)SH /Helvetica SF 44611 XM (and thus) 97 W( will only be)96 W 7200 31978 MT (made to default memory managers. This call will not be made on objects created via)619 W /Courier SF 7200 33404 MT (memory_object_copy)SH /Helvetica SF (.)SH 12 /Helvetica-Bold AF 7200 35390 MT (Arguments)SH 10 /Courier AF 10904 37262 MT (memory_object)SH /Helvetica SF 19800 XM (The port that represents the memory object data, as supplied by the) 10 W( kernel in)9 W 19800 38405 MT (a)SH /Courier SF 20634 XM (memory_object_create)SH /Helvetica SF 32912 XM (call.)SH /Courier SF 10904 40031 MT (memory_control)SH /Helvetica SF 19800 XM (The request port to which a response is) 203 W( requested. [In the event that a)204 W 19800 41174 MT (memory object) 334 W( has been supplied to more than one)333 W 8 SS 45865 XM (MACH)SH 10 SS 48832 XM (kernel, this)333 W 19800 42317 MT (argument identifies the kernel that has made the request.])SH /Courier SF 10904 43943 MT (offset)SH /Helvetica SF 19800 XM (The offset within a memory object to which this) 38 W( call refers. This will be page)39 W 19800 45086 MT (aligned.)SH /Courier SF 10904 46712 MT (data)SH /Helvetica SF 19800 XM (Data which has been modified while cached in physical memory.)SH /Courier SF 10904 48338 MT (data_count)SH /Helvetica SF 19800 XM (The amount of data) 39 W( to be written, in bytes. This will be an integral number of)38 W 19800 49481 MT (memory object pages.)SH 12 /Helvetica-Bold AF 7200 51499 MT (Returns)SH 10 /Courier AF 10904 53371 MT (KERN_SUCCESS)SH /Helvetica SF 19800 XM (Since this) 187 W( routine is called by the kernel, which does not wait for a reply)188 W 19800 54514 MT (message, this value is ignored.)SH 12 /Helvetica-Bold AF 7200 56532 MT (See Also)SH 10 /Courier AF 8312 57958 MT (memory_object_data_write, memory_object_create)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 93 94 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (93)SH 12 SS 7200 8075 MT (I. Summary of Kernel Calls)SH 10 /Helvetica AF 8312 9947 MT (The following is a summary of calls to the)175 W 8 SS 28449 XM (MACH)SH 10 SS 31257 XM (kernel. The) 626 W( page on which the operation is fully)174 W 7200 11090 MT (described appears within square brackets.)SH /Courier SF 7200 14207 MT ([7])SH 10800 XM (msg_return_t msg_send\050header, option, timeout\051)SH 15600 15238 MT (msg_header_t *header;)1800 W 15600 16269 MT (msg_option_t option;)1800 W 15600 17300 MT (msg_timeout_t timeout;)1200 W 7200 22455 MT ([9])SH 10800 XM (msg_return_t msg_receive\050header, option, timeout\051)SH 15600 23486 MT (msg_header_t *header; /*) 1800 W( in/out */)SH 15600 24517 MT (msg_option_t option;)1800 W 15600 25548 MT (msg_timeout_t timeout;)1200 W 7200 30703 MT ([11])SH 10800 XM (msg_return_t msg_rpc\050header, option, rcv_size,)SH 25200 31734 MT (send_timeout, rcv_timeout\051)SH 15600 32765 MT (msg_header_t *header; /*) 1800 W( in/out */)SH 15600 33796 MT (msg_option_t option;)1800 W 15600 34827 MT (msg_size_t rcv_size;)3000 W 15600 35858 MT (msg_timeout_t send_timeout;)1200 W 15600 36889 MT (msg_timeout_t rcv_timeout;)1200 W 7200 42044 MT ([13])SH 10800 XM (kern_return_t port_names\050task,)SH 25800 43075 MT (portnames, portnamesCnt,)SH 25800 44106 MT (port_types, port_typesCnt\051)SH 15600 45137 MT (task_t task;)SH 15600 46168 MT (port_name_array_t *portnames;) SH( /*) 1200 W( out array */)SH 15600 47199 MT (unsigned int *portnamesCnt;) SH( /*) 2400 W( out */)SH 15600 48230 MT (port_type_array_t *port_types; /* out array */)SH 15600 49261 MT (unsigned int *port_typesCnt;) SH( /*) 1800 W( out */)SH 7200 54416 MT ([14])SH 10800 XM (kern_return_t port_type\050task, port_name, port_type\051)SH 15600 55447 MT (task_t task;)SH 15600 56478 MT (port_name_t port_name;)SH 15600 57509 MT (port_type_t *port_type;) SH( /*) 4800 W( out */)SH 7200 62664 MT ([15])SH 10800 XM (kern_return_t port_rename\050task, old_name, new_name\051)SH 15600 63695 MT (task_t task;)SH 15600 64726 MT (port_name_t old_name;)SH 15600 65757 MT (port_name_t new_name;)SH 7200 70912 MT ([16])SH 10800 XM (kern_return_t port_allocate\050task, port_name\051)SH 15600 71943 MT (task_t task;)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 94 95 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (94)SH /Courier SF 15600 7824 MT (port_name_t *port_name;) SH( /*) 4800 W( out */)SH 7200 12979 MT ([17])SH 10800 XM (kern_return_t port_deallocate\050task, port_name\051)SH 15600 14010 MT (task_t task;)SH 15600 15041 MT (port_name_t port_name;)SH 7200 20196 MT ([18])SH 10800 XM (kern_return_t port_status\050task, port_name, enabled,)SH 26400 21227 MT (num_msgs, backlog, owner, receiver\051)SH 15600 22258 MT (task_t task;)SH 15600 23289 MT (port_name_t port_name;)SH 15600 24320 MT (port_set_name_t *enabled;) SH( /*) 3600 W( out */)SH 15600 25351 MT (int *num_msgs;) SH( /*) 10200 W( out */)SH 15600 26382 MT (int *backlog;) SH( /*) 10800 W( out */)SH 15600 27413 MT (boolean_t *owner;) SH( /*) 8400 W( out */)SH 15600 28444 MT (boolean_t *receiver;) SH( /*) 6600 W( out */)SH 7200 33599 MT ([19])SH 10800 XM (kern_return_t port_set_backlog\050task, port_name, backlog\051)SH 15600 34630 MT (task_t task;)SH 15600 35661 MT (port_name_t port_name;)SH 15600 36692 MT (int backlog;)SH 7200 41847 MT ([20])SH 10800 XM (kern_return_t port_set_backup\050task, primary, backup, previous\051)SH 15600 42878 MT (task_t task;)SH 15600 43909 MT (port_name_t primary;)SH 15600 44940 MT (port_t backup;)SH 15600 45971 MT (port_t *previous;) SH( /*) 3600 W( out */)SH 7200 51126 MT ([21])SH 10800 XM (kern_return_t port_set_allocate\050task, set_name\051)SH 15600 52157 MT (task_t task;)SH 15600 53188 MT (port_set_name_t *set_name;) SH( /*) 3000 W( out */)SH 7200 58343 MT ([22])SH 10800 XM (kern_return_t port_set_deallocate\050task, set_name\051)SH 15600 59374 MT (task_t task;)SH 15600 60405 MT (port_set_name_t set_name;)SH 7200 65560 MT ([23])SH 10800 XM (kern_return_t port_set_add\050task, set_name, port_name\051)SH 15600 66591 MT (task_t task;)SH 15600 67622 MT (port_set_name_t set_name;)SH 15600 68653 MT (port_name_t port_name;)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 95 96 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (95)SH /Courier SF 7200 7824 MT ([24])SH 10800 XM (kern_return_t port_set_remove\050task, port_name\051)SH 15600 8855 MT (task_t task;)SH 15600 9886 MT (port_name_t port_name;)SH 7200 15041 MT ([25])SH 10800 XM (kern_return_t port_set_status\050task, set_name, members, membersCnt\051)SH 15600 16072 MT (task_t task;)SH 15600 17103 MT (port_set_name_t set_name;)SH 15600 18134 MT (port_name_array_t *members;) SH( /*) 2400 W( out array */)SH 15600 19165 MT (unsigned int *membersCnt;) SH( /*) 3600 W( out */)SH 7200 24320 MT ([26])SH 10800 XM (kern_return_t port_insert_send\050task, my_port, his_name\051)SH 15600 25351 MT (task_t task;)SH 15600 26382 MT (port_t my_port;)SH 15600 27413 MT (port_name_t his_name;)SH 7200 32568 MT ([26])SH 10800 XM (kern_return_t port_insert_receive\050task, my_port, his_name\051)SH 15600 33599 MT (task_t task;)SH 15600 34630 MT (port_t my_port;)SH 15600 35661 MT (port_name_t his_name;)SH 7200 40816 MT ([27])SH 10800 XM (kern_return_t port_extract_send\050task, his_name, his_port\051)SH 15600 41847 MT (task_t task;)SH 15600 42878 MT (port_name_t his_name;)SH 15600 43909 MT (port_t *his_port;) SH( /*) 8400 W( out */)SH 7200 49064 MT ([27])SH 10800 XM (kern_return_t port_extract_receive\050task, his_name, his_port\051)SH 15600 50095 MT (task_t task;)SH 15600 51126 MT (port_name_t his_name;)SH 15600 52157 MT (port_t *his_port;) SH( /*) 8400 W( out */)SH 7200 57312 MT ([30])SH 10800 XM (kern_return_t task_create\050parent_task, inherit_memory,)SH 30600 58343 MT (child_task\051)SH 15600 59374 MT (task_t parent_task)5400 W 15600 60405 MT (boolean_t inherit_memory;)3600 W 15600 61436 MT (task_t *child_task;) 5400 W( /*) 1800 W( out */)SH 7200 66591 MT ([31])SH 10800 XM (kern_return_t task_terminate\050target_task\051)SH 15600 67622 MT (task_t target_task;)5400 W 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 96 97 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (96)SH /Courier SF 7200 7824 MT ([32])SH 10800 XM (kern_return_t task_suspend\050target_task\051)SH 15600 8855 MT (task_t target_task;)5400 W 7200 14010 MT ([33])SH 10800 XM (kern_return_t task_resume\050target_task\051)SH 15600 15041 MT (task_t target_task;)5400 W 7200 20196 MT ([34])SH 10800 XM (kern_return_t task_get_special_port\050task, which_port, special_port\051)SH 15600 21227 MT (task_t task;)5400 W 15600 22258 MT (int which_port;)7200 W 15600 23289 MT (port_t *special_port;) 5400 W( /*) 600 W( out */)SH 7200 28444 MT ([34])SH 10800 XM (kern_return_t task_set_special_port\050task, which_port, special_port\051)SH 15600 29475 MT (task_t task;)5400 W 15600 30506 MT (int which_port;)7200 W 15600 31537 MT (port_t special_port;)5400 W 7200 37723 MT ([34])SH 10800 XM (task_t task_self\050\051)SH 7200 42878 MT ([34])SH 10800 XM (port_t task_notify\050\051)SH 7200 49064 MT ([36])SH 10800 XM (kern_return_t task_info\050target_task, flavor, task_info, task_infoCnt\051)SH 15600 50095 MT (task_t target_task;)5400 W 15600 51126 MT (int flavor;)7200 W 15600 52157 MT (task_info_t task_info;) 2400 W( /*) 3000 W( in and out */)SH 15600 53188 MT (unsigned int) SH( *task_infoCnt;) 1800 W( /*) 600 W( in and out */)SH 7200 58343 MT ([38])SH 10800 XM (kern_return_t task_threads\050target_task, thread_list, thread_count\051)SH 15600 59374 MT (task_t target_task;)5400 W 15600 60405 MT (thread_array_t *thread_list;) 600 W( /*) 1200 W( out, ptr to array */)SH 15600 61436 MT (int *thread_count;) 7200 W( /*) 600 W( out */)SH 7200 66591 MT ([39])SH 10800 XM (kern_return_t thread_create\050parent_task, child_thread\051)SH 15600 67622 MT (task_t parent_task;)5400 W 15600 68653 MT (thread_t *child_thread;) 4200 W( /*) 600 W( out */)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 97 98 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (97)SH /Courier SF 7200 7824 MT ([40])SH 10800 XM (kern_return_t thread_terminate\050target_thread\051)SH 15600 8855 MT (thread_t target_thread;)4200 W 7200 14010 MT ([41])SH 10800 XM (kern_return_t thread_suspend\050target_thread\051;)SH 15600 15041 MT (thread_t target_thread;)4200 W 7200 20196 MT ([42])SH 10800 XM (kern_return_t thread_resume\050target_thread\051)SH 15600 21227 MT (thread_t target_thread;)4200 W 7200 26382 MT ([43])SH 10800 XM (kern_return_t thread_abort\050target_thread\051)SH 15600 27413 MT (thread_t target_thread;)4200 W 7200 32568 MT ([45])SH 10800 XM (kern_return_t thread_get_special_port\050thread, which_port, special_port\051)SH 15600 33599 MT (thread_t thread;)4200 W 15600 34630 MT (int which_port;)7200 W 15600 35661 MT (port_t *special_port;)5400 W 7200 40816 MT ([45])SH 10800 XM (kern_return_t thread_set_special_port\050thread, which_port, special_port\051)SH 15600 41847 MT (thread_t thread;)4200 W 15600 42878 MT (int which_port;)7200 W 15600 43909 MT (port_t special_port;)5400 W 7200 49064 MT ([45])SH 10800 XM (thread_t thread_self\050\051)SH 7200 54219 MT ([45])SH 10800 XM (port_t thread_reply\050\051)SH 7200 59374 MT ([47])SH 10800 XM (kern_return_t thread_info\050target_thread, flavor, thread_info,)SH 30000 60405 MT (thread_infoCnt\051)SH 15600 61436 MT (thread_t target_thread;)9000 W 15600 62467 MT (int flavor;)12000 W 15600 63498 MT (thread_info_t thread_info;) 6000 W( /*) 1800 W( in and out */)SH 15600 64529 MT (unsigned int) SH( *thread_infoCnt;) 6600 W( /*) 600 W( in and out */)SH 7200 69684 MT ([49])SH 10800 XM (kern_return_t thread_get_state\050target_thread, flavor, old_state,)SH 30000 70715 MT (old_stateCnt\051)SH 15600 71746 MT (thread_t target_thread;)9000 W 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 98 99 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (98)SH /Courier SF 15600 7824 MT (int flavor;)12000 W 15600 8855 MT (thread_state_data_t old_state;) 2400 W( /*) 3000 W( in and out */)SH 15600 9886 MT (unsigned int) SH( *old_stateCnt;) 6600 W( /*) 600 W( in and out */)SH 7200 15041 MT ([49])SH 10800 XM (kern_return_t thread_set_state\050target_thread, flavor, new_state,)SH 30000 16072 MT (new_stateCnt\051)SH 15600 17103 MT (thread_t target_thread;)9000 W 15600 18134 MT (int flavor;)12000 W 15600 19165 MT (thread_state_data_t new_state;)2400 W 15600 20196 MT (unsigned int) SH( new_stateCnt;)6600 W 7200 25351 MT ([52])SH 10800 XM (kern_return_t vm_allocate\050target_task, address, size, anywhere\051)SH 15600 26382 MT (vm_task_t target_task;)3600 W 15600 27413 MT (vm_address_t *address;) 1800 W( /*) 3600 W( in/out */)SH 15600 28444 MT (vm_size_t size;)3600 W 15600 29475 MT (boolean_t anywhere;)3600 W 7200 34630 MT ([53])SH 10800 XM (kern_return_t vm_deallocate\050target_task, address, size\051)SH 15600 35661 MT (vm_task_t target_task;)3600 W 15600 36692 MT (vm_address_t address;)1800 W 15600 37723 MT (vm_size_t size;)3600 W 7200 42878 MT ([54])SH 10800 XM (kern_return_t vm_read\050target_task, address, size, data, data_count\051)SH 15600 43909 MT (vm_task_t target_task)3600 W 15600 44940 MT (vm_address_t address;)1800 W 15600 45971 MT (vm_size_t size;)3600 W 15600 47002 MT (pointer_t *data;) 3600 W( /*) 5400 W( out */)SH 15600 48033 MT (int *data_count;) 7200 W( /*) 1800 W( out */)SH 7200 53188 MT ([55])SH 10800 XM (kern_return_t vm_write\050target_task, address, data, data_count\051)SH 15600 54219 MT (vm_task_t target_task;)3600 W 15600 55250 MT (vm_address_t address;)1800 W 15600 56281 MT (pointer_t data;)3600 W 15600 57312 MT (int data_count;)7200 W 7200 62467 MT ([56])SH 10800 XM (kern_return_t vm_copy \050target_task, source_address, count, dest_address\051)SH 15600 63498 MT (vm_task_t target_task;)3600 W 15600 64529 MT (vm_address_t source_address;)1800 W 15600 65560 MT (vm_size_t count;)3600 W 15600 66591 MT (vm_address_t dest_address;)1800 W 7200 71746 MT ([57])SH 10800 XM (kern_return_t vm_region\050target_task,) 600 W( address, size, protection,)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 99 100 BS 0 SI 10 /Helvetica-Bold AF 30044 4329 MT (99)SH /Courier SF 25800 7824 MT (max_protection, inheritance, shared,)SH 25800 8855 MT (object_name, offset\051)SH 15600 9886 MT (vm_task_t target_task;)8400 W 15600 10917 MT (vm_address_t *address;) 6600 W( /*) 8400 W( in/out */)SH 15600 11948 MT (vm_size_t *size;) 8400 W( /*) 10200 W( out */)SH 15600 12979 MT (vm_prot_t *protection;) 8400 W( /*) 6600 W( out */)SH 15600 14010 MT (vm_prot_t *max_protection;) 8400 W( /*) 4200 W( out */)SH 15600 15041 MT (vm_inherit_t *inheritance;) 6600 W( /*) 6000 W( out */)SH 15600 16072 MT (boolean_t *shared;) 8400 W( /*) 9000 W( out */)SH 15600 17103 MT (port_t *object_name;) 10200 W( /*) 6000 W( out */)SH 15600 18134 MT (vm_offset_t *offset;) 7200 W( /*) 9000 W( out */)SH 7200 23289 MT ([58])SH 10800 XM (kern_return_t vm_protect\050target_task, address, size, set_maximum,)SH 30000 24320 MT (new_protection\051)SH 15600 25351 MT (vm_task_t target_task;)3600 W 15600 26382 MT (vm_address_t address;)1800 W 15600 27413 MT (vm_size_t size;)3600 W 15600 28444 MT (boolean_t set_maximum;)3600 W 15600 29475 MT (vm_prot_t new_protection;)3600 W 7200 34630 MT ([59])SH 10800 XM (kern_return_t vm_inherit\050target_task, address, size, new_inheritance\051)SH 15600 35661 MT (vm_task_t target_task;)3600 W 15600 36692 MT (vm_address_t address;)1800 W 15600 37723 MT (vm_size_t size;)3600 W 15600 38754 MT (vm_inherit_t new_inheritance;)1800 W 7200 43909 MT ([60])SH 10800 XM (kern_return_t vm_statistics\050target_task,) 1200 W( vm_stats\051)SH 15600 44940 MT (task_t target_task;)10200 W 15600 45971 MT (vm_statistics_data_t *vm_stats;) 1800 W( /*) 3000 W( out */)SH 7200 51126 MT ([61])SH 10800 XM (kern_return_t vm_machine_attribute \050task, address, size, attribute, valu)SH 15600 52157 MT (task_t task;)15600 W 15600 53188 MT (vm_address_t address;)12000 W 15600 54219 MT (vm_size_t size;)13800 W 15600 55250 MT (vm_machine_attribute_t attribute;)6000 W 15600 56281 MT (vm_machine_attribute_val_t *value;)3000 W 7200 61436 MT ([64])SH 10800 XM (kern_return_t mach_ports_register\050target_task,)SH 30000 62467 MT (init_port_set, init_port_array_count\051)SH 15600 63498 MT (task_t target_task;)5400 W 15600 64529 MT (port_array_t init_port_set;) 1800 W( /*) 4800 W( array */)SH 15600 65560 MT (int init_port_array_count;)7200 W 7200 70715 MT ([64])SH 10800 XM (kern_return_t mach_ports_lookup\050target_task,)SH 30000 71746 MT (init_port_set, init_port_array_count\051)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 100 101 BS 0 SI 10 /Helvetica-Bold AF 29766 4329 MT (100)SH /Courier SF 15600 7824 MT (task_t target_task;)5400 W 15600 8855 MT (port_array_t *init_port_set;) 1800 W( /*) 4800 W( out array */)SH 15600 9886 MT (int *init_port_array_count;) 7200 W( /* out */)SH 7200 15041 MT ([66])SH 10800 XM (kern_return_t host_ipc_statistics\050task, statistics\051)SH 15600 16072 MT (task_t target_task;)SH 15600 17103 MT (ipc_statistics_t *statistics;) SH( /*) 1200 W( inout */)SH 7200 22258 MT ([70])SH 10800 XM (kern_return_t vm_map\050target_task, address, size, mask, anywhere,)SH 30000 23289 MT (memory_object, offset, copy,)SH 30000 24320 MT (cur_protection, max_protection,)SH 30000 25351 MT (inheritance\051)SH 15600 26382 MT (task_t target_task;)5400 W 15600 27413 MT (vm_offset_t *address;) 2400 W( /*) 3600 W( in/out */)SH 15600 28444 MT (vm_size_t size;)3600 W 15600 29475 MT (vm_offset_t mask;)2400 W 15600 30506 MT (boolean_t anywhere;)3600 W 15600 31537 MT (memory_object_t memory_object;)SH 15600 32568 MT (vm_offset_t offset;)2400 W 15600 33599 MT (boolean_t copy;)3600 W 15600 34630 MT (vm_prot_t cur_protection;)3600 W 15600 35661 MT (vm_prot_t max_protection;)3600 W 15600 36692 MT (vm_inherit_t inheritance;)1800 W 7200 42878 MT ([72])SH 10800 XM (kern_return_t memory_object_set_attributes\050memory_control,)SH 30000 43909 MT (object_ready, may_cache_object,)SH 30000 44940 MT (copy_strategy\051)SH 15600 45971 MT (memory_object_control_t)SH 25200 47002 MT (memory_control;)SH 15600 48033 MT (boolean_t object_ready;)3600 W 15600 49064 MT (boolean_t may_cache_object;)3600 W 15600 50095 MT (memory_object_copy_strategy_t)SH 25200 51126 MT (copy_strategy;)SH 7200 56281 MT ([73])SH 10800 XM (kern_return_t memory_object_get_attributes\050memory_control,)SH 30000 57312 MT (object_ready, may_cache_object,)SH 30000 58343 MT (copy_strategy\051)SH 15600 59374 MT (memory_object_control_t)SH 25200 60405 MT (memory_control;)SH 15600 61436 MT (boolean_t *object_ready;)3600 W 15600 62467 MT (boolean_t *may_cache_object;)3600 W 15600 63498 MT (memory_object_copy_strategy_t)SH 25200 64529 MT (*copy_strategy;)SH 7200 69684 MT ([74])SH 10800 XM (kern_return_t memory_object_lock_request\050memory_control,)1200 W 30000 70715 MT (offset, size, should_clean)SH 30000 71746 MT (should_flush, lock_value, reply_to\051)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 101 102 BS 0 SI 10 /Helvetica-Bold AF 29766 4329 MT (101)SH /Courier SF 15600 7824 MT (memory_object_control_t)SH 25200 8855 MT (memory_control;)SH 15600 9886 MT (vm_offset_t offset;)2400 W 15600 10917 MT (vm_size_t size;)3600 W 15600 11948 MT (boolean_t should_clean;)3600 W 15600 12979 MT (boolean_t should_flush;)3600 W 15600 14010 MT (vm_prot_t lock_value;)3600 W 15600 15041 MT (port_t reply_to;)5400 W 7200 20196 MT ([76])SH 10800 XM (kern_return_t memory_object_data_provided\050memory_control,)SH 30000 21227 MT (offset, data, data_count, lock_value\051)SH 15600 22258 MT (memory_object_control_t)SH 25200 23289 MT (memory_control;)SH 15600 24320 MT (vm_offset_t offset;)2400 W 15600 25351 MT (pointer_t data;)3600 W 15600 26382 MT (int data_count;)7200 W 15600 27413 MT (vm_prot_t lock_value;)3600 W 7200 33599 MT ([77])SH 10800 XM (kern_return_t memory_object_data_unavailable\050memory_control,)SH 30000 34630 MT (offset, size\051;)SH 15600 35661 MT (memory_object_control_t)SH 25200 36692 MT (memory_control;)SH 15600 37723 MT (vm_offset_t offset;)2400 W 15600 38754 MT (vm_size_t size;)3600 W 7200 43909 MT ([78])SH 10800 XM (kern_return_t memory_object_data_error\050memory_control,)SH 30000 44940 MT (offset, size, reason\051;)SH 15600 45971 MT (memory_object_control_t)SH 25200 47002 MT (memory_control;)SH 15600 48033 MT (vm_offset_t offset;)2400 W 15600 49064 MT (vm_size_t size;)3600 W 15600 50095 MT (kern_return_t reason;)1200 W 7200 55250 MT ([79])SH 10800 XM (kern_return_t memory_object_destroy\050memory_control, reason\051;)SH 15600 56281 MT (memory_object_control_t)SH 25200 57312 MT (memory_control;)SH 15600 58343 MT (kern_return_t reason;)1200 W 7200 63498 MT ([80])SH 10800 XM (routine vm_set_default_memory_manager\050host,default_manager\051)SH 15600 64529 MT (task_t host;)5400 W 15600 65560 MT (memory_object_t default_manager;) SH( /*) 4200 W( in/out */)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 102 103 BS 0 SI 10 /Helvetica-Bold AF 29766 4329 MT (102)SH 12 SS 7200 8075 MT (II. Summary of External Memory Management Calls)SH 10 /Helvetica AF 8312 9947 MT (The following is a summary of calls that the)68 W 8 SS 28320 XM (MACH)SH 10 SS 31022 XM (kernel makes on an external memory management)69 W 7200 11090 MT (server. The) 278 W( page on which the operation is fully described appears within square brackets.)SH /Courier SF 7200 14207 MT ([82])SH 10800 XM (boolean_t memory_object_server\050in_msg, out_msg\051)SH 15600 15238 MT (msg_header_t *in_msg;)1800 W 15600 16269 MT (msg_header_t *out_msg;)1800 W 7200 21424 MT ([83])SH 10800 XM (kern_return_t memory_object_init\050memory_object, memory_control,)SH 27600 22455 MT (memory_object_name, memory_object_page_size\051)SH 15600 23486 MT (memory_object_t memory_object;)SH 15600 24517 MT (memory_object_control_t)SH 25200 25548 MT (memory_control;)SH 15600 26579 MT (memory_object_name_t)SH 25200 27610 MT (memory_object_name;)SH 15600 28641 MT (vm_size_t memory_object_page_size;)3600 W 7200 33796 MT ([84])SH 10800 XM (kern_return_t memory_object_data_request\050memory_object,memory_control,)SH 28200 34827 MT (offset, length, desired_access\051)SH 15600 35858 MT (memory_object_t memory_object;)SH 15600 36889 MT (memory_object_control_t)SH 25200 37920 MT (memory_control;)SH 15600 38951 MT (vm_offset_t offset;)2400 W 15600 39982 MT (vm_size_t length;)3600 W 15600 41013 MT (vm_prot_t desired_access;)3600 W 7200 46168 MT ([85])SH 10800 XM (kern_return_t memory_object_data_write\050memory_object,) 1200 W( memory_control,)SH 30000 47199 MT (offset, data, data_count\051)SH 15600 48230 MT (memory_object_t memory_object;)SH 15600 49261 MT (memory_object_control_t)SH 25200 50292 MT (memory_control;)SH 15600 51323 MT (vm_offset_t offset;)2400 W 15600 52354 MT (pointer_t data;)3600 W 15600 53385 MT (unsigned int) SH( data_count;)1800 W 7200 58540 MT ([86])SH 10800 XM (kern_return_t memory_object_data_unlock\050memory_object, memory_control,)SH 27600 59571 MT (offset, length, desired_access\051)SH 15600 60602 MT (memory_object_t memory_object;)SH 15600 61633 MT (memory_object_control_t)SH 25200 62664 MT (memory_control;)SH 15600 63695 MT (vm_offset_t offset;)2400 W 15600 64726 MT (vm_size_t length;)3600 W 15600 65757 MT (vm_prot_t desired_access;)3600 W 7200 70912 MT ([87])SH 10800 XM (kern_return_t memory_object_copy\050old_memory_object, old_memory_control,)SH 30000 71943 MT (offset, length, new_memory_object\051)SH 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: 103 104 BS 0 SI 10 /Helvetica-Bold AF 29766 4329 MT (103)SH /Courier SF 13800 7824 MT (memory_object_t old_memory_object;)6600 W 13800 8855 MT (memory_object_control_t old_memory_control;)1800 W 13800 9886 MT (vm_offset_t offset;)9000 W 13800 10917 MT (vm_size_t length;)10200 W 13800 11948 MT (memory_object_t new_memory_object;)6600 W 7200 18134 MT ([89])SH 10800 XM (kern_return_t memory_object_terminate\050memory_object, memory_control,)SH 28200 19165 MT (memory_object_name\051)SH 15600 20196 MT (memory_object_t memory_object;)SH 24000 21227 MT (memory_object_control_t)SH 25200 22258 MT (memory_control;)SH 24600 23289 MT (memory_object_name_t)SH 25200 24320 MT (memory_object_name;)SH 7200 29475 MT ([90])SH 10800 XM (kern_return_t memory_object_create\050old_memory_object,new_memory_object,)SH 27600 30506 MT (new_object_size, new_control,)600 W 27600 31537 MT (new_name, new_page_size\051)SH 15600 32568 MT (memory_object_t old_memory_object;)SH 25200 33599 MT (memory_object_t)SH 25200 34630 MT (new_memory_object;)SH 15600 35661 MT (vm_size_t new_object_size;)3600 W 15600 36692 MT (memory_object_control_t)SH 25200 37723 MT (new_control;)SH 15600 38754 MT (memory_object_name_t)SH 25200 39785 MT (new_name;)SH 15600 40816 MT (vm_size_t new_page_size;)3600 W 7200 45971 MT ([92])SH 10800 XM (kern_return_t memory_object_data_initialize\050memory_object,memory_control)SH 30000 47002 MT (offset, data, data_count\051)SH 15600 48033 MT (memory_object_t memory_object;)SH 15600 49064 MT (memory_object_control_t)SH 25200 50095 MT (memory_control;)SH 15600 51126 MT (vm_offset_t offset;)2400 W 15600 52157 MT (pointer_t data;)3600 W 15600 53188 MT (unsigned int) SH( data_count;)1800 W 8 /Helvetica-Bold AF 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Page: i 105 BS 0 SI 10 /Helvetica-Bold AF 30461 4329 MT (i)SH 12 SS 25533 8075 MT (Table of Contents)SH 11 SS 9036 9319 MT (1. Introduction)SH 53388 XM (1)SH 10 SS 11092 10468 MT (1.1. Overall system organization)SH 53444 XM (1)SH 11092 11617 MT (1.2. Basic kernel functionality)SH 53444 XM (1)SH 11092 12766 MT (1.3. User operating system environments)SH 53444 XM (2)SH 11 SS 9036 14010 MT (2. Message primitives)SH 53388 XM (3)SH 10 SS 11092 15159 MT (2.1. Basic terms)SH 53444 XM (3)SH 11092 16308 MT (2.2. Ports)SH 53444 XM (3)SH 11092 17457 MT (2.3. Port sets)SH 53444 XM (4)SH 11092 18606 MT (2.4. Port names)SH 53444 XM (4)SH 11092 19755 MT (2.5. Port types)SH 53444 XM (4)SH 11092 20904 MT (2.6. Messages)SH 53444 XM (5)SH 11 SS 9036 22148 MT (3. Port and port set primitives)SH 52776 XM (12)SH 9036 23392 MT (4. Task and thread primitives)SH 52776 XM (28)SH 10 SS 11092 24541 MT (4.1. Basic terms)SH 52888 XM (28)SH 11092 25690 MT (4.2. Access to Tasks: Terminology)SH 52888 XM (29)SH 11 SS 9036 26934 MT (5. Virtual memory primitives)SH 52776 XM (51)SH 10 SS 11092 28083 MT (5.1. Basic terms)SH 52888 XM (51)SH 11 SS 9036 29327 MT (6. Ancillary primitives)SH 52776 XM (63)SH 9036 30571 MT (7. External memory management primitives)SH 52776 XM (67)SH 10 SS 11092 31720 MT (7.1. Memory Managers)SH 52888 XM (67)SH 13316 32869 MT (7.1.1. Memory objects: definitions and basics)SH 52888 XM (67)SH 13316 34018 MT (7.1.2. Initialization and termination)SH 52888 XM (68)SH 13316 35167 MT (7.1.3. Kernel-created memory objects)SH 52888 XM (68)SH 11092 36316 MT (7.2. Kernel calls supporting memory managers)SH 52888 XM (69)SH 11092 37465 MT (7.3. Memory Manager calls)SH 52888 XM (81)SH 11 SS 9036 38709 MT (I. Summary of Kernel Calls)SH 52776 XM (93)SH 9036 39953 MT (II. Summary of External Memory Management Calls)SH 52164 XM (102)SH 8 SS 7200 75600 MT (MACH)SH 10 SS 26932 XM (23 August 1990)SH 8 SS 51600 XM (MACH)SH ES %%Trailer %%Pages: 105 %%DocumentFonts: Helvetica Helvetica-Bold Symbol Courier Helvetica-Oblique