Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

TINF - Taskattribute lesen und modifizieren

&pagelevel(3)&pagelevel

Allgemeines

Anwendungsgebiet:

Starten, Unterbrechen und Beenden; siehe "Starten, Unterbrechen und Beenden";

Testhilfe; siehe "Testhilfe"

Makrotyp:

S-Typ, MF-Format 1: Standardform/E-/L-Form;

siehe "S-Typ-Makroaufrufe"


Makrobeschreibung

Mit dem Makro TINF kann der Anwender

  • die Runpriorität der Task

  • das Taskattribut

  • die Operanden für ein Deaktivierungsverbot der Task

lesen oder modifizieren (gemäß der im Benutzerkatalog festgelegten Werte).

Außerdem ist es möglich, dass sich die aufrufende Task an eine Affinitäts-Taskgruppe anschließt oder sich davon abmeldet.
Tasks, die häufig auf gemeinsame Daten schreibend zugreifen, werden als zueinander affin bezeichnet. Diese gemeinsamen Daten können sowohl im Systemadressraum (der von allen Tasks gemeinsam benutzt wird) als auch im Benutzeradressraum innerhalb von Common Memory Pools liegen. Solche Tasks können in einer Affinitäts-Taskgruppe zusammengefasst werden.
Dabei kann eine Task immer nur einer (oder keiner) Taskgruppe zugeordnet werden. Die Funktionalität der affinen Taskgruppen wird von dem Subsystem TANGRAM realisiert (siehe dazu auch im Handbuch „Systembetreuung“ [10]).

Makroaufrufformat und Operandenbeschreibung

TINF

ACCESS=R / W

[,DEACT=Y / N]

[,DWTR=Y / N]

[,DSSR=Y / N]

[,TPRYAD=adr / (r)]

[,TTYPAD=adr / (r)]

[,TGAFF=Y / N,TGIDAD=adr / (r)]

[,PROCNAD=adr / (r)]

[,PARMOD=24 / 31]

[,MF=L / (E,..)]

ACCESS=

steuert die Lese/Schreib-Funktion der Operanden TPRYAD und TTYPAD.

R
Die Daten werden in die angegebenen Felder übertragen.

W
Die Daten werden von den angegebenen Feldern in den TCB übertragen.

DEACT=
gibt an, ob die Task in folgenden Fällen deaktiviert werden kann:

  • Die System-Auslastung (CPU, Speicher, Paging-Rate) ist sehr hoch.

  • Die Task nimmt bestimmte Wartezustände ein oder verweilt darin (siehe Operand DWTR). Ist der Operand DWTR ebenfalls angegeben, hat seine Einstellung Vorrang.

  • Die Task steht auf Grund ihrer bisher verbrauchten Systemleistungen zur Deaktivierung an (siehe Operand DSSR). Ist der Operand DSSR ebenfalls angegeben, hat seine Einstellung Vorrang.

    Y
    Die Task kann deaktiviert werden.

    N
    Die Task soll nicht deaktiviert werden. Eine Deaktivierung aus anderen Gründen (z.B. Makro VPASS mit mehr als 500 ms Wartezeit) ist weiter möglich.

DWTR=
gibt an, ob die Task in folgenden Fällen deaktiviert werden kann:

  • Sie nimmt bestimmte, länger andauernde Wartezustände ein, z.B. aufgrund eines PASS

  • Sie verweilt länger in einem aktiven Wartezustand, z.B. nach einem SOLSIG mit COND=UNCOD oder nach einem MSG7X/TYPIO mit REPLY.

    Y
    Die Task kann deaktiviert werden.

    N
    Die Task soll nicht deaktiviert werden.

DSSR=
gibt an, ob die Task deaktiviert werden kann, wenn sie eine bestimmte Menge an Systemleistungen erhalten hat (z.B CPU-Zeit).

Y
Die Task kann deaktiviert werden.

N
Die Task soll nicht deaktiviert werden.

TPRYAD=

bezeichnet die Runpriorität der Task.

adr
Adresse eines 1 Byte langen Feldes mit dem Wert für die Runpriorität.
Für ACCESS=R wird die Runpriorität der Task aus dem TCB in das angegebene Feld übertragen. Für ACCESS=W wird die Runpriorität aus dem angegebenen Feld in den TCB übertragen.

(r)
r = Register mit dem Adresswert von adr.

TTYPAD=
bezeichnet das Taskattribut. Werte für das Taskattribut:

TTYPTP   EQU X'81'   Transaktionsauftrag
TTYPIACT EQU X'40'   Dialogauftrag
TTYPPB   EQU X'20'   Batch-Auftrag

Für ACCESS=R wird die Auftragsart in das angegebene Feld übertragen. Für ACCESS=W wird das Taskattribut aus dem angegebenen Feld in den TCB übertragen.

adr
Adresse eines 1 Byte langen Feldes mit dem Wert für das Taskattribut.

(r)
r = Register mit dem Adresswert von adr.

TGAFF=
gibt an, ob sich die aufrufende Task bei einer Affinitäts-Taskgruppe an- oder abmelden will.Dieser Operand muss zusammen mit TGIDAD angegeben werden.

Y
Die Task meldet sich zu der Taskgruppe an, deren Taskgruppen-ID in dem durch TGIDAD adressierten Feld steht, oder zu einer neu einzurichtenden Taskgruppe, wenn das Feld mit Null belegt ist. Wird eine Taskgruppe eingerichtet, wird die neue Taskgruppen-ID im durch TGIDAD adressierten Feld zurückgegeben.

N
Die Task meldet sich von der Gruppe ab, deren Taskgruppen-ID im durch TGIDAD adressierten Feld steht. Ist die abzumeldende Task die letzte ihrer Taskgruppe, wird diese Taskgruppe gelöscht und die Taskgruppen-ID im durch TGIDAD adressierten Feld auf Null gesetzt.

TGIDAD=

bezeichnet die Adresse der Taskgruppen-ID für die aufrufende Task.
Die Angabe dieses Operanden ist nur zusammen mit TGAFF zulässig.

adr
symbolische Adresse eines 4 Byte langen Feldes, das die Taskgruppen-ID enthält.

(r)
r = Register mit dem Adresswert von adr.

PROCNAD=
gibt folgende Informationen aus:

  • Ist die aufrufende Task einer Affinitäts-Taskgruppe zugeordnet?

  • Wenn ja, wie viele CPUs sind momentan dieser Task zugeordnet?

  • Wie viele CPUs werden zurzeit vom System genutzt?

    adr
    symbolische Adresse eines 4 Byte langen Feldes.
    Die ersten 2 Byte enthalten die Anzahl der CPUs, auf denen die Task momentan laufen darf.
    Die zweiten 2 Byte enthalten die Anzahl der CPUs, die zurzeit überhaupt zur Verfügung stehen.
    Ist die aufrufende Task keiner Taskgruppe zugeordnet oder ist das Subsystem TANG-RAM nicht geladen, stimmen die Zahlen in beiden Teilfeldern überein.

    (r)
    r = Register mit dem Adresswert von adr.

MF=
Zur allgemeinen Beschreibung des Operanden MF, der dazugehörenden Operandenwerte und der evtl. nachfolgenden Operanden (z.B. für einen Präfix) siehe Abschnitt „S-Typ-Makroaufrufe“ . Die gültigen MF-Werte sind zu Beginn der Makrobeschreibung bei „Makrotyp“ angegeben und aus dem Aufrufformat ersichtlich.

PARMOD=
steuert die Makroauflösung. Es wird entweder die 24-Bit- oder die 31-Bit-Schnittstelle generiert.
Wenn PARMOD nicht spezifiziert wird, erfolgt die Makroauflösung entsprechend der Angabe für den Makro GPARMOD oder der Voreinstellung für den Assembler (= 24-Bit-Schnittstelle).

24
Die 24-Bit-Schnittstelle wird generiert. Datenlisten und Befehle benutzen 24-Bit-Adressen (Adressraum <= 16 MB).

31
Die 31-Bit-Schnittstelle wird generiert. Datenlisten und Befehle benutzen 31-Bit-Adressen (Adressraum <= 2 GB). Datenlisten beginnen mit dem Standardheader.

Hinweise für Affinitäts-Taskgruppen

  • Zum Zeitpunkt des Anmeldens einer Task an eine Taskgruppe muss bereits ein Memory Pool eingerichtet sein, sodass es möglich ist, das mit TGIDAD bezeichnete Feld in einen Bereich zu legen, der allen Tasks der Anwendung zugänglich ist. Dieses Feld muss mit Null initialisiert werden. Die erste Task richtet dann beim Anmelden die Gruppe ein, alle anderen Tasks schließen sich nur noch der bestehenden Gruppe an.

  • Die Synchronisation der Anmeldevorgänge wird von BS2000 übernommen.Die (zeitlich gesehen) zweite Anmeldung wird erst dann bearbeitet, wenn die erste Anmeldung abgeschlossen ist und die neue Gruppen-ID zurückgeschrieben wurde.

Rückinformation und Fehleranzeigen

Während der Makrobearbeitung enthält Register R1 die Adresse des Datenbereichs.

R15:

+---------------+
|   |   |   |   |
| | | | | | |a|a|
+---------------+

Über die Ausführung des Makros TINF wird im rechtsbündigen Byte des Registers R15 ein Returncode übergeben.

X'aa'

Erläuterung

X'00'

Der Aufruf wurde erfolgreich durchgeführt.

X'04'

Es wurden ungültige Operanden angegeben. Mindestens eine geforderte Funktion wurde
nicht ausgeführt.

X'08'

Das mit TGIDAD bezeichnetet Feld enthält keine für die Task gültige Gruppen-ID.

X'10'

Für mindestens eine Funktion ist keine Berechtigung vorhanden.

X'0C'

Die Task, die sich zu einer Taskgruppe anmelden will, gehört bereits einer anderen
Taskgruppe an.

X'14'

Die abzumeldende Task (Operand TGAFF=N) gehört keiner Gruppe an.

X'18' 1

Es dürfen max. 65535 Taskgruppen angemeldet werden. Dieses Limit ist überschritten.

X'1C' 1

Interner TANGRAM-Fehler. Funktion wurde unvollständig ausgeführt.

X'20' 1

Interne TANGRAM-Administrationsfunktion (Subsystem TANGBAS) nicht verfügbar.

1Beim Auftreten dieser Returncodes können die Anwendungen (z.B. das Hochfahren einer Datenbank) fortgesetzt werden

Beispiel

Der Makro TINF überträgt Runpriorität, Taskattribut und Informationen über die Taskgruppe in je einen Bereich des Anwenderprogramms:

TINF     START
         PRINT NOGEN
TINF     AMODE ANY
         BALR  3,0
         USING *,3
CHKOUT1  TINF  TPRYAD=PRI,TTYPAD=TYPE,PROCNAD=INFO,                    *
               TGAFF=N,TGIDAD=AFFINI,PARMOD=31 -------------------------(1)
CHKIN    TINF  TGAFF=Y,TGIDAD=AFFINI,PARMOD=31 -------------------------(2)
CHKOUT2  TINF  TGAFF=N,TGIDAD=FALSE,PARMOD=31 --------------------------(3)
CHKOUT3  TINF  TGAFF=N,TGIDAD=AFFINI,PARMOD=31 -------------------------(4)
END      TERM
*
****  Definitions  ****
PRI      DS    L1
TYPE     DS    L1
INFO     DS    F
AFFINI   DC    X'00000000'
FALSE    DC    X'08150815'
         END

Ablaufprotokoll:

/start-assembh
%  BLS0500 PROGRAM 'ASSEMBH', VERSION '<ver>' OF '<date>' LOADED
%  ASS6010 <ver> OF BS2000 ASSEMBH  READY 
//compile source=*library-element(macexmp.lib,tinf), -
//        compiler-action=module-generation(module-format=llm), -
//        module-library=macexmp.lib, -
//        listing=parameters(output=*library-element(macexmp.lib,tinf)), -
//        test-support=*aid
%  ASS6011 ASSEMBLY TIME: 283 MSEC
%  ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES
%  ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS
%  ASS6006 LISTING GENERATOR TIME: 79 MSEC
//end
%  ASS6012 END OF ASSEMBH
/load-executable-program library=macexmp.lib,element-or-symbol=tinf, -
/     test-options=*aid
%  BLS0523 ELEMENT 'TINF', VERSION '@' FROM LIBRARY
   ':2OSG:$QM212.MACEXMP.LIB' IN PROCESS
%  BLS0524 LLM 'TINF', VERSION ' ' OF '<date> <time>' LOADED
/%in chkin
/%in chkout2
/%in chkout3
/%in end
/%r
STOPPED AT LABEL: CHKIN , SRC_REF: 40, SOURCE: TINF , PROC: TINF
/%d %15 %xl, pri %xl1, type %xl1, affini %xl;%r -------------------------(1)
*** TID: 00AF0265 *** TSN: 6WPP *********************************************
CURRENT PC: 00000024    CSECT: TINF  ****************************************
%15             = 00000014   ....
V‘0000007A‘ = PRI      + #‘00000000‘
0000007A (00000000) D2                                     K
V‘0000007B‘ = TYPE     + #‘00000000‘
0000007B (00000000) 40
V‘00000080‘ = AFFINI   + #‘00000000‘
00000080 (00000000) 00000000                               ....
STOPPED AT LABEL: CHKOUT2 , SRC_REF: 59, SOURCE: TINF , PROC: TINF
/%d %15 %xl, affini %xl;%r ----------------------------------------------(2)
CURRENT PC: 00000038    CSECT: TINF  ****************************************
%15             = 00000000   ....
V‘00000080‘ = AFFINI   + #‘00000000‘
00000080 (00000000) E3C70021                               TG..
STOPPED AT LABEL: CHKOUT3 , SRC_REF: 78, SOURCE: TINF , PROC: TINF
/%d %15 %xl, false %xl;%r -----------------------------------------------(3)
CURRENT PC: 0000004C    CSECT: TINF  ****************************************
%15             = 00000008   ....
V‘00000084‘ = FALSE    + #‘00000000‘
00000084 (00000000) 08150815                               ....
STOPPED AT LABEL: END , SRC_REF: 96, SOURCE: TINF , PROC: TINF
/%d %15 %xl, affini %xl;%r ----------------------------------------------(4)
CURRENT PC: 00000060    CSECT: TINF  ****************************************
%15             = 00000000   ....
V‘00000080‘ = AFFINI   + #‘00000000‘
00000080 (00000000) 00000000                               ....

(1)

Die Task soll von der Affinitäts-Taskgruppe mit der im Feld AFFINI stehenden Task-gruppen-ID (X'00000000') abgemeldet werden:Register 15 enthält den Returncode X'00000014', d.h. die abzumeldende Task gehörte keiner Taskgruppe an.Die Runpriorität der Task beträgt X'D2' = 210.Die Task ist ein Dialogauftrag (X'40').Der Inhalt des Feldes AFFINI bleibt unverändert.

(2)

Die Task meldet sich zu einer neu einzurichtenden Affinitäts-Taskgruppe an (Feld AFFINI enthält als Input X'00000000').Register 15 enthält den Returncode X'00000000', d.h. der TINF wurde ohne Fehler ausgeführt.Die Taskgruppen-ID der neu eingerichteten Affinitäts-Taskgruppe wird im Feld AF-FINI zurückgegeben. Feld AFFINI enthält jetzt X'E3C70021'.

(3)

Die Task soll von der Affinitäts-Taskgruppe mit der im Feld FALSE stehenden Task-gruppen-ID (X'08150815') abgemeldet werden:Register 15 enthält den Returncode X'00000008', d.h. im mit TGIDAD bezeichneten Feld steht keine für diese Task gültige Taskgruppen-ID.Der Inhalt des Feldes FALSE bleibt unverändert.

(4)

Die Task soll von der Affinitäts-Taskgruppe mit der im Feld AFFINI stehenden Task-gruppen-ID (X'E3C70021') abgemeldet werden:Register 15 enthält den Returncode X'00000000', d.h. der TINF wurde ohne Fehler ausgeführt.Da die Task die letzte (weil einzige) Task ihrer Taskgruppe war, wird diese Taskgruppe gelöscht und die Taskgruppen-ID im durch TGIDAD adressierten Feld auf Null gesetzt. Feld AFFINI enthält wieder X'00000000'.