Dit is de opdracht basl2cB die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator
PROGRAMMA:
NAAM
basl2c - converteert een BASL-code (BAtch Scheduling Language) naar een C-plannercode.
KORTE INHOUD
basl2c [-d] [-l lexerDebugFile] [-p parserDebugFile] [-y symtabDebugFile] [-s
semanticDebugFile] [-g codegenDebugFile] [-c cFile] baslFile
PRODUCTBESCHRIJVING
basl2c is de BASL naar C-compiler die een tussencode produceert die in een
reguliere C-compiler, en gekoppeld aan de PBS-bibliotheken om de planner uitvoerbaar te maken.
Basl2c neemt als invoer a baslBestand, een programma geschreven in Batch Scheduling
Taal, met de hoofdplanningscode. Basl2c converteert vervolgens de BASL-constructen
in het bestand in C-instructies, en het voegt ook aanvullende code toe om de PBS te produceren
broncode van de planner. Standaard wordt de resulterende C-code in het bestand geschreven
pbs_sched.c.
De volledige padnaam naar het resulterende C-bestand moet worden opgegeven in het SCHD_CODE
variabele in local.mk voordat de BASL-planner wordt gecompileerd om de pbs_sched
uitvoerbaar.
OPTIES
-d Drukt aanvullende foutopsporingsberichten af naar de lexer (zie -l optie), parser (zie -p
optie), symbooltabel (zie -y optie), semantische analysator (zie -s optie) en code
generator (zie -g optie).
-l lexerDebugFile
lexerDebugFile is de naam van een bestand dat in de gegenereerde foutopsporingsberichten moet worden geschreven
tijdens het scannen naar tokens.
-p parserDebugFile
parserDebugFile is de naam van een bestand dat in de gegenereerde foutopsporingsberichten moet worden geschreven
terwijl je tokens op een bruikbare manier samenstelt.
-ysymtabDebugFile
symtabDebugFile is de naam van een bestand dat in de bijbehorende foutopsporingsberichten moet worden geschreven
de symbolentabel.
-s semantischDebugFile
semantischDebugFile is de naam van een bestand dat in de foutopsporingsberichten moet worden geschreven
gegenereerd tijdens het controleren of variabelen en operatoren worden gebruikt in a
consistente manier.
-g codegenDebugFile
codegenDebugFile is de naam van een bestand dat in de gegenereerde foutopsporingsberichten moet worden geschreven
tijdens het converteren van BASL-instructies naar C-instructies.
-c cBestand
cBestand is de naam van een bestand waarin de gegenereerde C-code wordt geschreven.
MAIN STRUCTUUR
De basisstructuur van een plannercode geschreven in BASL is als volgt:
nul or meer FUNCTIES definities
nul or meer globaal VARIABELE VERKLARINGEN
nul or meer toewijzing verklaringen (naar initialiseren globaal variabelen)
schema_main()
{
een or meer VARIABELE VERKLARINGEN
nul or meer STATEN
}
Bijvoorbeeld
% hoe sched.basl
Int som(Int a, Int b)
{
Int s;
s = a + b;
geeft terug);
}
Int klodder;
schema_main()
{
Int c;
a = 3;
b = 4;
c = som(een, B);
afdrukken(c);
glob = 5;
afdrukken(bol);
}
schema_main() is de functie die wordt aangeroepen bij elke planningsiteratie.
FUNCTIES
Om een functie te definiëren die in volgende functies kan worden aangeroepen, is de syntaxis:
Retourtype functienaam ( GEGEVENSTYPE1 IDENTIFICATIE1,
GEGEVENSTYPE2 IDENTIFICATIE2, ... )
{
een or meer VARIABELE VERKLARINGEN
nul or meer STATEN
}
Bijvoorbeeld
Leegte printStuff(Dagvandeweek dow, Datum Tijd t, Draad str,
Maat: zz, C-knooppunt cn)
{
afdrukken(duw);
afdrukken(t);
afdrukken(str);
afdrukken(grootte);
afdrukken(cn);
}
Geldige functie Retourtype zijn: Void, Int, Float, Dayofweek, DateTime, String, Size,
Server, wachtrij, taak, CNode, server instellen, wachtrij instellen, taak instellen, CNode instellen.
Geldige gegevenstypen ( GEGEVENSTYPE1, GEGEVENSTYPE2, ... ) voor de parameter-ID's zijn: Int,
Float, Dayofweek, DateTime, String, Size, Server, Que, Job, CNode, Server instellen, Que instellen,
Taak instellen, CNode instellen, bereik Int, bereik zwevend, bereik Dayofweek, bereik DateTime, bereikgrootte,
Fun Int, Fun Float, Fun Void, Fun Dayofweek, Fun DateTime, Fun String, Fun Size, Fun
Server, Leuke wachtrij, Leuke taak, Leuke CNode, Leuke set Server, Leuke set wachtrij, Leuke set taak, Leuke set
C-knooppunt. Deze gegevenstypen worden in het volgende onderwerp besproken.
Functies worden aangeroepen met hun naam en hun argumenten, zoals in:
afdrukkenStuff( MA, (5|1|1997@14:32:00), "gepland begint",
30 GB, knooppunt );
basl2c zal feitelijk een voorvoegsel "basl_" toevoegen aan de functienaam die door de planner wordt gegeven
writer om de kans op naamconflicten te minimaliseren, die kan ontstaan wanneer de resulterende C-code is
gekoppeld aan de PBS- en BASL-bibliotheken. Als je bijvoorbeeld kijkt naar de gegenereerde C-code voor
afdrukkenStuff, je zult zien,
basl_printStuff( MON, (5|1|1997@14:32:00),
"sched begint", 30gb, knooppunt);
Net als in C moeten alle functieaanroepen vooraf zijn gedefinieerd. De BASL-compiler zal dat wel doen
controleer of de argumenten in de functieaanroep exact overeenkomen (in termen van
typen) met de parameters in de functiedefinitie.
Er bestaan twee soorten functies in BASL: door de gebruiker gedefinieerde functies en vooraf gedefinieerde functies.
Door de gebruiker gedefinieerde functies zijn functies waarvoor de plannerschrijver een definitie heeft gegeven,
terwijl vooraf gedefinieerde functies functies zijn die onmiddellijk kunnen worden aangeroepen zonder dat dit nodig is
het definiëren. Voor een lijst met vooraf gedefinieerde functies, zie paragraaf over VOORGEDEFINIEERD FUNCTIES .
VARIABELE VERKLARINGEN
Net als in C moeten alle variabelen in een BASL-code vóór gebruik expliciet worden gedeclareerd. Die
variabelen die buiten een functie worden gedeclareerd, worden globale variabelen genoemd, while
variabelen die binnen een functiebody worden gedeclareerd, worden lokale variabelen genoemd. Globaal
variabelen zijn overal binnen de BASL-code bruikbaar, terwijl lokale variabelen leesbaar zijn
alleen binnen de functie van waaruit ze zijn gedeclareerd.
De syntaxis van een variabelendeclaratie is:
DATA TYPE IDENTIFICATIE ;
WAAR DATA TYPE kan zijn: Int, Float, Dayofweek, DateTime, String, Size, Server, Que, Job,
CNode, Server instellen, Wachtrij instellen, Taak instellen, CNode instellen, Bereik Int, Bereik zwevend, Bereik Dag van de week,
Bereik DateTime, bereikgrootte.
GEGEVENS TYPE
Leegte gebruikt voor functies die geen waarde retourneren.
Int ondertekend, hele getallen gegeven in grondtal 10.
Voorbeeldconstanten:
5, +1, -3, SUCCES (=1), FOUT (=0), WAAR (=1), ONWAAR (=0)
Vlotter reële getallen die in de vertaalde C-code als dubbels worden weergegeven.
Monsterconstanten: 4.3, +1.2, -2.6
Dag van de week
constante waarden: SUN, MON, TUE, WED, THU, FRI, SAT, intern weergegeven als
constanten met gehele getallen, waarbij SUN=0, MON=1, enzovoort.
Datum Tijd
specificeer in een van de 3 formaten:
[1] (m|d|y) waarbij 1 <= m <= 12, 1 <= d <= 31, 0 <= y, bijv. (4|4|1997);
[2] (uu:mm:ss) waarbij 0 <= uu <= 23, 0 <= mm <= 59, 0 <= ss <= 61, bijv.
(12:01:00);
[3] (m|d|y@hh:mm:ss), ex. (4|4|1997@12:01:00)
Tijdens het vergelijken van datums/tijden wordt 'nu'-tijd vervangen door de tijd
gedeelte wordt niet gegeven (formaat [1]); de "nu"-datum wordt vervangen als de
datumgedeelte wordt niet gegeven (formaat [2]). Ook het volledige jaardeel moet
worden vermeld (dwz 1997 in plaats van 97) in data om dubbelzinnigheid te voorkomen.
Draad Een string staat tussen aanhalingstekens (") en kan alles bevatten, behalve een andere
aanhalingstekens, een nieuwe regel en haakjes links en rechts.
Voorbeeldconstanten: "een voorbeeldreeks", NULLSTR
Maat: formaat: waarbij het achtervoegsel een vermenigvuldiger is van de vorm:
:
vermenigvuldiger eenheid (bytes or woorden)
=================== =====================
k,m,g,t,p,K,M,G,T,P b,B,w,W
waarbij k=K=1024, m=M=1,048,576, g=G=1,073,741,824, t=T=1,099,511,627,776,
p=P=1,125,899,906,842,624, b=B=1, en de woordgrootte w=W is lokaal gedefinieerd (dwz 4
bytes in een 32-bits machine).
Bij het werken met operanden van twee groottes met verschillende achtervoegsels, wordt het achtervoegsel van
de "lagere" van de twee zal het resulterende achtervoegsel zijn. Bijvoorbeeld,
10mb + 10gb = 10250mb
Voorbeeldconstanten: -1b, 2w, 1kb, 2mw, +3gb, 4tw, 6Pb
RANGE Int
formaat: (lage Int-waarde, hoge Int-waarde)
waarbij lage Int-waarde <= hoge Int-waarde. Steekproefconstante: (1,3)
RANGE Vlotter
formaat: (lage Float-waarde, hoge Float-waarde)
waarbij lage waarde <= hoge waarde. Monsterconstante: (2.3, 4.6)
RANGE Dag van de week
formaat: (vroegere dag, latere dag)
waarbij eerdere dag <= latere dag. Steekproefconstante: (WO, VRI)
RANGE Datum Tijd
formaat: (eerdere datum/tijd, latere datum/tijd)
waarbij eerdere datum/tijd <= latere datum/tijd.
OPMERKING: als het bereik alleen tijdgedeelten bevat en eerdere tijd "verschijnt".
wees > latere tijd zoals in "((18:0:0), (6:0:0))", en vervolgens tijdens datum/tijd
vergelijkingen wordt de "latere" tijd met één dag aangepast, zodat dit wel het geval is
ziet eruit als: "( ( @18:0:0), ( @6:0:0) )"
Voorbeeldconstanten:
((4|4|1997), (4|10|1997)), ((12:01:00), (12:30:00)), ((4|4|1997@12:01:00),
(4|10|1997@12:30:00))
RANGE Maat:
formaat: (klein formaat, hoog formaat)
waarbij lage maat <= hoge maat. Voorbeeldconstanten: (23 GB, 50 GB)
Server Wordt rechtstreeks toegewezen aan het PBS-serverobject. A Server beheert er één of meerdere Dat voorwerpen.
Monsterconstante: NOSERVER
C-knooppunt voor een rekenknooppunt dat bestaat uit een enkele OS-image, een gedeeld geheugen en een set
van cpu. CNode voert 1 PBS MOM uit.
Monsterconstante: NOCNODE
Dat Wordt rechtstreeks toegewezen aan het PBS-wachtrijobject. A Dat object spoelt een of meer Job
voorwerpen.
Monsterconstante: NOQUE
Job Wordt rechtstreeks gekoppeld aan het PBS-taakobject. A Job object heeft enkele attributen en
benodigde bronnen.
Steekproefconstante: NOJOB
Zet de Server
lijst met serverobjecten.
Voorbeeldconstante: EMPTYSETSERVER
Zet de C-knooppunt
lijst met CNode-objecten.
Voorbeeldconstante: EMPTYSETCNODE
Zet de Dat lijst met Que-objecten.
Monsterconstante: EMPTYSETQUE
Zet de Job lijst met taakobjecten.
Voorbeeldconstante: EMPTYSETJOB
BASL-GEDEFINIEERD CONSTANTEN
Dit zijn constanten die niet kunnen worden gebruikt voor het benoemen van een ID (zie het volgende onderwerp). Deze
staan altijd in hoofdletters.
GEGEVENS TYPE BASL-GEDEFINIEERD CONSTANTE
=================== =============================================
Dag van de week ZON, MA, DIN, WO, DO, VRIJ, ZA
Int SUCCES, MISLUKKING, ONWAAR, WAAR, SYNCRUN, ASYNCRUN,
VERWIJDEREN, OPNIEUW, UITSTEL, UITGAVE, SIGNAAL,
WIJZIGATTR, WIJZIGT, SERVER_ACTIEF,
SERVER_IDLE, SERVER_SCHED, SERVER_TERM,
SERVER_TERMDELAY, QTYPE_E, QTYPE_R,
SCHED_DISABLED, SCHED_ENABLED, DOORVOER,
IN DE WACHTRIJ, GEHOUDEN, AAN HET WACHTEN, RENNEN, VERLATEN,
CNODE_OFFLINE, CNODE_DOWN, CNODE_FREE,
CNODE_RESERVE, CNODE_INUSE_EXCLUSIVE,
CNODE_INUSE_SHARED, CNODE_TIMESHARED,
CNODE_CLUSTER, CNODE_UNKNOWN, OP_EQ, OP_NEQ,
OP_LE, OP_LT, OP_GE, OP_GT, OP_MAX, OP_MIN,
ASC, DESC
Server NOSERVER
Zet de Server LEGESETSERVER
C-knooppunt NOCNODE
Zet de C-knooppunt LEGESETCNODE
Dat NOQUE
Zet de Dat LEGE SETQUE
Job GEEN BAAN
Zet de Job LEGE SETJOB
Draad NULLSTR
IDENTIFICATIE
Identificatiegegevens (gebruikt voor namen van variabelen en functienamen) hebben een alfanumeriek formaat, met
het speciale onderstrepingsteken (_) is toegestaan. Momenteel kan BASL alleen identificatiegegevens verwerken
met een lengte tot 80 tekens. Ook kunt u de door BASL gedefinieerde constantenamen niet gebruiken voor
het benoemen van een identificatie.
STATEN
In BASL(2), kunt u een enkele instructie laten eindigen met een puntkomma, of een groep daarvan
verklaringen (ook wel samengestelde verklaring of blok genoemd) gescheiden door '{' en '}'. Het verschil
soorten uitspraken die in een BASL-code kunnen voorkomen zijn:
1. expressieverklaring
Expressie-instructies hebben de volgende vorm:
uitdrukken ;
WAAR uitdrukken kan zijn:
a) Rekenkundige uitdrukkingen
lexpr + heruitgave (toevoegen)
lexpr - heruitgave (aftrekken)
lexpr * heruitgave (vermenigvuldigen)
lexpr / heruitgave (verdeling)
lexpr % heruitgave (module or rest)
OPMERKING: Optellen, aftrekken, vermenigvuldigen, delen en resteren
is alleen toegestaan voor de juiste typen en als links en rechts
expressies zijn van consistente typen. Onderstaande tabel illustreert wat
typen zijn consistent tussen de verschillende operators:
Voor +:
lexpr heruitgave
============ ============
Int or Vlotter Int or Vlotter
Maat: Maat:
Draad Draad
Voor -, *, /:
lexpr heruitgave
============ ============
Int or Vlotter Int or Vlotter
Maat: Maat:
Voor %:
lexpr heruitgave
============ ============
Int or Vlotter Int or Vlotter
Hier volgen enkele voorbeelden van uitspraken over rekenkundige uitdrukkingen:
Int i1;
Int i2;
Vlotter f1;
Vlotter f2;
Maat: sz1;
Maat: sz2;
Draad str1;
Draad str2;
i1 + i2;
f1 - i2;
sz1 * sz2 * 2b;
sz1 / 1024b;
str1 = "basl";
str2 = " koel";
// the volgend is a snaar aaneenschakeling
// operatie verkregen in the draad:
// "basl koel"
str1 + str2;
i1 % 10;
b) Unaire uitdrukkingen
+ expr // positief - vermenigvuldigt by 1 an
// uitdrukking uit die is
// of Int, Vlot, or
// Maat: type dan:
-uitdr // negatief - vermenigvuldigt by -1 an
// uitdrukking uit die is
// of Int, Vlot, or
// Maat: type dan:
! expr // niet - bekeerlingen a niet nul uitdrukken
// waarde om in 0, en a
// nul uitdrukken waarde om in 1
// WAAR uitdrukken type dan: Dan moet je be
// of type dan: Int or Vlotter
Enkele voorbeelden van unaire expressies:
Int i;
+ 3;
-(i + 4);
!i;
c) Logische uitdrukkingen
lexpr EQ heruitgave
lexpr NEQ heruitgave
lexpr LT heruitgave
lexpr LE heruitgave
lexpr GT heruitgave
lexpr GE heruitgave
lexpr EN heruitgave
lexpr OR heruitgave
lexpr en heruitgave moeten typen hebben die onderling consistent zijn, zoals weergegeven
in de volgende tabel:
lterminal-uitdr rterminal-uitdr
============== ==============
Int or Vlotter Int or Vlotter
Dag van de week Dag van de week
Datum Tijd Datum Tijd
Draad Draad
Maat: Maat:
Server Server
Dat Dat
Job Job
C-knooppunt C-knooppunt
Zet de Server Zet de Server
Zet de Dat Zet de Dat
Zet de Job Zet de Job
Zet de C-knooppunt Zet de C-knooppunt
Voor EN, OR exploitanten, de lexpr, heruitgave consistente typen zijn Int of
Vlot.
Enkele voorbeelden van logische expressies:
i1 EQ i2;
i1 NEQ f2;
dow1 LE dow2;
d1 LT d2;
str1 GT str2;
sz1 GE sz2;
d) Expressies na de operator
Dit zijn uitdrukkingen die slechts een snelkoppeling naar een toewijzing zijn
stellingen.
IDENTIFICATIE++; // identificator=identificatie+1
IDENTIFICATIE--; // identifier=identificatie-1
IDENTIFICATIE moet van het type Int of Float zijn.
Voorbeeld:
Int i;
Vlotter f;
i ++;
F--;
e) Functie oproep
functienaam ( arg1 ,arg2 ... , argN )
WAAR arg1, ..., argN kan elke constante of variabele zijn. Dat kun je niet hebben
een andere functieaanroep als argument.
Voorbeeld:
Leegte afdrukken a) {
afdrukken(a);
}
pr(5);
Er zijn bepaalde vooraf gedefinieerde functies die een plannerschrijver kan gebruiken
roept automatisch zijn/haar BASL-code in zonder dat deze hoeft te worden gedefinieerd.
Deze functies worden hulpfuncties (of helper) genoemd
functies) en ze worden besproken onder VOORGEDEFINIEERD FUNCTIES topic.
f) Constanten
Enkele geldige constante-uitdrukkingen worden hieronder gegeven:
5;
+ 1.2;
ZON;
MAAND;
DI;
WO;
DO;
VR;
ZA;
(4|4|1997);
(12:01:00);
(4|4|1997@12:01:00);
"prachtig";
-1b;
SYNCRUN;
ASYNCRUN;
VERWIJDEREN;
HERHALING;
UITSTEL;
UITGAVE;
SIGNAAL;
WIJZIGATTR;
WIJZIGT;
(1, 3);
(2.3, 4.6);
(WO, VR);
((4|4|1997), (4|10|1997));
((12:01:00), (12:30:00));
((4|4|1997@12:01:00), (4|10|1997@12:30:00));
(23 GB, 50 GB);
NOSERVER;
NOCNODE;
NOQUE;
GEEN BAAN;
LEGESETSERVER;
LEGESETCNODE;
LEGE SETQUE;
LEGESETJOB;
NULLSTR;
SUCCES;
MISLUKKING;
SERVER_ACTIEF;
SERVER_IDLE;
SERVER_SCHED;
SERVER_TERM;
SERVER_TERMDELAY;
QTYPE_E;
QTYPE_R;
SCHED_DISABLED;
SCHED_ENABLED;
ONWAAR;
WAAR;
DOORVOER;
IN WACHTRIJ;
GEHOUDEN;
AAN HET WACHTEN;
RENNEN;
VERLATEN;
CNODE_OFFLINE;
CNODE_DOWN;
CNODE_FREE;
CNODE_RESERVE;
CNODE_INUSE_EXCLUSIVE;
CNODE_INUSE_SHARED;
CNODE_TIMESHARED;
CNODE_CLUSTER;
CNODE_UNKNOWN;
OP_EQ;
OP_NEQ;
OP_LE;
OP_LT;
OP_GE;
OP_GT;
OP_MAX;
OP_MIN;
g) Identificatie
Voorbeeld:
Int ik;
i;
2. Opdrachtverklaring
IDENTIFICATIE = uitdrukken ;
IDENTIFICATIE en uitdrukken moeten typen hebben die onderling consistent zijn
geïllustreerd in de volgende tabel:
identificatie uitdrukken
=============== ===============
Int Int, Vlotter
Vlotter Int, Vlotter
Dag van de week Dag van de week
Datum Tijd Datum Tijd
Draad Draad
Maat: Maat:
Dat Dat
Job Job
C-knooppunt C-knooppunt
Server Server
Dag van de week Dag van de week
Datum Tijd Datum Tijd
Zet de Server Zet de Server
Zet de Dat Zet de Dat
Zet de Job Zet de Job
Zet de C-knooppunt Zet de C-knooppunt
RANGE Int RANGE Int
RANGE Vlotter RANGE Vlotter
RANGE Dag van de week RANGE Dag van de week
RANGE Datum Tijd RANGE Datum Tijd
RANGE Maat: RANGE Maat:
3. als...anders verklaring
Het formaat van een if-instructie is vergelijkbaar met dat in C, met de begrenzing
"{" en "}" altijd aanwezig:
als( uitdrukken ) {
nul or meer (True) STATEN
}
als( uitdrukken ) {
nul or meer (True) STATEN
} anders {
nul or meer (vals) STATEN
}
De uitdrukken 's type moet Int of Float zijn, en na evaluatie of dit het geval is
waarde niet nul is, worden de ware instructies uitgevoerd. Op de seconde
vorm, als de uitdrukken evalueert naar nul, waarna de valse uitspraken worden uitgevoerd.
Een voorbeeld if verklaringen vindt u hieronder:
if (2 * x )
{
y = y + 3;
afdrukken(y);
}
if (2 * x ) {
y = y + 3;
} anders {
als( 3 * x ) {
y = 4;
} anders {
y = 5;
}
}
4. voor lus verklaring
Het formaat van een for-instructie is als volgt:
voor( begin; test; actie ) {
nul or meer STATEN
}
Net als in C, voor voert eerst uit begin , evalueert vervolgens de proef voorwaarde
om te zien of er een waarde wordt geretourneerd die niet nul is. Als dit het geval is, zal de voor uitspraken zijn
uitgevoerd. Na de voor uitspraken worden dan uitgevoerd actie wordt geëvalueerd,
en dan controleert hij de proef opnieuw op dezelfde manier als voorheen.
begin en actie kan een eenvoudige toewijzingsexpressie of een post-operator zijn
expressie. proef is een logische/relationele uitdrukking. Een voorbeeld voor
verklaringen worden als volgt gegeven:
voor (i = 0; i LT 3 ; i = i + 1)
{
afdrukken(ik);
}
voor (i = 0; i LT 2 * x; ik++)
{
if (x GT 3)
{
y = 99;
} anders
{
x = 73;
}
}
5. foreach lus verklaring
Deze verklaring wordt voornamelijk gebruikt voor het achtereenvolgens ophalen van elk element van
a Gegevenstype instellen: Server instellen, CNode instellen, Taak instellen, Wachtrij instellen. De syntaxis is:
foreach ( IDENTIFICATIE1 in IDENTIFICATIE2 ) {
nul or meer STATEN
}
waarbij de volgende combinaties van typen voor de identificatiegegevens zijn toegestaan:
IDENTIFICATIE1 IDENTIFICATIE2
=========== ===========
Server Zet de Server
Dat Zet de Dat
Job Zet de Job
C-knooppunt Zet de C-knooppunt
Voorbeeld:
Server s;
Dat q;
Job j;
C-knooppunt c;
Zet de Server ss;
Zet de Dat vierkante;
Zet de Job sj;
Zet de C-knooppunt sc;
voorelk(en in ss){
afdrukken(en);
}
foreach (q in vierkante){
afdrukken(q);
}
foreach(j in sj){
afdrukken(j);
}
voorelk (c in sc){
afdrukken(c);
}
6. en lus verklaring
De syntaxis van een while-lus is:
en ( uitdrukken ) {
nul or meer STATEN
}
WAAR uitdrukken moet van het type Int of Float zijn. Als uitdrukken niet nul is, dan de nul
of meer STATEN worden geëxecuteerd en uitdrukken wordt opnieuw geëvalueerd.
Voorbeeld:
Int i;
i = 3;
terwijl ik) {
als( i EQ 0 ) {
print("breek on i = 1");
te breken;
}
i--;
}
7. schakelaar verklaring
De switch-instructie is een meervoudige beslissing die test of een
De waarde van de identifier komt overeen met een van een aantal waarden en vertakt zich naar a
groep uitspraken dienovereenkomstig.
De syntaxis voor een switch-instructie is:
schakelaar ( IDENTIFICATIE ) {
geval constante-expr :
{
nul or meer STATEN
}
geval constante-expr :
{
nul or meer STATEN
}
...
geval in constant-bereikOrSet-expr :
{
nul or meer STATEN
}
geval in IDENTIFIER-bereikOrSettype :
{
nul or meer STATEN
}
verzuim :
{
nul or meer STATEN
}
}
WAAR constante-expr is een uitdrukken van het type Int, Float, Dayofweek, DateTime,
Grootte, Tekenreeks, Server, Wachtrij, Taak of CNode. constant-bereikOrSet-expr en
IDENTIFIER-bereikOrSettype kan van het type Set Server, Set CNode, Set Que, Set zijn
Taak, Bereik Int, Bereik zwevend, Bereik Dag van de week, Bereik DatumTijd of Bereikgrootte.
IDENTIFICATIE kan niet van het type Leegte zijn. IDENTIFICATIE 's type moet consistent zijn
met constante-expr 'S, constant-bereikOrSet-expr 'S, en IDENTIFICATIE-
bereikOfSettype 's type zoals geïllustreerd in de volgende tabel:
IDENTIFICATIE constant bereik-expr, IDENTIFIER-bereiktype
=========== =========================================
Server Zet de Server
Dat Zet de Dat
Job Zet de Job
C-knooppunt Zet de C-knooppunt
Int RANGE Int
Vlotter RANGE Vlotter
Dag van de week RANGE Dag van de week
Datum Tijd RANGE Datum Tijd
Maat: RANGE Maat:
Als een case-expressie overeenkomt met de IDENTIFICATIE 's waarde, en vervolgens de overeenkomstige
blok met instructies wordt uitgevoerd. Anders dan in C valt de uitvoering NIET
door naar de volgende casusverklaring. De reden hiervoor is dat basl2c wil
vertaal dit schakelaar statement in if-elseif-else constructie. De zaak
met het label standaard wordt uitgevoerd als aan geen van de andere gevallen is voldaan. De
verzuim is optioneel; als het er niet is, en als geen van de gevallen overeenkomt, nee
actie plaatsvindt.
Voorbeeld:
Dag van de week dom;
schakelaar(dow)
{
geval MON:
{
afdrukken("geval MA");
}
geval TUE:
{
afdrukken("geval DIN");
}
geval Wo:
{
afdrukken("geval WO");
}
geval DO:
{
afdrukken("geval DO");
}
geval VR:
{
afdrukken("geval VR");
}
geval ZA:
{
afdrukken("geval ZA");
}
geval ZON:
{
afdrukken("geval ZON");
}
default:
{
afdrukken("geval in gebreke gebleven");
}
}
Int a;
RANGE Int Ri;
ri = (10, 12);
schakelaar(a)
{
geval in (1,5):
{
afdrukken("geval 1,5");
}
geval in (6,9):
{
afdrukken("geval 6,9");
}
geval in Ri:
{
afdrukken("geval ri");
}
}
8. print verklaring
De Print-instructie kan worden afgedrukt om de waarde van elk ervan te overtreffen identificatie
or constante van het type Int, Float, Dayofweek, DateTime, String, Size, Que, Job,
CNode, Server, Bereik Int, Bereik Float, Bereik Dagvandeweek, Bereik DatumTijd,
Bereikgrootte.
De syntaxis is als volgt:
print ( IDENTIFICATIE );
print ( constante );
Voorbeeld:
Datum Tijd dt;
C-knooppunt cn;
dt = (4|4|1997@12:13:36);
cn = AllNodesLocalHostGet();
afdrukken(dt);
afdrukken(cn);
Gebruik voor Set-typen foreach om elk element te doorlopen en af te drukken zoals in:
Server s;
Zet de Server ss;
ss = AllServersGet();
voorelk(en in ss) {
afdrukken(en);
}
9. vervolg verklaring
voortzetten ;
De voortzetten verklaring moet zijn ingeroepen binnen a voor, voor, en
en lus. Het zorgt ervoor dat de volgende iteratie van de omsluitende lus begint.
10. break-verklaring
breken ;
De breken verklaring moet zijn ingeroepen binnen a voor, voor, en en
lus. Het biedt een vroege uitgang uit de omringende lus.
11. retourverklaring
retour(IDENTIFICATIE) ;
retour (constant) ;
opbrengst() ;
De return-instructie geeft de waarde (indien aanwezig) die moet worden geretourneerd door a
functie. Het type dat wordt geretourneerd door IDENTIFICATIE en constante moet overeenkomen met de
het retourtype van de aanroepende functie. constante toegestane typen zijn allesbehalve
Set- en bereiktypen. Het laatste formaat, opbrengst() wordt meestal binnen a genoemd
functie die geen enkele waarde retourneert (zoals schema_main() ).
12. exit-verklaring
uitgang(constante);
WAAR constante is van het type Int. Als u dit aanroept, wordt de planner beëindigd.
13. Commentaarverklaring
Dit zijn uitspraken voorafgegaan door "//" en worden door de BASL genegeerd
compiler.
// dit lijn is genegeerd
Int i; // snaar volgend the schuine strepen is genegeerd
ONDERNEMER VOORRANG EN ASSOCIATIVITEIT
De volgende tabel toont de verschillende niveaus van operatorprioriteit en associativiteit die zijn gedefinieerd
in de BASL-taal. De operatoren worden weergegeven in volgorde van afnemende prioriteit. De
Hoe hoger de prioriteit van een operator, hoe eerder deze wordt uitgevoerd. De volgorde waarin de
operatoren op hetzelfde niveau worden uitgevoerd, hangt af van de associativiteit: links betekent de
operators worden van links naar rechts gezien, terwijl rechts betekent dat ze van rechts naar links worden gezien.
Operator Associativiteit
======================================= =============
! ++ -- + (unair plus) - (unair minus) rechts
* / % links
+ - links
LT LE GT GE links
EQ NEQ links
EN links
OR links
= rechts
VOORGEDEFINIEERD FUNCTIES
In BASL(2), een Server gegevenstype wordt rechtstreeks toegewezen aan een batchserverobject. Op dezelfde manier, C-knooppunt
is voor moeder/resmoeder, Job is een batchtaak, en Dat is een batchwachtrij. Echter niet allemaal
attributen van de PBS-objecten zijn toegankelijk vanuit BASL. Slechts een subset van attributen,
degenen die zinvol leken in de context van een planner, worden beschikbaar gemaakt, en
waarden voor deze attributen zijn toegankelijk door de volgende vooraf gedefinieerde functies aan te roepen:
ook wel assist/helper-functies genoemd.
(1) Servergerelateerde functies
Zet de Server AllServersGet(ongeldig)
Retourneert de lijst met servers die zijn opgegeven in het configuratiebestand voor
waarop de planner-schrijver wil dat het systeem periodiek controleert
status, wachtrijen en taakinformatie. Zien pbs__gepland__basl(8 miljard) voor een
discussie over het formaat van het configuratiebestand.
LET OP: Deze functie moet van binnenuit worden aangeroepen schema_main() so
dat bij elke planningsiteratie het meest up-to-date is Zet de Server
structuur wordt teruggegeven.
Server AllServersLocalHostGet(ongeldig)
Retourneert het Server-object dat de lokale host vertegenwoordigt. niet-ingestelde waarde:
NOSERVER. Dit is een eenvoudige functie die kan worden aangeroepen voor niet-clusteromgevingen
waar slechts één serverhost bestaat.
LET OP: Deze functie moet van binnenuit worden aangeroepen schema_main() (of van
binnen de functie aangeroepen door sched_main) zodat bij elke planning
iteratie, de meest up-to-date Server structuur wordt teruggegeven.
Draad ServerInetAddrGet(Server s)
Retourneert de naam voor server-s. niet-ingestelde waarde: NULLSTR
Draad ServerDefQueGet(Server s)
Retourneert het kenmerk default_queue van Server s. niet-ingestelde waarde: NULLSTR
Int ServerStateGet(Server s)
Retourneert het server_state attribuut van Server s.
Winstwaarde:
SERVER_ACTIVE, SERVER_IDLE, SERVER_SCHED, SERVER_TERM,
SERVER_TERMDELAY, -1 (niet-ingestelde waarde)
Int ServerMaxRunJobsGet(Server s)
Retourneert het max_running-kenmerk van Server s. uitschakelwaarde: 0
Int ServerMaxRunJobsPerUserGet(Server s)
Retourneert het kenmerk max_user_run van Server s. uitschakelwaarde: 0
Int ServerMaxRunJobsPerGroupGet(Server s)
Retourneert het kenmerk max_group_run van Server s. uitschakelwaarde: 0
Zet de Dat ServerQueuesGet(Server s)
Retourneert een lijst met wachtrijen die worden beheerd door Server s.
Zet de Job ServerJobsGet(Server s)
Retourneert een lijst met taken die worden beheerd door Servers. Voor het verkrijgen van een subset hiervan
lijst, zie QueJobsGet().
Int ServerIntResAvailGet(Server s, Draad naam)
Retourneert de waarde naar de resource die is opgegeven in naam die beschikbaar is voor banen
beheerd door deze server (Server bronnen_beschikbaar.naam attribuut). Bel dit
functie voor bronnen met waarden van het type Int. Voorbeeldbron
namen zijn: cput, pcput, walltime, mppt, pmppt, nice, procs, mppe, ncpus,
pncpus, nodect, srfs_assist, mta,..., mth. Voor een beschrijving hiervan
resourcenamen, zie pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributen(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).
Voorbeeld:
Int cpuBeschikbaar;
// terugkeer the # of cpu's momenteel Beschikbaar in
// the server
cpuBeschikbaar = ServerIntResAvailGet(server, "ncpus");
Maat: ServerSizeResAvailGet(Server s, Draad naam)
Retourneert de waarde naar de resource die is opgegeven in naam die beschikbaar is voor banen
beheerd door deze server (Server bronnen_beschikbaar.naam attribuut). Bel dit
functie voor resources met waarden van het type Grootte. Voorbeeldbron
namen zijn: bestand, mem, pmem, werkset, pf, ppf, srfs_tmp, srfs_wrk,
srfs_big, srfs_fast, sds, psds. Voor een beschrijving van deze bronnen
namen, zie pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributen(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).
Voorbeeld:
Maat: memAvail;
// terugkeer the bedragen of Beschikbaar geheugen in
// the server
memBeschikbaar = ServerSizeResAvailGet(server, "me");
Draad ServerStringResAvailGet(Server s, Draad naam)
Retourneert de waarde naar de resource die is opgegeven in naam die beschikbaar is voor banen
beheerd door deze server (Server bronnen_beschikbaar.naam attribuut). Bel dit
functie voor bronnen met waarden van het type String. Steekproef
resourcenamen zijn: knooppunten, boog, neednodes. Voor een beschrijving hiervan
resourcenamen, zie pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributen(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).
Voorbeeld:
Draad type;
// terugkeer the architectuur (of os type) of
// the server
type dan: = ServerStringResAvailGet(server, "boog");
Int ServerIntResAssignGet(Server s, Draad naam)
Retourneert de waarde naar de resource die is opgegeven in naam waaraan wordt toegewezen
lopende taken (Server resources_toegewezen.naam attribuut). Bel dit
functie voor bronnen met waarden van het type Int. Voorbeeldbron
namen zijn: cput, pcput, walltime, mppt, pmppt, nice, procs, mppe, ncpus,
pncpus, nodect, srfs_assist, mta,..., mth. Voor een beschrijving hiervan
resourcenamen, zie pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributen(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).
Voorbeeld:
Int cpuAssn;
// terugkeer the # of cpu's momenteel toegewezen in
// the server
cpuAssn = ServerIntResAssignGet(server, "ncpus");
Maat: ServerSizeResAssignGet(Server s, Draad naam)
Retourneert de waarde naar de resource die is opgegeven in naam waaraan wordt toegewezen
lopende taken (Server resources_toegewezen.naam attribuut). Bel dit
functie voor resources met waarden van het type Grootte. Voorbeeldbron
namen zijn: bestand, mem, pmem, werkset, pf, ppf, srfs_tmp, srfs_wrk,
srfs_big, srfs_fast, sds, psds. Voor een beschrijving van deze bronnen
namen, zie pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributen(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).
Voorbeeld:
Maat: sdsAssn;
// terugkeer the bedragen of sds ruimte momenteel toegewezen
// in the server
sdsAssn = ServerSizeResAssignGet(server, "sds");
Draad ServerStringResAssignGet(Server s, Draad naam)
Retourneert de waarde naar de resource die is opgegeven in naam waaraan wordt toegewezen
lopende taken (Server resources_toegewezen.naam attribuut). Bel dit
functie voor bronnen met waarden van het type String. Steekproef
resourcenamen zijn: knooppunten, boog, neednodes. Voor een beschrijving hiervan
resourcenamen, zie pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributen(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).
Zet de C-knooppunt ServerNodesGet(Server s)
Retourneert de set knooppunten die worden beheerd door server-s. niet-ingestelde waarde: EMPTYSETCNODE.
OPMERKING: Normaal gesproken kunt u de volgende functies aanroepen voor de geretourneerde knooppunten
door deze aanroep: CNodeStateGet(), CNodePropertiesGet() en CNodeTypeGet().
Int ServerNodesQuery(Server s, Draad specificaties)
Stuurt een verzoek naar de opgegeven server om de beschikbaarheid op te vragen
middelen gespecificeerd in spec. Op dit moment de enige hulpbron
Toegestane specificatie is er een die betrekking heeft op "knooppunten" en kan van de
formaat "nodes", "nodes=" of "nodes= ". De resultaten van de zoekopdracht kunnen zijn
toegankelijk door de volgende functies aan te roepen: ServerNodesNumAvailGet(),
ServerNodesNumAllocGet(), ServerNodesNumRsvdGet(),
ServerNodesNumDownGet().
OPMERKING: Dit is een verpakking voor de pbs_resquery(3B) serverfunctie.
Winstwaarde:
SUCCES, FOUT
Int ServerNodesNumAvailGet(Server s)
Retourneert het aantal beschikbare knooppunten voor de knooppunten die worden beheerd door de opgegeven
server, of zoals weergegeven door de meest recente zoekopdracht gespecificeerd door
ServerNodesQuery(). Als de retourwaarde nul is, betekent dit dat
een aantal knooppunten die momenteel nodig zijn om aan de specificatie te voldoen
ServerNodesQuery() zijn momenteel niet beschikbaar. Het verzoek is misschien voldaan
op een later tijdstip. Als het resultaat negatief is, is er geen combinatie bekend
knooppunten kunnen aan de specificatie voldoen.
Int ServerNodesNumAllocGet(Server s)
Retourneert het aantal knooppunten dat is toegewezen aan de knooppunten die worden beheerd door de opgegeven knooppunten
server, of zoals weergegeven door de meest recente zoekopdracht gespecificeerd door
ServerNodesQuery().
Int ServerNodesNumRsvdGet(Server s)
Retourneert het aantal knooppunten dat is gereserveerd voor de knooppunten die worden beheerd door de opgegeven knooppunten
server, of zoals weergegeven door de meest recente zoekopdracht gespecificeerd door
ServerNodesQuery().
Int ServerNodesNumDownGet(Server s)
Retourneert het aantal knooppunten dat wordt beheerd door de opgegeven knooppunten
server, of zoals weergegeven door de meest recente zoekopdracht gespecificeerd door
ServerNodesQuery().
Int ServerNodesReserve(Server s, String spec.,Int residu)
Stuurt een verzoek naar de opgegeven server om de bronnen te reserveren
gespecificeerd in spec. Een waarde van 0 voor woonachtig betekent dat dit is voor het doen van a
nieuwe reservering. Anders vertegenwoordigt het nummer een bestaand nummer
(gedeeltelijke) reservering. Momenteel zijn hiervoor middelen gereserveerd woonachtig wil
worden vrijgegeven en de volledige reservering zal opnieuw worden geprobeerd. Bij de
de huidige tijd zijn de enige middelen die kunnen worden gespecificeerd
"knooppunten". Het moet worden gespecificeerd als knooppunten=specificatie WAAR
specificatie is wat een gebruiker opgeeft in de argumentenlijst van de optie -l
voor knooppunten, zie qsub (1B).
OPMERKING: Dit is een verpakking voor de pbs_resreserve(3B) serverfunctie.
Winstwaarde:
een referentienummer voor een succesvolle of gedeeltelijk succesvolle
reservering, of FOUT
Int ServerNodesRelease(Server s, Int residu)
Hierdoor worden de met het referentienummer gereserveerde bronnen vrijgegeven of vrijgegeven
gespecificeerd in woonachtig.
OPMERKING: Dit is een verpakking voor de pbs_rescrelease(3B) serverfunctie.
Winstwaarde:
SUCCES, of FOUT
(2) Que-gerelateerde functies:
Draad QueNaamGet( Dat dat )
Retourneert de naam van Que que. niet-ingestelde waarde: NULLSTR
Int QueTypeGet( Dat dat )
Retourneert het kenmerk wachtrij_type van Que que.
Retourwaarde: QTYPE_E (uitvoering), QTYPE_R (routing), -1 (niet ingesteld
waarde)
Int QueNumJobsGet( Dat dat )
Retourneert het aantal banen in Que que. uitschakelwaarde: 0
Int QueMaxRunJobsGet( Dat dat )
Retourneert het max_running-kenmerk van Que que. uitschakelwaarde: 0
Int QueMaxRunJobsPerGebruikerGet( Dat dat )
Retourneert het kenmerk max_user_run van Que que. uitschakelwaarde: 0
Int QueMaxRunJobsPerGroupGet( Dat dat )
Retourneert het kenmerk max_group_run van Que que. uitschakelwaarde: 0
Int QuePrioriteitGet( Dat dat )
Retourneert het prioriteitskenmerk van Que que. uitschakelwaarde: 0
Int QueStateGet( Dat dat )
Retourneert het gestarte attribuut van Que que - de selectie voor taakuitvoering
status van de wachtrij: SCHED_DISABLED, SCHED_ENABLED. niet-ingestelde waarde:
SCHED_DISABLED
Zet de Job QueJobsGet( Dat dat )
Retourneert de lijst met taken die zich momenteel in de wachtrij bevinden.
Int QueIntResAvailGet(Que q, Draad naam)
Retourneert de waarde naar de resource die is opgegeven in naam dat is beschikbaar voor
taken die vanaf deze q (Que bronnen_beschikbaar.naam attribuut).
Roep deze functie aan voor resources met waarden van het type Int.
Voorbeelden van resourcenamen zijn: cput, pcput, walltime, mppt, pmppt, nice,
procs, mppe, ncpus, pncpus, nodect, srfs_assist, mta,..., mth. Voor een
beschrijving van deze bronnamen, zie pbs_resources_irix5(7B),
pbs_resources_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), pbs_server_attributen(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).
Maat: QueSizeResAvailGet(Que q, Draad naam)
Retourneert de waarde naar de resource die is opgegeven in naam dat is beschikbaar voor
taken die vanaf deze q (Que bronnen_beschikbaar.naam attribuut).
Roep deze functie aan voor resources met waarden van het type Grootte.
Voorbeelden van resourcenamen zijn: file, mem, pmem,workingset, pf, ppf,
srfs_tmp, srfs_wrk, srfs_big, srfs_fast, sds, psds. Voor een beschrijving
van deze bronnamen, zie pbs_resources_irix5(7B),
pbs_resources_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), pbs_server_attributen(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).
Draad QueStringResAvailGet(Que q, Draad naam)
Retourneert de waarde naar de resource die is opgegeven in naam dat is beschikbaar voor
taken die vanaf deze q (Que bronnen_beschikbaar.naam attribuut).
Roep deze functie aan voor resources met waarden van het type String.
Voorbeelden van resourcenamen zijn: knooppunten, boog, neednodes. Voor een beschrijving
van deze bronnamen, zie pbs_resources_irix5(7B),
pbs_resources_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), pbs_server_attributen(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).
Int QueIntResAssignGet(Que q, Draad naam)
Retourneert de waarde naar de resource die is opgegeven in naam waaraan wordt toegewezen
taken die vanuit deze wachtrij worden uitgevoerd (Que resources_toegewezen.naam attribuut).
Roep deze functie aan voor resources met waarden van het type Int.
Voorbeelden van resourcenamen zijn: cput, pcput, walltime, mppt, pmppt, nice,
procs, mppe, ncpus, pncpus, nodect, srfs_assist, mta,..., mth. Voor een
beschrijving van deze bronnamen, zie pbs_resources_irix5(7B),
pbs_resources_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), pbs_server_attributen(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).
Maat: QueSizeResAssignGet(Que q, Draad naam)
Retourneert de waarde naar de resource die is opgegeven in naam waaraan wordt toegewezen
taken die vanaf deze q (Que resources_toegewezen.naam attribuut).
Roep deze functie aan voor resources met waarden van het type Grootte.
Voorbeelden van resourcenamen zijn: file, mem, pmem,workingset, pf, ppf,
srfs_tmp, srfs_wrk, srfs_big, srfs_fast, sds, psds. Voor een beschrijving
van deze bronnamen, zie pbs_resources_irix5(7B),
pbs_resources_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), pbs_server_attributen(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).
Draad QueStringResAssignGet(Que q, Draad naam)
Retourneert de waarde naar de resource die is opgegeven in naam waaraan wordt toegewezen
taken die vanaf deze q (Que resources_toegewezen.naam attribuut).
Roep deze functie aan voor resources met waarden van het type String.
Voorbeelden van resourcenamen zijn: knooppunten, boog, neednodes. Voor een beschrijving
van deze bronnamen, zie pbs_resources_irix5(7B),
pbs_resources_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), pbs_server_attributen(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).
(3) Werkgerelateerde functies
Draad TaakIdGet( Job baan )
Retourneert de taak-ID van de taak. niet-ingestelde waarde: NULLSTR
Draad TaaknaamGet( Job baan )
Retourneert het kenmerk Job_Name van de taaktaak. niet-ingestelde waarde: NULLSTR
Draad JobEigenaarNaamGet( Job baan )
Retourneert het kenmerk Job_Owner van de taaktaak. niet-ingestelde waarde: NULLSTR
Draad JobEffectiveUserNameGet( Job job)
Retourneert het euser-kenmerk van de taaktaak.
Draad JobEffectiveGroupNameGet(Job job)
Retourneert het egroup-kenmerk van de taaktaak. niet-ingestelde waarde: NULLSTR
Int JobStateGet ( Job baan )
Retourneert het kenmerk job_state van Job job.
Winstwaarde:
TRANSIT, IN WACHTRIJ, GEHOUDEN, WACHTEN, RUNNING, EXITING, -1 (uitgeschakeld
waarde)
Int TaakPrioriteitGet( Job baan )
Retourneert het prioriteitskenmerk van de taaktaak. uitschakelwaarde: 0
Int JobHerhaalVlagGet( Job baan )
Retourneert het heruitvoerbare attribuut van de taaktaak.
Retourwaarde: FALSE, TRUE, -1 (niet-ingestelde waarde)
Int JobInteractiveVlagGet( Job baan )
Retourneert een interactief attribuut van de taaktaak.
Retourwaarde: FALSE, TRUE. niet-ingestelde waarde: FALSE
Datum Tijd JobDateTimeCreatedGet(Job job)
Retourneert het ctime-kenmerk van Job job. niet-ingestelde waarde:
(0|0|0@-1:-1:-1)
Draad TaakE-mailAddrGet( Job baan )
Retourneert het kenmerk Mail_Users van de taaktaak. niet-ingestelde waarde: NULLSTR
Draad JobStageinFilesGet( Job baan )
Retourneert het stagein-kenmerk van Job job. niet-ingestelde waarde: NULLSTR
Draad JobStageoutBestandenGet( Job baan )
Retourneert het stageout-kenmerk van de taak. niet-ingestelde waarde: NULLSTR
Int JobIntResReqGet(Job baan, Draad naam)
Retourneert de waarde naar de resource die is opgegeven in naam zoals vereist door de
baan (baan Bron_Lijst.naam attribuut). Roep deze functie aan voor
resources met waarden van het type Int. Voorbeelden van resourcenamen
zijn: cput, pcput, walltime, mppt, pmppt, nice, procs, mppe, ncpus,
pncpus, nodect, srfs_assist, mta,..., mth. Voor een beschrijving hiervan
resourcenamen, zie pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributen(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).
Voorbeeld:
Int cputReq;
// Retourneren the put vereiste of the baan
cputReq = JobIntResReqGet(taak, "cput");
Maat: JobSizeResReqGet(Job baan, Draad naam)
Retourneert de waarde naar de resource die is opgegeven in naam zoals vereist door de
baan (baan Bron_Lijst.naam attribuut). Roep deze functie aan voor
bronnen met waarden van het type Grootte. Voorbeelden van resourcenamen
zijn: bestand, mem, pmem, werkset, pf, ppf, srfs_tmp, srfs_wrk,
srfs_big, srfs_fast, sds, psds. Voor een beschrijving van deze bronnen
namen, zie pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributen(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).
Voorbeeld:
Maat: memReq;
// Retourneren the geheugen vereiste of the baan
memReq = JobSizeResReqGet(taak, "me");
Draad JobStringResReqGet(Job baan, Draad naam)
Retourneert de waarde naar de resource die is opgegeven in naam zoals vereist door de
baan (baan Bron_Lijst.naam attribuut). Roep deze functie aan voor
bronnen met waarden van het type String. Voorbeelden van resourcenamen
zijn: knooppunten, boog, behoeftenknooppunten. Voor een beschrijving van deze bronnen
namen, zie pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributen(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).
Voorbeeld:
Draad knooppunten;
// Retourneren the knooppunten vereiste eigendom of
// the baan
knooppunten = JobStringResReqGet(taak, "knooppunten");
Int JobIntResUseGet(Job baan, Draad naam)
Retourneert de waarde naar de resource die is opgegeven in naam gebruikt door de baan (Job
bronnen_gebruikt.naam attribuut). Roep deze functie aan voor resources met
waarden van het type Int. Voorbeelden van resourcenamen zijn: cput, pcput,
walltime, mppt, pmppt, leuk, procs, mppe, ncpus, pncpus, nodect,
srfs_assist, mta,..., mnd. Voor een beschrijving van deze bronnamen,
zien pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributen(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).
Voorbeeld:
Int walltGebruik;
// Retourneren the bedragen of muurtijd gebruikt by
// the baan
walltGebruik = JobIntResUseGet(taak, "muurtijd");
Maat: JobSizeResUseGet(Job baan, Draad naam)
Retourneert de waarde naar de resource die is opgegeven in naam gebruikt door de baan (Job
bronnen_gebruikt.naam attribuut). Roep deze functie aan voor resources met
waarden van het type Grootte. Voorbeelden van resourcenamen zijn: file, mem,
pmem, werkset, pf, ppf, srfs_tmp, srfs_wrk, srfs_big, srfs_fast,
sds, psds. Zie voor een beschrijving van deze resourcenamen
pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributen(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).
Voorbeeld:
Maat: srfsGebruik;
// Retourneren the bedragen of srfs_snel gebruikt by
// the baan
srfsGebruik = JobSizeResUseGet(taak, "srfs_fast");
Draad JobStringResUseGet(Job baan, Draad naam)
Retourneert de waarde naar de resource die is opgegeven in naam gebruikt door de baan (Job
bronnen_gebruikt.naam attribuut). Roep deze functie aan voor resources met
waarden van het type String. Voorbeelden van resourcenamen zijn: knooppunten,
boog, behoefteknopen. Zie voor een beschrijving van deze resourcenamen
pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
pbs_server_attributen(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).
(4) CNode-gerelateerde functies
Zet de C-knooppunt AllNodesGet(ongeldig)
Retourneert een lijst met knooppunten die worden beheerd door de server die op de
lokale gastheer. Dit kunnen ook de knooppunten zijn die zijn opgegeven
in het plannerconfiguratiebestand waarvoor de plannerschrijver
wil dat het systeem periodiek controleert op informatie zoals status,
bezit, enzovoort. Zien pbs_sched_basl(8 miljard) voor een bespreking van
configuratie bestandsformaat.
LET OP: Deze functie moet van binnenuit worden aangeroepen schema_main() so
dat bij elke planningsiteratie het meest up-to-date is Zet de C-knooppunt
structuur wordt teruggegeven. Roep dit niet aan vanuit een opdrachtverklaring
bedoeld om een globale variabele te initialiseren, zoals de instructie alleen zal doen
een keer gebeld worden.
C-knooppunt AllNodesLocalHostGet(ongeldig)
Retourneert het CNode-object dat de lokale host vertegenwoordigt. Dit is een
eenvoudige functie om niet-geclusterde systemen op te roepen met slechts 1 CNode
bestaat. niet-ingestelde waarde: NOCNODE
LET OP: Deze functie moet van binnenuit worden aangeroepen schema_main() (of
vanuit functies aangeroepen door sched_main) zodat at every
planningsiteratie, de meest up-to-date C-knooppunt structuur is
teruggekeerd. Roep dit niet aan vanuit een opdrachtverklaring die daarvoor bedoeld is
initialiseer een globale variabele, aangezien de instructie alleen wordt aangeroepen
een keer.
Draad CNodeNaamGet(CNode knooppunt)
Retourneert de unieke (officiële) naam van het knooppunt (dat wil zeggen ResMom-hostnaam
in een 1 moeder/knooppuntmodel). Dit retourneert dezelfde string die was
opgegeven in het configuratiebestand. niet-ingestelde waarde: NULLSTR
Draad CNodeOsGet(CNode knooppunt)
Retourneert de besturingssysteemarchitectuur van het knooppunt (dwz "irix5", "sp2"). uitgeschakeld
waarde: NULLSTR
Int CNodeStateGet( C-knooppunt knooppunt )
Retourneert de status van het knooppunt.
Winstwaarde:
CNODE_OFFLINE, CNODE_DOWN, CNODE_FREE, CNODE_RESERVE,
CNODE_INUSE_EXCLUSIVE, CNODE_INUSE_SHARED, CNODE_UNKNOWN
Int CNodeTypeGet( C-knooppunt knooppunt )
Retourneert het type van het knooppunt.
Winstwaarde:
CNODE_TIMESHARED, CNODE_CLUSTER, CNODE_UNKNOWN
Draad CNodePropertiesGet(CNode knooppunt)
Retourneert de door komma's gescheiden lijst met andere namen waaronder het knooppunt bekend is
(eigenschappen, andere netwerknaam). Bijvoorbeeld,
"babbage.OpenPBS.org" is misschien de naam van het knooppunt, maar het kan ook bekend zijn
via "babbage1, babbage2". niet-ingestelde waarde: NULLSTR
Draad CNodeVendorGet(CNode knooppunt)
Retourneert de naam van de leverancier voor de hardware van de machine (bijv
"sgi", "ibm"). niet-ingestelde waarde: NULLSTR
Int CNodeNumCpusGet(CNode knooppunt)
Retourneert het aantal processors dat aan het knooppunt is gekoppeld. niet-ingestelde waarde:
-1
Maat: CNodeMemTotaalGet( C-knooppunt knooppunt, Draad type dan: )
Retourneert het totale geheugen van type dan: voor het knooppunt. type dan: is willekeurig
tekenreeks die de plannerschrijver in de planner definieert
configuratiebestand. uitschakelwaarde: -1b
Voorbeeld:
// krijgen totaal Fysiek geheugen
CNodeMemTotalGet(knooppunt, "echt")
// krijgen totaal virtueel geheugen
CNodeMemTotalGet(knooppunt, "virtueel")
Maat: CNodeMemAvailGet( C-knooppunt knooppunt, Draad type dan: )
Retourneert het beschikbare geheugen van type dan: voor het knooppunt. type dan: is willekeurig
tekenreeks die de plannerschrijver in de planner definieert
configuratiebestand. uitschakelwaarde: -1b
Voorbeeldoproepen zijn dus:
// krijgen Beschikbaar Fysiek geheugen
CNodeMemAvailGet(knooppunt, "echt")
// krijgen Beschikbaar virtueel geheugen
CNodeMemAvailGet(knooppunt, "virtueel")
Int CNodeIdletimeGet( C-knooppunt knooppunt )
Retourneert het aantal seconden waarin geen toetsaanslag of muisbeweging heeft plaatsgevonden
vindt plaats op elke terminal die op het knooppunt is aangesloten. uitschakelwaarde: -1
Vlotter CNodeLoadAveGet( C-knooppunt knooppunt )
Retourneert het belastinggemiddelde van het knooppunt voor alle CPU's. uitschakelwaarde: -1.0
Int CNodeCpuPercentIdleGet( C-knooppunt knooppunt )
Retourneert het percentage inactieve tijd dat alle processors van het knooppunt hebben
heb ervaren.
Int CNodeCpuPercentSysGet( C-knooppunt knooppunt )
Retourneert het tijdspercentage dat alle processors van het knooppunt hebben
besteed aan het uitvoeren van kernelcode.
Int CNodeCpuPercentUserGet( C-knooppunt knooppunt )
Retourneert het tijdspercentage dat alle processors van het knooppunt hebben
besteed aan het uitvoeren van de gebruikerscode.
Int CNodeCpuPercentGuestGet( C-knooppunt knooppunt )
Retourneert het tijdspercentage dat alle processors van het knooppunt hebben
besteed aan het draaien van een gastbesturingssysteem.
Int CNodeNetwerkBwGet( C-knooppunt knooppunt, Draad type dan: )
Retourneert de bandbreedte van het netwerk van het knooppunt type dan: in bytes/seconde.
type dan: wordt gedefinieerd door de plannerschrijver in de planner
configuratiebestand. uitschakelwaarde: -1
Enkele voorbeeldgesprekken zijn:
CNodeNetwerkBwGet( knooppunt, "hippi" );
CNodeNetwerkBwGet( knooppunt, "fddi" );
Maat: CNodeDiskSpaceTotalGet(CNode knooppunt, Draad naam)
Retourneert de totale ruimte van het knooppunt op de schijf geïdentificeerd door naam WAAR naam
is de apparaatnaam die willekeurig is gedefinieerd door de plannerschrijver in het
configuratiebestand van de planner. uitschakelwaarde: -1b
Voorbeeld:
CNodeDiskSpaceTotaalGet( knooppunt, "/kras2" );
Maat: CNodeDiskSpaceAvailGet(CNode knooppunt, Draad naam)
Retourneert de beschikbare ruimte van het knooppunt op de schijf geïdentificeerd door naam WAAR
naam wordt willekeurig gedefinieerd door de plannerschrijver in de planner
configuratiebestand. uitschakelwaarde: -1b
Voorbeeld:
CNodeDiskSpaceAvailGet( knooppunt, "/kras1" );
Maat: CNodeDiskSpaceReservedGet(CNode knooppunt, Draad naam)
Retourneert de gereserveerde schijfruimte van het knooppunt (gebruikersquota?), geïdentificeerd door
naam WAAR naam wordt willekeurig gedefinieerd door de plannerschrijver in het
configuratiebestand van de planner. uitschakelwaarde: -1b
Voorbeeld:
CNodeDiskSpaceReservedGet( knooppunt, "/kras1" );
Int CNodeDiskInBwGet( C-knooppunt knooppunt, Draad naam )
Retourneert de schrijfbandbreedte (bytes/sec) van de geïdentificeerde schijf van het knooppunt
by naam . uitschakelwaarde: -1
Voorbeeld:
CNodeDiskInBwGet( knooppunt, "/snel" );
Int CNodeDiskOutBwGet( C-knooppunt knooppunt, Draad naam )
Retourneert de leesbandbreedte (bytes/sec) van de schijf van het knooppunt geïdentificeerd door
naam . uitschakelwaarde: -1
Voorbeeld:
CNodeDiskOutBwGet( knooppunt, "/groot" );
Maat: CNodeSwapSpaceTotaalGet( C-knooppunt knooppunt, Draad naam )
Retourneert de totale ruimte van het knooppunt op de swap geïdentificeerd door naam WAAR naam
wordt willekeurig gedefinieerd door de plannerschrijver in de planner
configuratiebestand. uitschakelwaarde: -1b
Voorbeeld:
CNodeSwapSpaceTotaalGet( knooppunt, "primair" );
Maat: CNodeSwapSpaceAvailGet( C-knooppunt knooppunt, Draad naam )
Retourneert de beschikbare ruimte van het knooppunt op de swap geïdentificeerd door naam WAAR naam
is de apparaatnaam die willekeurig is gedefinieerd door de plannerschrijver in het
configuratiebestand van de planner. uitschakelwaarde: -1b
Voorbeeld:
CNodeSwapSpaceAvailGet( knooppunt, "ondergeschikt" );
Int CNodeSwapInBwGet( C-knooppunt knooppunt, Draad naam )
Retourneert de swapin-snelheid van het swap-apparaat van het knooppunt, geïdentificeerd door naam.
Voorbeeld:
CNodeSwapInBwGet(knooppunt, "ondergeschikt");
Int CNodeSwapOutBwGet( C-knooppunt knooppunt, Draad naam )
Retourneert de swapout-snelheid van het swap-apparaat van het knooppunt, geïdentificeerd door
naam. uitschakelwaarde: -1
Voorbeeld:
CNodeSwapOutBwGet(knooppunt, "primaire");
Maat: CNodeTapeSpaceTotaalGet( C-knooppunt knooppunt, Draad naam )
Retourneert de totale ruimte op de tape van het knooppunt, geïdentificeerd door naam WAAR naam
wordt willekeurig gedefinieerd door de plannerschrijver in de planner
configuratiebestand. uitschakelwaarde: -1b
Voorbeeld:
CNodeTapeSpaceTotalGet(knooppunt, "4 mm");
Maat: CNodeTapeSpaceAvailGet( C-knooppunt knooppunt, Draad naam )
Retourneert de beschikbare ruimte van het knooppunt op de tape, geïdentificeerd door naam WAAR
naam wordt willekeurig gedefinieerd door de plannerschrijver in de planner
configuratiebestand. uitschakelwaarde: -1b
Voorbeeld:
CNodeTapeSpaceAvailGet(knooppunt, "8 mm");
Int CNodeTapeInBwGet( C-knooppunt knooppunt, Draad naam )
Retourneert de schrijfbandbreedte (bytes/sec) van de geïdentificeerde tape van het knooppunt
by naam . uitschakelwaarde: -1
Voorbeeld:
CNodeTapeInBwGet( knooppunt, "4mm" );
Int CNodeTapeOutBwGet( C-knooppunt knooppunt, Draad naam )
Retourneert de leesbandbreedte (bytes/sec) van de geïdentificeerde tape van het knooppunt
by naam . uitschakelwaarde: -1
Voorbeeld:
CNodeTapeOutBwGet( knooppunt, "8mm" );
Maat: CNodeSrfsRuimteTotaalGet( C-knooppunt knooppunt, Draad naam )
Retourneert de totale ruimte van het knooppunt op het srfs-apparaat geïdentificeerd door naam
WAAR naam wordt willekeurig gedefinieerd door de plannerschrijver in het
configuratiebestand van de planner. uitschakelwaarde: -1b
Voorbeeld:
CNodeSrfsSpaceTotalGet(knooppunt, "/snel");
Maat: CNodeSrfsSpaceAvailGet( C-knooppunt knooppunt, Draad naam )
Retourneert de beschikbare ruimte van het knooppunt op het srfs-apparaat geïdentificeerd door naam
WAAR naam wordt in sommige gevallen willekeurig gedefinieerd door de planner-schrijver
configuratiebestand. uitschakelwaarde: -1b
Voorbeeld:
CNodeSrfsSpaceAvailGet( knooppunt, "/groot" );
Maat: CNodeSrfsSpaceReservedGet(CNode knooppunt, Draad naam)
Retourneert de totale hoeveelheid gereserveerde ruimte van het knooppunt op het srfs-apparaat
geïdentificeerd door naam WAAR naam wordt willekeurig gedefinieerd door de planner
writer in het configuratiebestand van de planner. uitschakelwaarde: -1b
Voorbeeld:
CNodeSrfsSpaceReservedGet( knooppunt, "/snel" );
Int CNodeSrfsInBwGet( C-knooppunt knooppunt, Draad naam )
Retourneert de schrijfbandbreedte (bytes/sec) van het srfs-apparaat van het knooppunt
geïdentificeerd door naam . uitschakelwaarde: -1
Voorbeeld:
CNodeSrfsInBwGet(knooppunt, "/fast" );
Int CNodeSrfsOutBwGet( C-knooppunt knooppunt, Draad naam )
Retourneert de leesbandbreedte (bytes/sec) van het srfs-apparaat van het knooppunt
geïdentificeerd door naam . uitschakelwaarde: -1
Voorbeeld:
CNodeSrfsOutBwGet(knooppunt, "/big" );
(5) Diverse functies
Datum Tijd datumtijdGet()
krijgt de huidige datum/tijd.
Int datetimeToSecs(DatumTijd dt)
retourneert het aantal seconden sinds tijdperk (begin van UNIX-tijd -
00:00:00, 1 januari 1970) voor de opgegeven datum/tijd dt.
Int JobActie( Job baan, Int actie, Draad param )
voert actie on baan met een param gespecificeerd afhankelijk van de
actie. actie kan zijn: SYNCRUN, ASYNCRUN, VERWIJDEREN, HERHALEN, HOLD,
RELEASE, SIGNAL, MODIFYATTR, MODIFYRES waarbij:
Actie Beschrijving
=============== ==========================
SYNCRUN loopt the baan synchroon,
betekenis the Bellen naar
TaakActie() wil Slechts
terugkeer wanneer the baan heeft
gestart lopend or wanneer
an fout heeft geweest
tegengekomen.
Param waarde:
naam of gastheer(en) naar lopen
baan onder.
ASYNCRUN loopt the baan asynchroon,
betekenis the Bellen naar
TaakActie() wil terugkeer
per direct as binnenkort as
the lopen te vragen is
gevalideerd by the PBS server,
en niet nodig wanneer
the baan heeft gestart
uitvoering.
Param waarde:
naam of gastheer(en) naar lopen
baan onder.
VERWIJDEREN verwijdert the baan.
Param waarde:
"delvertraging=<# of seconden>"
- vertraging # of seconden
tussen the verzending
of SIGTERM en SIGKILL
naar the baan vaardigheden
het krijgen van geschrapt.
HERUN herhalingen the lopend baan,
welke gaat terminating
the Sessie leider of the
baan en terugkerende the baan
naar the de wachtrij staat.
HOLD plaatsen een or meer houdt
on the baan.
Param waarde:
"u", "O", "S", "u", "os",
"uos"
- type dan: of houdt naar plaats
on functie: gebruiker), ander),
systeem).
RELEASE verwijdert or releases
houdt geplaatst on banen.
Param waarde:
"u", "O", "S", "u", "os",
"uos"
- type dan: of houdt naar verwijderen
van functie: gebruiker), ander),
systeem).
SIGNAAL verzendt a signaal naar the
uitvoeren baan.
Param waarde:
"HUP", "SIGHUP",...
WIJZIGATTR wijzigt the gespecificeerd
attribuut of the baan naar
the gegeven waarde, wanneer
the kenmerk_naam is
!= "Bronnenlijst" or
"bronnen_gebruikt".
Param waarde:
"attrib_name=waarde"
WIJZIGT wijzigt the baan
Resource_Lijst
attribuut gegeven the
hernaam en the
res_waarde:
Resource_List.res_name=
res_waarde
Param waarde:
"res_name=res_val"
param waarde hangt af van de actie. Geef NULLSTR op als er geen waarde voor is
deze parameter is gewenst.
Retourwaarde: SUCCES of FAIL.
OPMERKING: Niet herkend actie wordt genegeerd.
Voorbeeld:
// lopen Job j synchroon
JobActie(j, SYNCRUN, NULLSTR);
// lopen Job j asynchroon on gastheer "db"
JobActie(j, ASYNCRUN, "db");
// verwijderen Job j
JobActie(j, VERWIJDEREN, NULLSTR);
// verwijderen Job j met a vertraging of 5 secs
// tussen the verzending of SIGTERM en
// SIGKILL
JobActie(j, VERWIJDEREN, "delvertraging=5");
// herhaling Job j
JobActie(j, OPNIEUW, NULLSTR);
// plaats a gebruiker) houden on Job j
JobActie(j, UITSTEL, "u");
// plaats an ander) houden on Job j
JobActie(j, UITSTEL, "O");
// plaats a systeem) houden on Job j
JobActie(j, UITSTEL, "S");
// plaats a verzuim houden (U) on Job j
JobActie(j, UITSTEL, NULLSTR);
// los gebruiker) houden van Job j
JobActie(j, UITGAVE, "u");
// los ander) houden van Job j
JobActie(j, UITGAVE, "O");
// los systeem) houden van Job j
JobActie(j, UITGAVE, "S");
// los verzuim houden (U) van Job j
JobActie(j, UITGAVE, NULLSTR);
// nieuwsbrieven ZUCHT signaal naar Job j
JobActie(j, SIGNAAL, "SIGHUP");
// -update the commentaar attribuut of Job
// j naar "a bericht".
// De param formaat is: attribuutnaam=nieuwe_waarde
// Raadplegen PBS documentatie voor a lijst of baan
// attribuut namen uit die blikje be gespecificeerd.
JobActie(j, WIJZIGATTR, "commentaar=een bericht");
// -update the Resource_List.cput attribuut of Job
// j naar 3600 seconden.
// De param formaat is: bron_naam=nieuwe_waarde
// Bekijk pbs_bronnen* man pagina voor a lijst of
// bron_namen uit die blikje be gespecificeerd.
JobActie(j, WIJZIGT, "cput=3600");
QueJobFind(Que que, leuk Int funk, Int reanimatie,Int waarde);
QueJobFind(Que que, leuk Draad funk, Int reanimatie, String waarde);
QueJobFind(Que que, leuk Datum Tijd funk, Int cpr, DatumTijd waarde);
QueJobFind(Que que, leuk Maat: funk, Int cpr, maat waarde);
WAAR cpr is een van: OP_EQ, OP_NEQ, OP_LE, OP_LT, OP_GE, OP_GT. func
is een functie waarvan het ENIGE argument van het type Taak is. Job is de terugkeer
type.
Beschrijving: Van toepassing func voor elke baan in dat , en de eerste terugsturen
baan die voldoet aan de logische vergelijking: functie(baan) cpr waarde
Voorbeeld:
Maat: JobVirtualMemAvailGet(Job job)
{
Maat: maat;
sz = JobSizeResReqGet(taak, "me");
retour(sz);
}
Int JobWallTimeReqGet(Job job)
{
Int muur;
muur = JobIntResReqGet(taak, "muurtijd");
retour(muur);
}
Int JobCpuTimeUsedGet(Job job)
{
Int invoer;
put = JobIntResUseGet(taak, "cput");
retour(cput);
}
Dat findQueByName(Set Dat wachtrijen, Draad qnaam)
{
Dat q;
foreach (q in wachtrijen) {
als( QueNaamGet(q) EQ qnaam ) {
retour(q);
}
}
retour(NOQUE);
}
schema_main()
{
Server s;
Dat dat;
Zet de Dat vierkante;
// krijgen lokaal server
s = AllServersLocalHostGet();
// krijgen the rok of the Server s
sq = ServerQueuesGet(s);
// krijgen the queue genoemd "snel" van the
// lokaal server
dat = zoekQueByName( vierkante, "snel" );
// Find the 1 baan waarvan muurtijd vereiste
// is == 300:
QueJobFind(que, JobWallTimeReqGet, OP_EQ, 300);
// Find the 1 baan waarvan email adres naar
// de hoogte over baan activiteit != "bayucan":
QueJobFind(que, VacatureE-mailadresAddrGet, OP_NEQ,
"bayucan");
// Find the 1 baan uit die was aangemaakt na
// or on 3 / 3 / 1997:
QueJobFind(que, TaakDatumTijdGecreëerdGet, OP_GE,
(3|3|1997));
// Find the 1 baan uit die was aangemaakt na
// 3:3:44:
QueJobFind(que, TaakDatumTijdGecreëerdGet, OP_GT,
(3:3:44));
// Find the 1 baan uit die was aangemaakt na
// 3:3:44 on 3 / 3 / 1997:
QueJobFind(que, TaakDatumTijdGecreëerdGet, OP_GT,
(3|3|1997@3:3:44));
// Find the 1 baan waarvan cpu tijd gebruikt < 1600:
QueJobFind(que, JobCpuTimeUsedGet, OP_LT, 1600);
// Find the 1 baan waarvan virtueel geheugen
// vereiste <= 300mb:
QueJobFind(que, BaanVirtueelMemBeschikbaarGet, OP_LE,
300mb);
}
Job QueJobFind( Dat que, Leuk Int leuk, Int reanimatie)
Job QueJobFind( Dat que, Leuk Draad leuk, Int reanimatie)
Job QueJobFind( Dat que, Leuk Datum Tijd leuk, Int reanimatie)
Job QueJobFind( Dat que, Leuk Maat: leuk, Int reanimatie)
WAAR cpr kan een van de volgende zijn: OP_MAX, OP_MIN, func is een
functie waarvan het enige argument van het type Taak is.
Beschrijving: Retourneert de taak met de gevonden maximum- of minimumwaarde
functie(baan) zoals het op elke baan wordt toegepast dat .
Voorbeeld:
Int JobCpuTimeReqGet(Job job)
{
Int invoer;
put = JobIntResReqGet(taak, "cput");
retour(cput);
}
schema_main()
{
Dat dat;
Job functie;
// Find the Job met the hoogst cpu tijd
// vereiste:
baan = QueJobFind(que, JobCpuTimeReqGet, OP_MAX);
// Find the Job met the minimum cpu tijd
// vereiste:
baan = QueJobFind(que, JobCpuTimeReqGet, OP_MIN);
}
Dat QueFilter (Que que, leuk Int funk, Int reanimatie,Int waarde)
Dat QueFilter (Que que, leuk Draad funk, Int reanimatie, String waarde)
Dat QueFilter (Que que, leuk Datum Tijd funk, Int cpr, Datum waarde)
Dat QueFilter (Que que, leuk Maat: funk, Int cpr, maat waarde)
WAAR cpr kan een van de volgende zijn: OP_EQ, OP_NEQ, OP_LE, OP_LT,
OP_GE, OP_GT, func is een functie waarvan het enige argument van het type Taak is.
Beschrijving: Van toepassing func voor elke baan in dat , en retourneert een nieuwe wachtrij
met alle taken die aan de vergelijkingsvoorwaarde voldoen:
functie(baan) cpr waarde
Voorbeeld:
Int JobWallTimeReqGet(Job job)
{
Int muur;
muur = JobIntResReqGet(taak, "muurtijd");
retour(muur);
}
schema_main()
{
Dat dat;
Dat nieuwq;
// Retourneren a nieuwe dat bevattende allen vacatures in "dat"
// met a muurtijd vereiste == 300:
nieuwq = QueFilter(que, JobWallTimeReqGet, OP_EQ, 300);
// Retourneren a nieuwe dat bevattende allen vacatures in "dat"
// met an email adres != "bayucan":
nieuwq = QueFilter(que, VacatureE-mailadresAddrGet, OP_NEQ, "bayucan");
// Retourneren a nieuwe dat bevattende allen vacatures in "dat"
// aangemaakt na or on 3 / 3 / 1997:
nieuwq = QueFilter(que, TaakDatumTijdGecreëerdGet, OP_GE,
(3|3|1997));
// Retourneren a nieuwe dat bevattende allen vacatures in "dat"
// aangemaakt na 3:3:44:
nieuwq = QueFilter(que, TaakDatumTijdGecreëerdGet, OP_GT,
(3:3:44));
// Retourneren a nieuwe dat bevattende allen vacatures in "dat"
// aangemaakt na 3:3:44 on 3 / 3 / 1997:
nieuwq = QueFilter(que, TaakDatumTijdGecreëerdGet, OP_GT,
(3|3|1997@3:3:44));
// NOTITIE: De origineel "dat" is niet gewijzigd
// dan ook.
}
Int Sorteren(Instellen Job s, Leuk Int key, Int order)
Int Sorteren(Instellen Job s, Leuk Draad key, Int order)
Int Sorteren(Instellen Job s, Leuk Vlotter key, Int order)
Int Sorteren(Instellen Job s, Leuk Datum Tijd key, Int order)
Int Sorteren(Instellen Job s, Leuk Maat: key, Int order)
WAAR s de reeks taken die u wilt sorteren. sleutel is de sorteersleutel die a is
functie waarvan het enige argument van het type Taak is, bestellen is de sortering
volgorde: ASC, DESC.
Beschrijving: sorteert de elementen van s , in ASCending of
AFDAALENDE volgorde van waarden die zijn geretourneerd door de sleutel Functioneert als
toegepast op elk lid van de reeks banen. De s voorwerp wordt gewijzigd
met deze oproep. Dit retourneert SUCCES of FOUT, afhankelijk van de uitkomst van
het soort.
Voorbeelden:
Maat: JobMemReqGet(Job job)
{
Maat: mij;
Lid = JobSizeResReqGet(taak, "me");
terugkeer(mij);
}
schema_main()
{
Server meester;
Zet de Job banen;
Int bestellen;
// krijgen lokaal server
meester = AllServersLocalHostGet();
vacatures = ServerJobsGet(meester);
Sorteren(banen, TaakPrioriteitKrijgen, ASC);
Sorteren(banen, JobIdGet, DESC);
bestellen = ASC;
Sorteren(banen, TaakDatumTijdGecreëerdGet, volgorde);
bestellen = BESCHRIJVING;
Sorteren(banen, JobMemReqGet, volgorde);
}
Int Sorteren(Instellen Dat s, Leuk Int key, Int order)
Int Sorteren(Instellen Dat s, Leuk Draad key, Int order)
Int Sorteren(Instellen Dat s, Leuk Vlotter key, Int order)
Int Sorteren(Instellen Dat s, Leuk Datum Tijd key, Int order)
Int Sorteren(Instellen Dat s, Leuk Maat: key, Int order)
WAAR s de reeks wachtrijen die moeten worden gesorteerd. sleutel is de sorteersleutel die a is
functie waarvan het enige argument van het Que-type is, bestellen is de sortering
volgorde: ASC, DESC.
Beschrijving: sorteert de elementen van s , in ASCending of
AFDAALENDE volgorde van waarden die zijn geretourneerd door de sleutel Functioneert als
toegepast op elk lid van de reeks wachtrijen. De s voorwerp is
gewijzigd met deze oproep. Dit retourneert SUCCES of FOUT, afhankelijk van
uitkomst van dit soort.
Voorbeelden:
Maat: QueMemAvailGet(Que dat)
{
Maat: mij;
Lid = QueSizeResAvailGet(que, "me");
terugkeer(mij);
}
schema_main()
{
Server meester;
Zet de Dat vragen;
Int bestellen;
// krijgen lokaal server
meester = AllServersLocalHostGet();
vragen = ServerwachtrijenGet(meester);
Sorteer(vragen, WachtrijPrioriteitGet, ASC);
Sorteer(vragen, QueNaamGet, ASC);
bestellen = BESCHRIJVING;
Sorteer(vragen, QueMemBeschikbaarGet, volgorde);
}
Int Sorteren(Instellen Server s, Leuk Int key, Int order)
Int Sorteren(Instellen Server s, Leuk Draad key, Int order)
Int Sorteren(Instellen Server s, Leuk Vlotter key, Int order)
Int Sorteren(Instellen Server s, Leuk Datum Tijd key, Int order)
Int Sorteren(Instellen Server s, Leuk Maat: key, Int order)
WAAR s de set servers die moet worden gesorteerd. sleutel is de sorteersleutel die is
een functie waarvan het enige argument van het servertype is, bestellen is de
sorteervolgorde: ASC, DESC.
Beschrijving: sorteert de elementen van s , in ASCending of
AFDAALENDE volgorde van waarden die zijn geretourneerd door de sleutel Functioneert als
toegepast op elk lid van de set servers. De s voorwerp is
gewijzigd met deze oproep. Dit retourneert SUCCES of FOUT, afhankelijk van
uitkomst van dit soort.
Voorbeelden:
Maat: ServerMemAvailGet(Server serv)
{
Maat: mij;
Lid = ServerSizeResAvailGet(serv, "me");
terugkeer(mij);
}
schema_main()
{
Zet de Server server;
Int bestellen;
Int ret;
server = AllServersGet();
roten = Sorteren(sserver, ServerMaxRunJobsGet, ASC);
Sorteren(sserver, ServerInetAddrGet, ASC);
bestellen = BESCHRIJVING;
Sorteren(sserver, ServerMemBeschikbaarGet, volgorde);
}
Int Sorteren(Instellen C-knooppunt s, Leuk Int key, Int order)
Int Sorteren(Instellen C-knooppunt s, Leuk Draad key, Int order)
Int Sorteren(Instellen C-knooppunt s, Leuk Vlotter key, Int order)
Int Sorteren(Instellen C-knooppunt s, Leuk Datum Tijd key, Int order)
Int Sorteren(Instellen C-knooppunt s, Leuk Maat: key, Int order)
WAAR s de reeks knooppunten die moeten worden gesorteerd. sleutel is de sorteersleutel die a is
functie waarvan het enige argument van het type CNode is, bestellen is de sortering
volgorde: ASC, DESC.
Beschrijving: sorteert de elementen van s , in ASCending of
AFDAALENDE volgorde van waarden die zijn geretourneerd door de sleutel Functioneert als
toegepast op elk lid van de reeks knooppunten. De s voorwerp is
gewijzigd met deze oproep. Dit retourneert SUCCES of FOUT, afhankelijk van
uitkomst van dit soort.
Voorbeelden:
Maat: CNodeMijnMemAvailGet(CNode cn)
{
Maat: mij;
Lid = CNodeMemAvailGet(cn, "virtueel");
terugkeer(mij);
}
schema_main()
{
Zet de C-knooppunt snode;
Int bestellen;
scnode = AllNodesGet();
Sorteren(snode, CNodeIdletimeGet, ASC);
Sorteren(snode, CNodenaamGet, ASC);
bestellen = BESCHRIJVING;
Sorteren(snode, CNodeMijnMemBeschikbaarGet, volgorde);
}
CNode..Get() FUNCTIES
De retourwaarden van de CNode..Get()-functies die in de vorige sectie zijn besproken, zijn
verkregen door het verzenden van resourcequery's naar de MOM van de CNode bij elke planningsiteratie.
Bijvoorbeeld CNodeLoadAveGet(knooppunt) zal de waarde retourneren die van sommigen is verkregen
resource> query (dit kan de string "loadave" zijn) zoals verzonden naar de MOM van het knooppunt. De
" -> CNode..Get()"-toewijzingen worden intern tot stand gebracht, maar dat kan ook zo zijn
gewijzigde of meer toewijzingen kunnen worden toegevoegd via het plannerconfiguratiebestand. De configuratie
dossier wordt besproken pbs_sched_basl(8B).
Reeds vastgestelde toewijzingen worden hieronder gegeven:
Voor alle architecturen:
CNode..Get() daadwerkelijk Bellen gastheer hulpbron
======================== =============
CNodeOsGet(knooppunt) boog
CNodeLoadAveGet(knooppunt) laden
CNodeIdletimeGet(knooppunt) inactieve tijd
Gebruik basl2cB online met behulp van onworks.net-services