Home

LW P User Manual - scs technical report collection

image

Contents

1. y 4 define READ O define WRITE 1 Struct Vnode get vnode name how char name int now struct Vnode v v lookup name if how READ ObtainReadLock amp v lock else ObtainWriteLock amp v lock 21 Editorial Note These definitions are found in the C header file itc itc nfs include lock h Those header files are the authoritative source of these definitions and will be more up to date than this manual 2 3 Constants Macros and Data Structures Jtt SEE ee ee eee Se eS See SSS SS SSeS SSS SSeS SL SSCS SSAA MSS OTS S HY z Information Technology Center g Carnegie Mellon University d c Copyright IBM Corporation 1985 MOUSE SRERSETSESEEEENTECCUCSEESET ETE VET EAE SEL SAO REESE TASES See eee hee y include file for using Vice locking routines struct Lock int readers waiting readers waiting int readers reading readers actually with read locks int writers waiting writers waiting unsigned char write locked 0 if a writer has it locked define READ LOCK 1 defineWRITE LOCK 2 define ObtainReadLock iock if lock gt write locked amp amp lock gt writers waiting lock gt readers reading else Lock Obtain iock READ LOCK define ObtainWriteLock iock if lock gt write locked amp amp l lock zreaders reading lock gt write locked else Lock Obtain iock WRITE LOCK defin
2. LWP_NoYieldSignal LWP CurrentProcess LWP_ActiveProcess 1 1 Key Design Choices The package should be small and fast All processes are assumed to be trustworthy processes are not protected from each other s actions There is no time slicing or preemption the processor must be yielded explicitly 1 2 A Simple Example include itc itc nfs include Iwp h Static read process id int id LWP _DispatchProcess Just relinquish contro for now for 33 Wait until there is something in the queue while empty q LWP WaitProcess q Process queue entry LWP DispatchProcess static write process i Loop amp write data to queue for mesg messages mesg 0 mesg insert q mesg LWP SignalProcess q main argc argv int argc char argv PROCESS id LWP InitializeProcessSupport 0 amp id Now create readers for i 0 i nreaders i LWP CreateProcess read process STACK SIZE O0 i Reader amp readers i LW P CreateProcess write process STACK SIZE 1 0 Writer amp writer Wait for processes to terminate LWP WaitProcess amp done for i nreaders 1 i20 i LWP DestroyProcess readers i Editorial Note These definitions are found in the C header file itc itc nfs include Iwp h Those header files are the authoritative source of these definitions and will be more up to date t
3. ObtainWriteLock Obtain a write lock Call ObtainWriteLock in out struct Lock lock Parameters lock The lock to be write locked Completion Codes None A write lock will be obtained on the specified lock Note that this is a macro and not a routine Thus results are not guaranteed if the lock argument is a side effect producing expression 26 ReleaseReadLock Release a read lock Call ReleaseReadLock in out struct Lock lock Parameters lock The lock to be released Completion Codes None The specified lock will be released This macro requires that the lock must have been previously read locked Note that this is a macro and not a routine Thus results are not guaranteed if the lock argument is a side effect producing expression 27 ReleaseW riteLock Release a write lock Call ReleaseWriteLock in out struct Lock lock Parameters lock The lock to be released Completion Codes None The specified lock will be released This macro requires that the lock must have been Previously write locked Note that this is a macro and not a routine Thus results are not guaranteed if the lock argument is a side effect producing expression 28 CheckLock Check status of a lock Call int CheckLock in struct Lock lock Parameters lock The lock to be checked Completion Codes None This macro yields an integer that specifies the status of the indicated lock The value w
4. itc nfs include lock h in your C source programs During link editing the library itc itc nfs lib Iwp o must be included 1 3 IOMGR During link editing the library itc itc nfs lib iomgr o must be included 11 4 Timer In order to use the Timer package it is necessary to include the file itc itc nfs include timer h in your C source programs During link editing the library itc itc nfs lib timer o must be included
5. SystemError IOMGR Select exit 1 case 1 packetonrpc2 RequestSocket process packet break defautt should never occur 30 3 3 IOMGR Calls IOMGR_Initlalize Initialize the IOMGR package Call int lOMGR_initialize Parameters None Completion Codes LWP SUCCESS Al went wei LWP ENOMEM Not enough free space to create the IOMGR process LWP EINIT LWP InitializeProcessSupport has not been called 1 Something went wrong with the TIMER package This call will initialize the IOMGR package Its main task is to create the IOMGR process which runs at priority O the lowest priority The remainder of the processes must be running at priority 1 or greater for the IOMGR package to function correctly 31 IOMGR_ Finalize Finalize the IOMGR package Call int IOMGR Finalize Parameters None Completion Codes LWP SUCCESS Package finalized Okay LWP EINIT LWP InitializeProcessSupport has not been called This call cleans up when the IOMGR package is no longer needed It releases all storage and destroys the IOMGR process 32 IOMGR Select Perform an LWP select operation Call int IOMGR Select in int fds in out int readfds in out writefds in out exceptfds in struct timeval timeout Parameters fds Maximum number of bits to consider in masks readfds Mask of file descriptors that process wants notification of when ready to be read writefds Mask of file desc
6. CMU ITC 85 037 LW P User Manual 24 June 85 13 12 Jonathan Rosenberg Larry Raper Information Technology Center Carnegie Mellon University Schenley Park Pittsburgh PA 15213 Table of Contents Preface 1 The LWP Package 1 1 Key Design Choices 1 2 A Simple Example 1 3 Constants and Data Structures 1 4 LWP Runtime Calls 2 The Lock Package 2 1 Key Design Choices 2 2 A Simple Example 2 3 Constants Macros and Data Structures 2 4 Lock Calls 3 The IOMGR Package 3 1 Key Design Choices 3 2 A Simple Example 3 3 IOMGR Calls 4 The Timer Package 5 A Simple Example 5 1 Timer Calls Appendix Summary of LWP Related Calls Appendix II Usage Notes for the ITC SUN Systems Il 1 LWP 1 2 Lock li 3 IOMGR ll 4 Timer cou Ww 19 20 21 23 29 29 29 30 33 35 36 43 45 45 45 45 45 Preface This document describes several packages of programs that have been designed for use by the VICE group The packages are all based on the LWP package which is a suite of lightweight process functions usable from a C program The LWP package is described first followed by sections for each of the additional utilities 1 The LWP Package The LWP package implements primitive functions providing basic facilities that enable procedures written in C to proceed in an unsynchronized fashion These separate threads of control may effectively progress in parallel and more or less independently of each other This facil
7. IOMGR Select in int fds in out int readfds in out writefds in out exceptfds in struct timeval timeout TM init out struct TM Elem list TM Final in out struct TM Elem list TM_Insert in struct TM Elem list in out struct TM Elem elem TM Rescan in out struct TM Elem list TM GetExpired in struct TM Elem list TM GetEarliest in struct TM Elem list TM eqi in struct timeval t1 in struct timeval t2 45 Appendix ll Usage Notes for the ITC SUN Systems Il 1 LWP In order to use the LWP package it is necessary to include the file itc itc nfs include Iw p h in your C source programs This file contains the definitions of a process id PROCESS the error return codes and several auxiliary definitions The simplest way to link in the LWP objects is by including the library itc itc nfs lib Iwp o during link editing It is also possible to configure your system in such a way that the LWP package will check for stack overflows during the execution of each process In order to do this all routines that you desire stack checking for must be compiled with the p option to cc Note that this means that profiling can not be performed when stack checking is in effect In addition your system must be linked by using Id directly as follows ld X itc itc nfs lib start o your objects itc itc nfs lib Iwp o 11 2 Lock In order to use the lock package it is necessary to include the file itc
8. S misc for LWP internal use only char stack ptrto process stack int stacksize size of stack int ep initial entry point char parm initial parm for process Structiwp context context saved context for next dispatch PROCESS nex prev ptrs to next and previous pcb ifndef LWP KERNEL 4 define LWP ActiveProcess Iwp cpptr 0 define LWP SignalProcess event LWP INTERNALSIGNAL event 1 define LWP NoYieldSignal event LWP INTERNALSIGNAL event 0 extern endif PROCESS lwp cpptr pointer to current process pcb struct Iwp ctl LWP control structure int processcnt number of lightweight processes char outersp outermost stack pointer PROCESS outerpid process carved by Initialize PROCESS first last ptrsto first and last pcbs char dsptchstack 800 stack for dispatcher use only Y ifndef LWP KERNEL extern endif charlwp debug ON show LWP debugging trace 1 4 LWP Runtime Calls LW P lInitializeProcessSupport Initialize LWP support amp start initial process Call int LWP InitializeProcessSupport in int priority out PROCESS pid Parameters priority Priority at which initial process is to run pid The process id of the initial process will be returned in this parameter Completion Codes LWP SUCCESS Al went wel LWP EINIT This routine has already been called LWP EBADPRI illegal p
9. be initialized and inserted Completion Codes None The element elem is initialized so that the TimeL eft field is equal to the Tota Time field The TimeLeft field may be kept current by use of TM_Rescan The element is then inserted into the list 39 TM Rescan Update TimeLeft fields of entries on a timer list and look for expired elements Call int TM Rescan in out struct TM Elem list Parameters list The list to be updated Completion Codes None This routine will update the TimeLeft fields of all timers on list This is done by checking the time of day clock in Unix This routine returns a count of the number of expired timers on the list This is the only routine besides TM Init that updates the TimeLeft field 40 TM GetExpired Return an expired timer from a list Call Struct TM Elem TM GetExpired in struct TM Elem list Parameters list The list to be searched Completion Codes None The specified list will be searched and a pointer to an expired timer will be returned O is returned if there are no expired timers An expired timer is one whose TimeLeft field is less than or equal to 0 41 TM GetEarliest Return the earliest timer on a list Call struct TM Elem TM GetEarliest in struct TM Elem list Parameters list The list to be searched Completion Codes None This routine returns a pointer to the timer that will be next to expire that with a smallest Ti
10. ction to place read and write locks on data structures shared by several light weight processes Like the LWP package the lock package was written with simplicity in mind there is no protection inherent in the model In order to use the locking mechanism for an object an object of type struct Lock must be associated with the object After being initialized with a call to Locklinit the lock is used in invocations of the macros ObtainReadLock ObtainWriteLock ReleaseReadLock and ReleaseW riteLock The semantics of a lock is such that any number of readers may hold a lock But only a single writer and no readers may hold the clock at any time The lock package guarantees fairness each reader and writer will eventually have a chance to obtain a given lock However this fairness is only guaranteed if the priorities of the competing processes are identical Note that no ordering is guaranteed by the package In addition it is illegal for a process to request a particular lock more than once without first releasing it Failure to obey this restriction may cause deadlock 2 1 Key Design Choices The package must be simple and fast in the case that a lock can be obtained immediately it should require a minimum of instructions All the processes using a lock are trustworthy The lock routines ignore priorities 20 2 2 A Simple Example include lock h struct Vnode Struct Lock lock Used to lock this vnode
11. e ReleaseReadLock IoCk iock readers reading amp amp lock 2writers waiting LWP SignalProcess amp lock 2writers waiting 0 define ReleaseWriteLock lock lock 2write locked A lock zreaders waiting LWP SignalProcess amp lock readers waiting 0 Iock readers reading amp amp lock 2writers waiting X LWP SignalProcess amp lock writers waiting 0 define CheckLock iock 22 int lock 2write locked lock readers reading changed above from Ilock 2write locked lock 2readers reading because write locked wasn t being sign extended The following code was generated movi a6 C a5 movb a5 20 d0 negb dO andl Oxff dO add a5 18 d0 moveq 0x0 d1 cmpl OxO dO scs di negb dt movi d1 a6 FFFFFFFC Bob d 2 4 Lock Calls Lockinit Initialize a lock Call Lockinit out struct Lock lock Parameters lock The address of the lock to be initialized Completion Codes None This routine must be called to initialize a lock before it is used 23 24 ObtainReadLock Obtain a read lock Call ObtainReadLock in out struct Lock lock Parameters lock The lock to be read locked Completion Codes None A read lock will be obtained on the specified lock Note that this is a macro and not a routine Thus results are not guaranteed if the lock argument is a side effect producing expression 25
12. eviist LWP EINIT LWP InitializeProcessSupport has not been called This routine allows a process to wait for wcount signals of any of the signals in evlist Any number of signals of a particular event is only counted once The scheduler will be invoked 14 LWP SignalProcess Signal an event Call int LWP_SignalProcess in char event Parameters event The event to be signaled An event is any memory address except 0 Completion Codes LWP SUCCESS Thesignal was a success a process was waiting for it LWP EBADEVENT The specified event was illegal 0 LWP EINIT LWP InitializeProcessSupport was not called LWP ENOWAIT No process was waiting for this signal This routine causes event to be signaled This will mark all processes waiting for only this event as runnable The scheduler will be invoked Signals are not queued if no process is waiting for this event the signal will be lost and L WP ENOWAIT will be returned 15 LW P_No YieldSignal Signal an event but don t yield Call int L WP NoYieldSignal in char event Parameters event The event to be signaled An event is any memory address except 0 Completion Codes LWP SUCCESS Tne signal was a success a process was waiting for it LWP EBADEVENT The specified event was illegal 0 LWP EINIT LWP InitializeProcessSupport was not called LWP ENOWAIT No process was waiting for this signal This routine causes event to be signaled This will mark all proces
13. han this manual 1 3 Constants and Data Structures POS EEL LES LS ALOR LSE SAAR SASS OSEREREESLA EE EU Push e ACER MAREA EK d i Information Technology Center g A Camegie Mellon University c Copyright IBM Corporation 1985 ATEERTCTSENXCUTTT YET T9 TELA E SETH 0442049000 04 9400 NOSES EES ER A O4 470 4044 define LWP define LWP define LWP define LWP define LWP define LWP define LWP define LWP define LWP SUCCESS 0 EBADPID 1 EBLOCKED 2 EINIT 3 EMAXPROC 4 ENOBLOCK 5 ENOMEM 6 ENOPROCESS 7 ENOWAIT 8 define LWP define LWP define LWP define LWP EBADCOUNT 9 EBADEVENT 10 EBADPRI 11 NO STACK 12 Maximum priority permissible minimum is always 0 define LWP MAX PRIORITY 1 Maximum events that process may wait on at any time 4 define LWP MAX EVENTS 20 typedef struct wp pcb PROCESS structiwp context saved context for dispatcher char topstack ptrtotop of process stack structiwp pcb process control block char name 32 ASCII name int rc most recent return code char status status flags char eventlist L WP MAX EVENTS ptrtoarrayof eventids int eventcnt no of events in eventlist array int wakevent index of eventid causing wakeup int waitcnt min number of events awaited char blockflag if Dlockflag process blocked int priorit y dispatching priority PROCES
14. ill be 1 if the lock is write locked 0 if unlocked or a positive integer that indicates the numer of readers with read locks Note that this is a macro and not a routine Thus results are not guaranteed if the lock argument is a side effect producing expression 29 3 The IOMGR Package The IOMGR package contains 3 routines that aid in performing Unix selects within the LWP paradigm After initializing the package light weight processes may make calls to IOMGR Select which has parameters identical to the Unix select IOMGR Select however puts the calling process to sleep until such time as no user processes are active At this time the IOMGR process which runs at the lowest priority wakes up and coalesces all of the select requests together It then performs a single select and wakes up all processes affected by the result 3 1 Key Design Choices The meanings of the parameters both before and after the call should be identical to those of the Unix select A blocking select should only be done if no other processes are runnable 3 2 A Simple Example void rpc2 SocketListener Int ReadfdMask WritefdMask ExceptfdMask rc Struct timeval tvp while TRUE ExceptfdMask ReadfdMask 1 rpc2 RequestSocket WritefdMask 0 rc IOMGR Select 8 sizeof int amp ReadfdMask amp WritefdMask amp ExceptfdMask tvp switch rc case0 timeout continue main while loop case 4 error
15. ity is meant to be general purpose with a heavy emphasis on simplicity Interprocess communication facilities can be built on top of this basic mechanism and in fact many different IPC mechanisms could be implemented The functions described here currently are available on the SUN Microsystems Workstation under Unix 4 2 1 In order to set up the environment needed by the lightweight process support a one time invocation of the LWP_InitializeProcessSupport function must precede the use of the facilities described here The initialization function carves an initial process out of the currently executing C procedure The process id of this initial process is returned as the result of the LW P InitializeProcessSupport function For symmetry a LWP TerminateProcessSupport function may be used explicitly to release any storage allocated by its initial counterpart If used it must be issued from the process created bytheLWP InitializeProcessSupport function Upon completion of any of the lightweight process functions an integer value is returned to indicate whether any error conditions were encountered A global variable Iwp debug can be set to activate or deactivate debugging messages tracing the flow of contro within the LWP routines To activate debugging messages set Iwp_ debug to a non zero value To deactivate reset it to zero All debugging output from the LWP routines is sent to stdout Macros typedefs and manifest constants for e
16. meLeft field If there are no timers on the list O is returned 42 TM eql See if 2 timevals are equal Call unsigned char TM eql in struct timeval t1 in struct timeval t2 Parameters t1 a timeval t2 Another timeval Completion Codes None This routine returns 0 if and only if tf and t2 are not equal 43 Appendix Summary of LWP Related Calls Note The numbers in square brackets indicate the page on which the call is described 8 9 10 11 12 13 14 15 16 17 18 23 24 25 26 27 28 30 LWP InitializeProcessSupport in int priority out PROCESS pid LWP TerminateProcessSupport LWP_CreateProcess in int ep in int stacksize in int priority in char parm in char name out PROCESS pid LWP DestroyProcess in PROCESS pid LWP WaitProcess in char event LWP MnuwaitProcess in int wcount in char evlist LWP SignalProcess in char event LWP NoYieldSignal in char event LWP DispatchProcess LWP CurrentProcess out PROCESS pid LWP ActiveProcess Lockinit out struct Lock lock ObtainReadLock in out struct Lock lock ObtainWriteLock in out struct Lock lock ReleaseReadLock in out struct Lock lock ReleaseWriteLock in out struct Lock lock CheckLock in struct Lock lock 44 31 32 36 37 38 39 40 41 42 IOMGR Initialize IOMGR Finalize
17. mer is used commonly by inserting a field of type struct TM Elem into a structure After inserting the desired timeout value the structure is inserted into a list by means of its timer field 34 5 Simple Example Static Struct TM Elem requests TM init amp requests Initialize timer list for TM Rescan requests Update the timers expired TM GetExpired requests if expired 0 break Process expired element 36 5 1 Timer Calis TM Init Initialize a timer list Call int TM Init out struct TM Elem list Parameters list The list to be initialized Completion Codes 0 Ok 1 not enough free storage The specified list will be initialized so that it is an empty timer list This routine must be called before any other operations are applied to the list 37 TM Final Finalize a timer list Call int TM Final in out struct TM Elem list Parameters list The list to be finalized Completion Codes 0 OK 1 list was O or list was never initialized Call this routine when you are finished with a timer list and the list is empty This routine releases any auxiliary storage associated with the list 38 TM Insert Initialize a timer element and insert it into a timer list Call void TM iInsert in struct TM Elem list in out struct TM Elem elem Parameters list The list into which the element is to be inserted elem The element to
18. riority specified D or too large Initializes the LWP package In addition this routine turns the current thread of control into the initial process with the specified priority The process id of this initial process will be returned in parameter pid This routine must be called to ensure proper initialization of the LWP routines This routine will not cause the scheduler to be invoked LWP TerminateProcessSupport Terminate process support and clean up Call int LWP_TerminateProcessSupport Parameters None Completion Codes None This routine will terminate the LWP process support and clean up by freeing any auxiliary storage used This routine must be called from within the procedure and process that invoked LWP_ initializeProcessSupport After LWP TerminateProcessSupport has been called LWP_ InitializeProcessSupport may be called again to resume LWP process support 10 LWP CreateProcess Create and start a light weight process Call int LWP CreateProcess In int ep in int stacksize in int priority Parameters ep stacksize priority parm name pid Completion Codes LWP SUCCESS LWP ENOMEM LWP EBADPRI LWP_EINIT in char parm in char name out PROCESS pid This is the address of the code that is to execute the function of this process This parameter should be the address of a C routine with a single parameter This is the size in bytes to make the stack for the newl
19. riptors that process wants notification of when ready to be written exceptfds Mask of file descriptors that process wants notification of when exceptional condition occurs timeout Timeout for use on this select Completion Codes None This function performs an LWP version of Unix select The parameters have the same meanings as the Unix call However the return value will only be 1 an error occured 0 a timeout occured or 1 some number of file descriptors are ready If this is a polling select it is done and IOMGR Select returns to the user with the results Otherwise the calling process is put to sleep If at some point the lIOMGR process is the only runnable process it will awaken and collect all select requests It will then perform a single select and awaken those processes the appropriate processes this will cause return from the affected IOMGR selects 33 4 The Timer Package The timer package contains a number of routines that assist in manipulating lists of objects of type struct TM Elem TM Elems timers are assigned a timeout value by the user and inserted in a package maintained list The time remaining to timeout for each timer is kept up to date by the package under user control There are routines to remove a timer from its list to return an expired timer from a list and to return the next timer to expire This specialized package is currently used by the IOMGR package and by the implementation of RPC2 A ti
20. rror codes needed by the lightweight process mechanism reside in the file itc itc nfs include Iwp h A process is identified by an object of type PROCESS which is defined in the include file The process model supported by the operations described here is based on a non preemptive priority dispatching scheme A priority is an integer in the range D LWP MAX PRIORITY where 0 is the lowest priority Once a given lightweight process is selected and dispatched it remains in control until it voluntarily relinquishes its claim on the CPU Relinquishment may be either explicit LWP DispatchProcess or implicit through the use of certain other LWP operations In general The LWP package was originally developed by Larry Raper for use in implementing the SNA network protocol on the Sun all LWP operations that may cause a higher priority process to become ready for dispatching preempt the process requesting the service When this occurs the priority dispatching mechanism takes over and dispatches the highest priority process automatically Services in this category where the scheduler is guaranteed to be invoked in the absence of errors are LWP CreateProcess LWP WaitProcess LWP MwaitProcess LWP SignalProcess LWP_DispatchProcess LWP_DestroyProcess The following services are guaranteed not to cause Preemption and so may be issued with no fear of losing control to another lightweight process LWP_InitializeProcessSupport
21. s is allowed to destroy itself of course it will only get to see the return code if the destroy fails Note a process may also destroy itself by executing a return from the C routine This routine calls the scheduler 12 LWP WaitProcess Wait for event Call int L WP WaitProcess in char event Parameters event The event to wait for This can be any memory address But 0 is an illegal event Completion Codes LWP SUCCESS The event has occured LWP EINIT LWP InitializeProcessSupport has not been called LWP EBADEVENT The specified event was illegal 0 This routine will put the calling process to sleep until another process does a call of LWP SignalProcess or LWP NoYieldSignal with the specified event Note that signals of events are not queued if a signal occurs and no process is woken up the signal is lost This routine invokes the scheduler 13 LWP MwaitProcess Wait for a specified number of a group of signals Call int L WP MwaitProcess in int wcount in char evlist Parameters wcount Is the number of events that must be signaled to wake up this process evlist This a null terminated list of events remember that 0 is not a legal event There may be at most L WP MAX EVENTS events Completion Codes LWP SUCCESS Thespecified number of appropriate signals has occurred LWP EBADCOUNT There are too few events 0 or too many events more than LWP MAX EVENTS or wcount the number of events in
22. ses waiting for only this event as runnable This call is identical to LWP SignalProcess except that the scheduler will not be invoked control will remain with the signalling process Signals are not queued if no process is waiting for this event the signal will be lost and LWP_ENOWAIT will be returned 16 LWP DispatchProcess Yield to the scheduler Call int LWP DispatchProcess Parameters None Completion Codes LWP SUCCESS Ai went well LWP EINIT LWP InitializeProcessSupport has not been called This routine is a voluntary yield to the LWP scheduler 17 LWP CurrentProcess Get the current process id Call int LWP_CurrentProcess out PROCESS pid Parameters pid The current process id will be returned in this parameter Completion Codes LWP SUCCESS Thecurrent process id has been returned LWP EINIT LWP InitializeProcessSupport has not been called This routine will place the current process id in the parameter pid 18 LWP ActiveProcess Yield current process id Call PROCESS LWP ActiveProcess Parameters None Completion Codes None This is a macro that yields the current process id If LWP InitializeProcessSupport has not been called the invocation yields 0 It exists because people may find it more convenient than LWP CurrentProcess 19 2 The Lock Package The lock package contains a number of routines and macros that allow C programs that utilize the LWP abstra
23. y created process The stack cannot be shrunk or expanded it is fixed for the life of the process This is the priority to assign to the new process This is the single argument that will be passed to the new process Note that this argument is a pointer and in general will be used to pass the address of a Structure containing further parameters This is an ASCII string that will be used for debugging purposes to identify the process The name may be a maximum of 32 characters The process id of the new process will be returned in this parameter Process created successfully Not enough free space to create process Illegal priority specified D or too large LWP InitializeProcessSupport has not been called This routine is used to create and mark as runnable a new light weight process This routine will cause the scheduler to be called Note that the new process will begin execution before this call returns only if the priority of the new process is greater than the creating process 11 LWP DestroyProcess Destroy a light weight process Call intLWP_DestroyProcess in PROCESS pid Parameters pid The process id of the process to be destroyed Completion Codes LWP SUCCESS Process destroyed successtully LWP EINIT LWP InitializeProcessSupport has not been called This routine will destroy the specified process The specified process will be terminated immediately and its internal storage will be freed A proces

Download Pdf Manuals

image

Related Search

Related Contents

repair parts manual model no. bm6tgr31b lawn mower manuel des  Assemblée Générale 2012 - Afca-Cial  ConnectX-3 10GbE User Manual for OCP  15DL75-20DL75 LCD TV/DVD Combination User`s Manual  Basic Owner`s Manual - Support  577_597_fr  Harbor Freight Tools 93785 User's Manual    led moving head lm-3109  AEROTERMO. MANUAL DE USUARIO  

Copyright © All rights reserved.
Failed to retrieve file