Smernice oddelenia QNX

com.microstepmis.schd
Class ProcessManager

java.lang.Object
  extended by com.microstepmis.schd.ProcessManager

public class ProcessManager
extends java.lang.Object

Obdoba Proc32.

(c) 2005 MicroStep-MIS www.microstep-mis.com

Version:
$Id: Header.java,v 1.2 2005/02/14 08:59:05 matog Exp $
Author:
$Author: matog $

Field Summary
static int INIT_MAX
          Maximalna uroven nabehu.
static int INIT_MIN
          Minimalna uroven nabehu.
static java.lang.String PROCESS_MANAGER_LOG_NAME
          Meno logovaca process managera.
static int SCH_DIED
          Stav procesu - mrtvy.
static int SCH_FIN
          Stav procesu - defaultny stav, uloha nebezi, pripravena na spustenie.
static int SCH_KILLED
          Stav procesu - zabity.
static int SCH_MAX
          Pocet stavov procesu (vratane zatial nevyuzivanych).
static int SCH_RUN
          Stav procesu - beziaci.
static int SCH_RUNFIN
          Stav procesu - dobehol, caka sa na fyzicke skoncenie (dobeh zvysnych threadov).
static int SCH_WAKE
          Stav procesu - proces sa ma inicializovat pri nabehu.
static int SCH_WAKEASK
          Stav procesu - nepouzity.
static int SCH_WAKEFIN
          Stav procesu - nepouzity.
static int SCH_WAKING
          Stav procesu - zobudzajuci sa.
static java.lang.String[] states
          Stringove pomenovanie stavov procesu.
 
Constructor Summary
protected ProcessManager()
          Konstruktor, volany je staticky.
 
Method Summary
protected  long _createProcessID()
          Vytvori unikatne PID
static ProcessStatus addProcessStatus()
          Registruje proces status u Process managera.
static long createProcessID()
          Creates an unique PID
static java.lang.String createProcessID(long pid)
          Konvertuje PID an stringovu reprezentaciu (ta sa pouziva ako meno ThreadGrupy).
static void finishProcess(long pid)
          Oznacuje procesy ako "skoncene" - t.j.
static ProcessManager getInstance()
          Metoda vracajuca singleton.
static SchdProcess getProcess()
          Vrati objekt SchdProcess pre Thread.currentThread().
static SchdProcess getProcess(long pid)
          Vrati objekt SchdProcess pre dany pid.
static SchdProcess getProcess(java.lang.String processID)
          Vrati objekt SchdProcess pre dane processID.
static SchdProcess getProcess(java.lang.Thread t)
          Vrati objekt SchdProcess pre dany thread.
static java.lang.ThreadGroup getRootThreadGroup()
          Metoda na zistenie root thread grupy ProcessManagera.
static int killProcess(long pid)
          "Makky" kill - skusime povedat objektu, ktoreho metoda main bezi, aby skoncil.
static int killProcess(java.lang.String processID)
          "Makky" kill - skusime povedat objektu, ktoreho metoda main bezi, aby skoncil.
static int processExit()
          Task volajuci tuto metodu oznamuje Process Managerovi ze konci (prepne sa do stavu SCH_RUNFIN).
static int processReady()
          Task volajuci tuto metodu oznamuje Process manageru, ze skoncil inicializaciu.
static int processReady(int progress)
          Task volajuci tuto metodu oznamuje Process manageru uroven svojho nabeu (od INIT_MIN po INIT_MAX).
static void registerProcess(SchdProcess p)
          Registruje proces u Process managera.
static void sin()
          Vypise informacie o beziacich procesoch na konzolu.
static void sin(java.lang.Long pid)
          Vypise informacie o 1 procese (thready a stack threadov).
static void sin(java.lang.Long pid, java.lang.String fileName)
          Vypise informacie o 1 procese (thready a stack threadov).
static void sin(SchdProcess p)
          Vypise informacie o 1 procese (thready a stack threadov).
static void sin(SchdProcess p, java.lang.String fileName)
          Vypise informacie o 1 procese (thready a stack threadov).
static void sin(java.lang.String fileName)
          Vypise informacie o beziacich procesoch do suboru.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SCH_WAKE

public static final int SCH_WAKE
Stav procesu - proces sa ma inicializovat pri nabehu.

See Also:
Constant Field Values

SCH_WAKEASK

public static final int SCH_WAKEASK
Stav procesu - nepouzity.

See Also:
Constant Field Values

SCH_WAKING

public static final int SCH_WAKING
Stav procesu - zobudzajuci sa.

See Also:
Constant Field Values

SCH_WAKEFIN

public static final int SCH_WAKEFIN
Stav procesu - nepouzity.

See Also:
Constant Field Values

SCH_FIN

public static final int SCH_FIN
Stav procesu - defaultny stav, uloha nebezi, pripravena na spustenie.

See Also:
Constant Field Values

SCH_RUN

public static final int SCH_RUN
Stav procesu - beziaci.

See Also:
Constant Field Values

SCH_RUNFIN

public static final int SCH_RUNFIN
Stav procesu - dobehol, caka sa na fyzicke skoncenie (dobeh zvysnych threadov). Ak je proces dlho takomto stave, je to podozrive.

See Also:
Constant Field Values

SCH_DIED

public static final int SCH_DIED
Stav procesu - mrtvy. Ulohu uz viac nepojde spustit.

See Also:
Constant Field Values

SCH_KILLED

public static final int SCH_KILLED
Stav procesu - zabity. Proces este musi po sebe poupratovat.

See Also:
Constant Field Values

SCH_MAX

public static final int SCH_MAX
Pocet stavov procesu (vratane zatial nevyuzivanych).

See Also:
Constant Field Values

states

public static final java.lang.String[] states
Stringove pomenovanie stavov procesu.


INIT_MIN

public static final int INIT_MIN
Minimalna uroven nabehu.

See Also:
Constant Field Values

INIT_MAX

public static final int INIT_MAX
Maximalna uroven nabehu. Ak proces dosiahne uroven INIT_MAX, automaticky je pokladany za SCH_RUN.

See Also:
Constant Field Values

PROCESS_MANAGER_LOG_NAME

public static final java.lang.String PROCESS_MANAGER_LOG_NAME
Meno logovaca process managera.

See Also:
Constant Field Values
Constructor Detail

ProcessManager

protected ProcessManager()
Konstruktor, volany je staticky.

Method Detail

getInstance

public static ProcessManager getInstance()
Metoda vracajuca singleton. Nakolko je snaha, aby public API bolo dostupne cez staticke metody, zatial sa nepredpoklada jej pouzivanie.


sin

public static void sin(java.lang.String fileName)
                throws java.io.IOException
Vypise informacie o beziacich procesoch do suboru.

Parameters:
fileName - - meno suboru
Throws:
java.io.IOException

sin

public static void sin()
Vypise informacie o beziacich procesoch na konzolu. Pouzivat len v "malych" aplikaciach.


sin

public static void sin(java.lang.Long pid,
                       java.lang.String fileName)
                throws java.io.IOException
Vypise informacie o 1 procese (thready a stack threadov).

Throws:
java.io.IOException

sin

public static void sin(SchdProcess p,
                       java.lang.String fileName)
                throws java.io.IOException
Vypise informacie o 1 procese (thready a stack threadov).

Throws:
java.io.IOException

sin

public static void sin(java.lang.Long pid)
Vypise informacie o 1 procese (thready a stack threadov).


sin

public static void sin(SchdProcess p)
Vypise informacie o 1 procese (thready a stack threadov).


createProcessID

public static long createProcessID()
Creates an unique PID

Returns:
new PID

_createProcessID

protected long _createProcessID()
Vytvori unikatne PID

Returns:
new PID

createProcessID

public static java.lang.String createProcessID(long pid)
Konvertuje PID an stringovu reprezentaciu (ta sa pouziva ako meno ThreadGrupy).

Returns:
stringova reprezentacia PID-u

getRootThreadGroup

public static java.lang.ThreadGroup getRootThreadGroup()
Metoda na zistenie root thread grupy ProcessManagera. Vsetky procesy/thready spustane schedulerom (a pripadne nasledne v ramci procesov) patria do tejto grupy.

Returns:
root ThreadGroup ProcessManagera

getProcess

public static SchdProcess getProcess(long pid)
Vrati objekt SchdProcess pre dany pid.


getProcess

public static SchdProcess getProcess(java.lang.String processID)
Vrati objekt SchdProcess pre dane processID.


getProcess

public static SchdProcess getProcess(java.lang.Thread t)
Vrati objekt SchdProcess pre dany thread.

Returns:
SchdProcess, pod ktorym bezi dany thread, null, ak thread nebezi ziadnym SchdProcessom (takychto threadov by malo byt co najmenej (pomocne thready schedulera a pod.).

getProcess

public static SchdProcess getProcess()
Vrati objekt SchdProcess pre Thread.currentThread(). Tato metoda sa odporuca, ak chceme niekde v kode zistit, pod akym SchdProcessom prave bezime.

Returns:
SchdProcess, pod ktorym bezi dany thread, null, ak thread nebezi ziadnym SchdProcessom (takychto threadov by malo byt co najmenej (pomocne thready schedulera a pod.).

processExit

public static int processExit()
Task volajuci tuto metodu oznamuje Process Managerovi ze konci (prepne sa do stavu SCH_RUNFIN). Odporuca sa volat tuto funkciu vtedy, ked sme si isti, ze thread nasho tasku hned po zavolani dobehne a neostavaju po nas visiet nejake dalsie thready.


processReady

public static int processReady()
Task volajuci tuto metodu oznamuje Process manageru, ze skoncil inicializaciu. Obdoba QNXoveho schd_init_ent().


processReady

public static int processReady(int progress)
Task volajuci tuto metodu oznamuje Process manageru uroven svojho nabeu (od INIT_MIN po INIT_MAX). Hodnota INIT_MAX zaroven automaticky znaci skoncenie nabehu.


addProcessStatus

public static ProcessStatus addProcessStatus()
Registruje proces status u Process managera. Samotny proces este nemusi pritom bezat (a nemusi bezat nikdy). Tuto metodu vyuziva scheduler, aby do process managera dostal statusy vsetkych registrovanych taskov. Tymto sa zaroven prideli ulohe pid. Nepredpoklada sa jej rucne volanie z uzivatelskeho kodu.

Returns:
novy (prazdny) process status s prednastavenym pid-om, ktory sa zaroven ulozi do internych tabuliek schedulera ako perzistentny zaznam

registerProcess

public static void registerProcess(SchdProcess p)
Registruje proces u Process managera. Metoda je volana z konstruktoru SchdProcess -u, nepredpoklada sa jej rucne volanie z uzivatelskeho kodu.


killProcess

public static int killProcess(long pid)
"Makky" kill - skusime povedat objektu, ktoreho metoda main bezi, aby skoncil. Volanie vrati chybovu hlasku, ak sa nenasiel dany proces, alebo v ramci procesu bezi staticka metoda (= nie je objekt), alebo objekt neimplementuje rozhranie Disposable().

Returns:
0, ak sa makky kill podaril (SchdProcess je v stave RUNFIN, objektu sa zavolala metoda Dispose) -1 ak nie (nenajdeny proces, bezi staticka metoda, alebo objekt neimplementuje interface Disposable()

killProcess

public static int killProcess(java.lang.String processID)
"Makky" kill - skusime povedat objektu, ktoreho metoda main bezi, aby skoncil. Volanie vrati chybovu hlasku, ak sa nenasiel dany proces, alebo v ramci procesu bezi staticka metoda (= nie je objekt), alebo objekt neimplementuje rozhranie Disposable().

Returns:
0, ak sa makky kill podaril (SchdProcess je v stave RUNFIN, objektu sa zavolala metoda Dispose) -1, ak bezi staticka metoda (nemame komu oznamit kill) -2, alebo objekt neimplementuje interface Disposable() -3, ak nie je najdeny proces, alebo nie je v stave RUN

finishProcess

public static void finishProcess(long pid)
Oznacuje procesy ako "skoncene" - t.j. uz nebezi ziaden thread. Nemeni ale stav procesu ako je reportovany metodou ProcessManager.sin(). Tento stav je updatovany len periodickym taskom schedulera. Metoda je volana z @see com.microstepmis.schd.SchdProcess#run() metody, nepredpoklada sa rucne volanie z uzivatelskeho kodu.


Smernice oddelenia QNX

(c) MicroStep-MIS 2004. Urcene vyhradne pre potreby MicroStep-MIS.