IngleseFranceseSpagnolo

Ad


Favicon di OnWorks

basl2cB - Online nel cloud

Esegui basl2cB nel provider di hosting gratuito OnWorks su Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS

Questo è il comando basl2cB che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS

PROGRAMMA:

NOME


basl2c - converte un codice BASL (BAtch Scheduling Language) in un codice di pianificazione C.

SINOSSI


basl2c [-d] [-l lexerDebugFile] [-p parserDebugFile] [-y symtabDebugFile] [-s
semanticDebugFile] [-g codegenDebugFile] [-c cFile] baslFile

DESCRIZIONE


basl2c è il compilatore da BASL a C che produce un codice intermedio che può essere inserito in a
compilatore C regolare e collegato con le librerie PBS per produrre l'eseguibile dello scheduler.
Basl2c prende come input a baslFile, che è un programma scritto in BAtch Scheduling
Lingua, contenente il codice di schedulazione principale. Basl2c quindi converte i costrutti BASL
nel file in istruzioni C e allega anche codice aggiuntivo per produrre il PBS
codice sorgente dello scheduler. Per impostazione predefinita, il codice C risultante viene scritto nel file
pbs_sched.c.

Il percorso completo del file C risultante è quello che deve essere specificato nel SCHD_CODICE
variabile in local.mk prima di compilare lo scheduler BASL per produrre il pbs_sched
eseguibile.

VERSIONI


-d Stampa ulteriori messaggi di debug nel lexer (vedi opzione -l), parser (vedi -p
opzione), tabella dei simboli (vedi opzione -y), analizzatore semantico (vedi opzione -s) e codice
generatore (vedi opzione -g).

-l FileDebuglex
lexerDebugFile è il nome di un file da scrivere nei messaggi di debug generati
durante la scansione dei token.

-p parserFileDebug
parserDebugFile è il nome di un file da scrivere nei messaggi di debug generati
mettendo insieme i token in modo utilizzabile.

-y file symtabDebug
symtabDebugFile è il nome di un file da scrivere nei messaggi di debug relativi a
la tabella dei simboli

-s FileDebugsemantico
semanticDebugFile è il nome di un file da scrivere nei messaggi di debug
generato durante il controllo per assicurarsi che le variabili e gli operatori siano utilizzati in a
modo coerente.

-g filecodegenDebug
codegenDebugFile è il nome di un file da scrivere nei messaggi di debug generati
durante la conversione di istruzioni BASL in istruzioni C.

-c cFile
cFile è il nome di un file in cui è scritto il codice C generato.

PRINCIPALI STRUTTURA


La struttura di base di un codice schedulatore scritto in BASL è la seguente:
zero or Scopri di più FUNZIONI definizioni
zero or Scopri di più globale VARIABILE DICHIARAZIONI
zero or Scopri di più assegnazione dichiarazioni (a inizializzazione globale variabili)
programma_principale()
{
prima or Scopri di più VARIABILE DICHIARAZIONI

zero or Scopri di più DICHIARAZIONI
}

Per esempio,
% gatto sched.basl
Int somma(Int a, Int b)
{
Int s;
s = a + b;
ritorna);
}
Int globo;
programma_principale()
{
Int c;

a = 3;
b = 4;
c = somma (a, B);
stampa(c);
glob = 5;
print(globo);
}

programma_principale() è la funzione che viene chiamata ad ogni iterazione di schedulazione.

FUNZIONI


Per definire una funzione che può essere chiamata in funzioni successive, la sintassi è:

Tipo di ritorno nome-funzione ( TIPODATI1 IDENTIFICATORE1,
TIPODATI2 IDENTIFICATORE2, ... )
{
prima or Scopri di più VARIABILE DICHIARAZIONI

zero or Scopri di più DICHIARAZIONI
}

Per esempio,
vuoto printStuff(Giornodellasettimana giù, Appuntamento t, Corda forza,
Taglia tg, CNodo cmq)
{
stampa(basso);
stampa(t);
stampa(str);
stampa(sz);
stampa(cn);
}

Funzione valida Tipo di ritorno sono: Void, Int, Float, Dayofweek, DateTime, String, Size,
Server, Que, Job, CNode, Imposta server, Imposta Que, Imposta Job, Imposta CNode.

Tipi di dati validi ( TIPO DATI1, TIPO DATI2, ... ) per gli identificatori dei parametri sono: Int,
Float, Dayofweek, DateTime, String, Size, Server, Que, Job, CNode, Set Server, Set Que,
Imposta lavoro, Imposta CNode, Intervallo int, Intervallo mobile, Giorno della settimana intervallo, Data e ora dell'intervallo, Dimensioni dell'intervallo,
Fun Int, Fun Float, Fun Void, Fun Dayofweek, Fun DateTime, Fun String, Fun Size, Fun
Server, Fun Set, Fun Job, Fun CNode, Fun Set Server, Fun Set Que, Fun Set Job, Fun Set
CNode. Questi tipi di dati verranno discussi nel prossimo argomento.

Le funzioni sono invocate dal loro nome e dai loro argomenti come in:

stampaRoba( LUN, (5|1|1997@14:32:00), "programmato" inizia",
30 GB, nodo );

basl2c aggiungerà effettivamente un prefisso "basl_" al nome della funzione fornito dallo scheduler
writer per ridurre al minimo la possibilità di collisione di nomi, che può verificarsi quando il codice C risultante è
collegato con le librerie PBS, BASL. Ad esempio, se guardi il codice C generato per
stampa Roba, vedresti,

basl_printStuff( MON, (5|1|1997@14:32:00),
"sched inizia", ​​30gb, nodo);

Come in C, tutte le chiamate di funzione devono essere state precedentemente definite. Il compilatore BASL lo farà
controlla per assicurarti che gli argomenti nella chiamata alla funzione corrispondano esattamente (in termini di
type) con i parametri nella definizione della funzione.

Esistono due tipi di funzioni in BASL: funzioni definite dall'utente e funzioni predefinite.
Le funzioni definite dall'utente sono quelle per le quali lo scrittore dello scheduler ha fornito una definizione,
mentre le funzioni predefinite sono quelle che possono essere chiamate immediatamente senza bisogno di
definendolo. Per un elenco delle funzioni predefinite, vedere la sezione su PREDEFINITO FUNZIONI .

VARIABILE DICHIARAZIONI


Come in C, tutte le variabili in un codice BASL devono essere dichiarate esplicitamente prima dell'uso. Quelli
le variabili dichiarate al di fuori di qualsiasi funzione sono indicate come variabili globali, mentre
le variabili dichiarate all'interno di un corpo di funzione sono chiamate variabili locali. Globale
le variabili sono utilizzabili ovunque all'interno del codice BASL, mentre le variabili locali sono leggibili
solo all'interno della funzione da cui sono stati dichiarati.

La sintassi di una dichiarazione di variabile è:

TIPO DI DATI IDENTIFICATORE ;

where TIPO DI DATI può essere: Int, Float, Dayofweek, DateTime, String, Size, Server, Que, Job,
CNode, Set Server, Set Que, Set Job, Set CNode, Range Int, Range Float, Range Dayofweek,
Data e ora dell'intervallo, dimensione dell'intervallo.

DATA TIPO


vuoto utilizzato per le funzioni che non restituiscono un valore.

Int firmato, numeri interi dati in base 10.

Costanti del campione:
5, +1, -3, SUCCESSO (=1), FALLITO (=0), VERO (=1), FALSO (=0)

galleggiante numeri reali che sono rappresentati come doppi nel codice C tradotto.
Costanti campione: 4.3, +1.2, -2.6

Giorno della settimana
valori costanti: DOM, LUN, MAR, MER, GIO, VEN, SAB, rappresentati internamente come
costanti con valori interi con SUN=0, MON=1 e così via.

Appuntamento
specificare in uno dei 3 formati:

[1] (m|d|y) dove 1 <= m <= 12, 1 <= d <= 31, 0 <= y, es. (4|4|1997);

[2] (hh:mm:ss) dove 0 <= hh <= 23, 0 <= mm <= 59, 0 <= ss <= 61, es.
(12:01:00);

[3] (m|d|y@hh:mm:ss), ex. (4|4|1997@12:01:00)
Durante il confronto di date/orari, l'ora "adesso" viene sostituita se l'ora
la parte non è data (formato [1]); la data "ora" viene sostituita se il
la parte della data non è indicata (formato [2]). Inoltre, la parte dell'intero anno deve
essere dato (cioè 1997 invece di 97) in date per evitare ambiguità.

Corda Una stringa è racchiusa tra virgolette (") e può contenere qualsiasi cosa tranne un'altra
citazione, una nuova riga e parentesi sinistra e destra.
Costanti di esempio: "una stringa di esempio", NULLSTR

Taglia formato: dove suffisso è un moltiplicatore della forma:
:

moltiplicatore unità (byte or parole)
=================== =====================
k,m,sol,t,p,K,M,SOL,T,P b,B,w,W

dove 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 e la dimensione della parola w=W è definita localmente (cioè 4
byte in una macchina a 32 bit).

Quando si opera su operandi di 2 dimensioni con suffissi diversi, il suffisso di
il "più basso" dei due sarà il suffisso risultante. Per esempio,
10 MB + 10 GB = 10250 MB
Costanti di campionamento: -1b, 2w, 1kb, 2mw, +3gb, 4tw, 6Pb

Escursione Int

formato: (valore Int basso, valore Int alto)
dove valore Int basso <= valore Int alto. Costante campionaria: (1,3)

Escursione galleggiante

formato: (valore Float basso, valore Float alto)
dove valore basso <= valore alto. Costante del campione: (2.3, 4.6)

Escursione Giorno della settimana

formato: (giorno prima, giorno dopo)
dove il giorno precedente <= il giorno successivo. Costante di campionamento: (MER, VEN)

Escursione Appuntamento

formato: (data/ora precedente, data/ora successiva)
dove data/ora precedente <= data/ora successiva.
NOTA: se l'intervallo contiene solo porzioni di tempo e l'ora precedente "appare" a
essere > ora successiva come in "((18:0:0), (6:0:0))", quindi durante data/ora
confronti, l'ora "dopo" sarà regolata di un giorno in modo che sia
Assomiglia a: "( ( @18:0:0), ( @6:0:0) )"

Costanti del campione:
((4|4|1997), (4|10|1997)), ((12:01:00), (12:30:00)), ((4|4|1997@12:01:00),
(4|10|1997@12:30:00))

Escursione Taglia

formato: (taglia bassa, taglia alta)
dove taglia bassa <= taglia alta. Costanti di esempio: (23 GB, 50 GB)

server Esegue il mapping direttamente all'oggetto server PBS. UN server gestisce uno o più Che oggetti.
Costante di esempio: NOSERVER

CNodo per nodo computazionale costituito da una singola immagine del sistema operativo, una memoria condivisa e un set
di cpu. CNode esegue 1 PBS MOM.
Costante del campione: NOCNODE

Che Esegue il mapping direttamente all'oggetto coda PBS. UN Che bobine di oggetti uno o più Lavoro
oggetti.
Costante del campione: NOQUE

Lavoro Mappa direttamente all'oggetto lavoro PBS. UN Lavoro l'oggetto porta alcuni attributi e
requisiti di risorse.
Costante di esempio: NOJOB

Impostato server
elenco di oggetti Server.
Costante di esempio: EMPTYSETSERVER

Impostato CNodo
elenco di oggetti CNode.
Costante di esempio: EMPTYSETCNODE

Impostato Che elenco di oggetti Que.
Costante di esempio: EMPTYSETQUE

Impostato Lavoro elenco di oggetti lavoro.
Costante di esempio: EMPTYSETJOB

DEFINITO IN BASILICO COSTANTI


Queste sono costanti che non possono essere utilizzate per nominare un identificatore (vedi argomento successivo). Queste
sono sempre in maiuscolo.

DATA TIPO DEFINITO IN BASILICO COSTANTE
=================== =============================================
Giorno della settimana SOLE, LUN, MAR, MER, GIO, VEN, SAB

Int SUCCESSO, FALLIRE, FALSE VERO, SINCRONIZZAZIONE, ASINCRONO,
ELIMINA, ESEGUI, PRESA, PUBBLICAZIONE, SEGNALE,
MODIFICA ATTR, MODIFICA, SERVER_ATTIVO,
SERVER_IDLE, SCHEDA_SERVER, TERMINE_SERVER,
SERVER_TERMDELAY, QTYPE_E, QTYPE_R,
SCHED_DISABILITATO, SCHED_ENABLED, TRANSITO,
IN CODA, TENUTO, IN ATTESA, IN ESECUZIONE, USCITA,
CNODE_OFFLINE, CNODE_GIÙ, CNODE_FREE,
CNODE_RESERVE, CNODE_INUSE_EXCLUSIVE,
CNODE_INUSE_SHARED, CNODE_TIMESHARED,
CNODE_CLUSTER, CNODE_SCONOSCIUTO, EQ_OP, OP_NEQ,
OP_LE, OP_LT, OP_GE, OP_GT, OP_MAX, OP_MIN,
ASC, DESC

server NESSUNSERVER
Impostato server SERVER SVUOTA

CNodo NOCNODO
Impostato CNodo EMPTYSETCNODO

Che NOCO
Impostato Che SET VUOTO

Lavoro NESSUN LAVORO
Impostato Lavoro SVUOTA LAVORO

Corda NULL STR

IDENTIFICATORE


Gli identificatori (usati per nomi di variabili e nomi di funzioni) sono in formato alfanumerico, con
il carattere di sottolineatura speciale (_) consentito. Attualmente, BASL può gestire solo identificatori
con una lunghezza massima di 80 caratteri. Inoltre, non è possibile utilizzare i nomi delle costanti definiti da BASL per
nominare un identificatore.

DICHIARAZIONI


In BASILICO(2), puoi avere una singola istruzione terminata da un punto e virgola, o un gruppo di
istruzioni (chiamate istruzione composta o blocco) delimitate da '{' e '}'. Il diverso
tipi di dichiarazioni che possono apparire in un codice BASL sono:

1. dichiarazione di espressione
Le istruzioni di espressione sono qualsiasi cosa della forma:

espr ;

where espr può essere:

a) Espressioni aritmetiche

lespr + rexpr (Inserisci)
lespr - rexpr (sottrarre)
lespr * rexpr (moltiplicare)
lespr / rexpr (dividere)
lespr % rexpr (modulo or resto)

NOTA: Addizione, sottrazione, moltiplicazione, divisione e resto
sarà consentito solo per i tipi corretti e se il sinistro e il destro
le espressioni sono di tipo coerente. La tabella seguente illustra cosa
i tipi sono coerenti tra i vari operatori:

Per +:

lespr rexpr
============ ============
Int or galleggiante Int or galleggiante
Taglia Taglia
Corda Corda

Per -, *, /:

lespr rexpr
============ ============
Int or galleggiante Int or galleggiante
Taglia Taglia

Per %:

lespr rexpr
============ ============
Int or galleggiante Int or galleggiante

Di seguito sono riportati alcuni esempi di espressioni aritmetiche:
Int io1;
Int io2;
galleggiante f1;
galleggiante f2;
Taglia tg1;
Taglia tg2;
Corda str1;
Corda str2;

i1 + io2;
f1 - io2;
sz1 * sz2 * 2b;
sz1 / 1024b;

str1 = "basale";
str2 = " fresco";

// , il i seguenti is a stringa concatenazione
// operazione risultante in , il stringa:
// "Basilea fresco"
str1 + str2;

i1 % 10;

b) Espressioni unarie

+ espr // positivo - si moltiplica by 1 an
// espressione che is
// of interno, Galleggiante, or
// Taglia Digitare

-espr // negativo. - si moltiplica by -1 an
// espressione che is
// of interno, Galleggiante, or
// Taglia Digitare

! expr // non - convertiti a non nullo espr
// APPREZZIAMO ai miglioramenti 0, ed a
// zero espr APPREZZIAMO ai miglioramenti 1
// where espr Digitare devono obbligatoriamente: be
// of Digitare Int or galleggiante

Alcuni esempi di espressioni unarie:
Int i;

+ 3;
-(io + 4);
!io;

c) Espressioni logiche

lespr EQ rexpr
lespr NEQ rexpr
lespr LT rexpr
lespr LE rexpr
lespr GT rexpr
lespr GE rexpr
lespr E rexpr
lespr OR rexpr

lespr ed rexpr deve avere tipi che siano reciprocamente coerenti come mostrato
nella tabella seguente:

lterminal-espr rterminal-espr
============== ==============
Int or galleggiante Int or galleggiante
Giorno della settimana Giorno della settimana
Appuntamento Appuntamento
Corda Corda
Taglia Taglia
server server
Che Che
Lavoro Lavoro
CNodo CNodo
Impostato server Impostato server
Impostato Che Impostato Che
Impostato Lavoro Impostato Lavoro
Impostato CNodo Impostato CNodo

Nel E, OR operatori, i lespr, rexpr i tipi coerenti sono Int o
Galleggiante.

Alcune espressioni logiche di esempio:

i1 EQ io2;
i1 NEQ f2;
giù1 LE dow2;
d1 LT d2;
str1 GT str2;
sz1 GE tg2;

d) Espressioni post-operatorie
Queste sono espressioni che sono semplicemente scorciatoie per l'assegnazione
dichiarazioni.

IDENTIFICATORE++; // identificatore=identificatore+1
IDENTIFICATORE--; // identificatore=identificatore-1

IDENTIFICATORE deve essere di tipo Int o Float.

Esempio:
Int i;
galleggiante f;

i + +;
F--;

e) Chiamata di funzione

nome-funzione ( arg1 ,arg2 ... , argN )

where argomento1, ..., argN può essere qualsiasi costante o variabile. non puoi avere
un'altra chiamata di funzione come argomento.
Esempio:
vuoto Stampa a) {
stampa(a);
}

pr(5);

Ci sono alcune funzioni predefinite che uno scrittore di pianificazione può
chiama automaticamente il proprio codice BASL senza bisogno di definirlo.
Queste funzioni sono chiamate funzioni di assistenza (o helper
funzioni) e sono discussi sotto PREDEFINITO FUNZIONI argomento.

f) Costanti
Alcune espressioni costanti valide sono fornite di seguito:
5;
+ 1.2;
SOLE;
LUN;
MAR;
MER;
GIO;
VEN;
SAB;
(4|4|1997);
(12:01:00);
(4|4|1997@12:01:00);
"meraviglioso";
-1b;
SINCRONIZZAZIONE;
ASINCRONO;
ELIMINA;
ESEGUIRE;
PRESA;
PUBBLICAZIONE;
SEGNALE;
MODIFICA ATTR;
MODIFICARE;
(1, 3);
(2.3, 4.6);
(MER, VEN);
((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);
NESSUNSERVER;
NOCNODO;
NOCCIA;
NESSUN LAVORO;
SVUOTA SETSERVER;
CNODO VUOTO;
VUOTOSETQUE;
LAVORO VUOTO;
NULLSTR;
SUCCESSO;
FALLIRE;
SERVER_ATTIVO;
SERVER_IDLE;
SCHEDA_SERVER;
TERMINE_SERVER;
SERVER_TERMDELAY;
QTYPE_E;
TIPOQ_R;
SCHED_DISABILITATO;
SCHED_ABILITATO;
FALSO;
VERO;
TRANSITO;
IN CODA;
TENUTO;
IN ATTESA;
IN ESECUZIONE;
USCITA;
CNODE_OFFLINE;
CNODO_GIÙ;
CNODO_FREE;
CNODE_RESERVE;
CNODE_INUSE_EXCLUSIVE;
CNODE_INUSE_SHARED;
CNODE_TIMESHARED;
CNODE_CLUSTER;
CNODE_SCONOSCIUTO;
EQ_OP;
OP_NEQ;
OP_LE;
OP_LT;
OP_GE;
OP_GT;
OP_MAX;
OP_MIN;

g) Identificatore

Esempio:
Int io;

i;

2. Dichiarazione di assegnazione

IDENTIFICATORE = espr ;

IDENTIFICATORE ed espr deve avere tipi che sono reciprocamente coerenti come
illustrato nella tabella seguente:

identificatore espr
=============== ===============
Int interno, galleggiante
galleggiante interno, galleggiante
Giorno della settimana Giorno della settimana
Appuntamento Appuntamento
Corda Corda
Taglia Taglia
Che Che
Lavoro Lavoro
CNodo CNodo
server server
Giorno della settimana Giorno della settimana
Appuntamento Appuntamento
Impostato server Impostato server
Impostato Che Impostato Che
Impostato Lavoro Impostato Lavoro
Impostato CNodo Impostato CNodo
Escursione Int Escursione Int
Escursione galleggiante Escursione galleggiante
Escursione Giorno della settimana Escursione Giorno della settimana
Escursione Appuntamento Escursione Appuntamento
Escursione Taglia Escursione Taglia

3. se altro dichiarazione
Il formato di un'istruzione if è simile a quello in C con la delimitazione
"{" e "}" sempre presenti:

se ( espr ) {
zero or Scopri di più (True) DICHIARAZIONI
}

se ( espr ) {
zero or Scopri di più (True) DICHIARAZIONI
} altro {
zero or Scopri di più (falso) DICHIARAZIONI
}

I espr 's il tipo deve essere Int o Float, e dopo la valutazione se è
value è diverso da zero, vengono eseguite le istruzioni vere. Sul secondo
forma, se il espr restituisce zero, quindi vengono eseguite le false dichiarazioni.

Qualche campione if si riportano di seguito le dichiarazioni:

if (2 * x )
{
y = y + 3;
stampa(y);
}

if (2 * x ) {
y = y + 3;
} altro {
se ( 3 * x ) {
y = 4;
} altro {
y = 5;
}
}

4. per loop dichiarazione
Il formato di un'istruzione for è il seguente:

per ( inizio; test; azione ) {
zero or Scopri di più DICHIARAZIONI
}

Proprio come in C, per prima esegue inizia a , quindi valuta il test condizione
per vedere se restituisce un valore diverso da zero. Se lo fa, il per le dichiarazioni sono
eseguito. Dopo il per le istruzioni vengono eseguite, quindi azione viene valutato,
e poi controlla il test condizione di nuovo nello stesso modo di prima.
inizia a ed azione può essere una semplice espressione di assegnazione o un post-operatore
espressione. test è un'espressione logico/relazionale. Qualche campione per
si riportano le seguenti dichiarazioni:

per (i = 0; i LT 3 ; i = i + 1)
{
stampa(i);
}

per (i = 0; i LT 2 * x; io++)
{
if (x GT 3)
{
y = 99;
} altro
{
x = 73;
}
}

5. foreach loop dichiarazione
Questa affermazione viene utilizzata principalmente per recuperare successivamente ogni elemento di
a Tipo di dati Imposta: Imposta server, Imposta CNode, Imposta processo, Imposta coda. La sintassi è:

foreach ( IDENTIFICATORE1 in IDENTIFICATORE2 ) {
zero or Scopri di più DICHIARAZIONI
}

dove sono consentiti i seguenti accoppiamenti di tipi per gli identificatori:

IDENTIFICATORE1 IDENTIFICATORE2
=========== ===========
server Impostato server
Che Impostato Che
Lavoro Impostato Lavoro
CNodo Impostato CNodo

Esempio:
server s;
Che q;
Lavoro j;
CNodo c;

Impostato server ss;
Impostato Che mq;
Impostato Lavoro sj;
Impostato CNodo ns;

foreach in ss){
stampa(e);
}
per ogni (q in mq){
stampa(q);
}
foreach (j in sj){
stampa(j);
}
foreach (c in ns){
stampa(c);
}

6. while loop dichiarazione
La sintassi di un ciclo while è:

while ( espr ) {
zero or Scopri di più DICHIARAZIONI
}

where espr deve essere di tipo Int o Float. Se espr è diverso da zero, allora lo zero
o più DICHIARAZIONI vengono eseguiti e espr viene rivalutato.

Esempio:
Int i;
i = 3;
mentre io) {
se ( i EQ 0 ) {
print("pausa on i = 1");
break;
}
io--;
}

7. interruttore dichiarazione
L'istruzione switch è una decisione a più vie che verifica se un
il valore dell'identificatore corrisponde a uno di un numero di valori e si ramifica in a
gruppo di dichiarazioni di conseguenza.
La sintassi per un'istruzione switch è:

interruttore( IDENTIFICATORE ) {
Custodie espressione-costante :
{
zero or Scopri di più DICHIARAZIONI
}
Custodie espressione-costante :
{
zero or Scopri di più DICHIARAZIONI
}
...
Custodie in intervallo-costanteOrSet-espr :
{
zero or Scopri di più DICHIARAZIONI
}
Custodie in IDENTIFICATORE-rangeOrSettype :
{
zero or Scopri di più DICHIARAZIONI
}
difetto :
{
zero or Scopri di più DICHIARAZIONI
}
}

where espressione-costante offre espr di tipo Int, Float, Dayofweek, DateTime,
Dimensione, Stringa, Server, Que, Lavoro o CNode. intervallo-costanteOrSet-espr ed
IDENTIFICATORE-rangeOrSettype può essere di tipo Set Server, Set CNode, Set Que, Set
Lavoro, intervallo Int, intervallo mobile, intervallo giorno della settimana, intervallo data e ora o dimensione dell'intervallo.

IDENTIFICATORE non può essere di tipo Void. IDENTIFICATORE 's il tipo deve essere coerente
con espressione-costante 'S, intervallo-costanteOrSet-espr 'S, ed IDENTIFICATORE-
rangeOrSettype 's tipo come illustrato nella tabella seguente:
IDENTIFICATORE espr-intervallo-costante, IDENTIFICATORE-tipo di intervallo
=========== =========================================
server Impostato server
Che Impostato Che
Lavoro Impostato Lavoro
CNodo Impostato CNodo
Int Escursione Int
galleggiante Escursione galleggiante
Giorno della settimana Escursione Giorno della settimana
Appuntamento Escursione Appuntamento
Taglia Escursione Taglia

Se un'espressione case corrisponde a IDENTIFICATORE 's valore, quindi il corrispondente
vengono eseguiti blocchi di istruzioni. A differenza del C, l'esecuzione NON cade
fino alla successiva dichiarazione del caso. La ragione di questo è che basl2c volere
Traduci questo interruttore istruzione nel costrutto if-elseif-else. Il caso
etichettato default viene eseguito se nessuno degli altri casi è soddisfatto. Il
difetto è facoltativo; se non c'è, e se nessuno dei casi corrisponde, no
avviene l'azione.

Esempio:
Giorno della settimana giù;

interruttore (basso)
{
Custodie LUN:
{
print("caso LUN");
}
Custodie MAR:
{
print("caso MAR");
}
Custodie MER:
{
print("caso MER");
}
Custodie GIO:
{
print("caso GIO");
}
Custodie VEN:
{
print("caso VEN");
}
Custodie SAT:
{
print("caso SAB");
}
Custodie SOLE:
{
print("caso SOLE");
}
di default:
{
print("caso inadempiente");
}
}

Int a;
Escursione Int ri;
ri = (10, 12);
interruttore(a)
{
Custodie in (1,5)
{
print("caso 1,5");
}
Custodie in (6,9)
{
print("caso 6,9");
}
Custodie in nuovo:
{
print("caso ri");
}
}

8. stampare dichiarazione
L'istruzione di stampa è in grado di stampare per stdout il valore di any identificatore
or costante di tipo Int, Float, Dayofweek, DateTime, String, Size, Que, Job,
CNode, Server, Range Int, Range Float, Range Dayofweek, Range DateTime,
Dimensione dell'intervallo.
La sintassi è la seguente:

stampare ( IDENTIFICATORE );
stampare ( costante );

Esempio:
Appuntamento dt;
CNodo cnc;

dt = (4|4|1997@12:13:36);
cn = AllNodesLocalHostGet();

stampa(dt);
stampa(cn);

Per i tipi di set, utilizzare foreach per passare attraverso ogni elemento e stampare come in:

server s;
Impostato server ss;

ss = AllServersGet();

foreach in ss) {
stampa(e);
}

9. continua dichiarazione

continua ;

I continua l'istruzione deve essere stata invocata entro a per, per ciascuno, ed
while ciclo continuo. Fa sì che l'iterazione successiva del ciclo di inclusione abbia inizio.

10. dichiarazione di rottura

rompere ;

I rompere l'istruzione deve essere stata invocata entro a per, per ciascuno, ed while
ciclo continuo. Fornisce un'uscita anticipata dal ciclo di inclusione.

11. dichiarazione di ritorno

ritorno(IDENTIFICATORE) ;
ritorno (costante) ;
Restituzione() ;

L'istruzione return fornisce il valore (se presente) che deve essere restituito da a
funzione. Il tipo restituito da IDENTIFICATORE ed costante deve corrispondere a
tipo restituito della funzione chiamante. costante i tipi consentiti sono qualsiasi cosa tranne
Tipi di set e range. L'ultimo formato, Restituzione() viene solitamente chiamato all'interno di a
funzione che non restituisce alcun valore (come programma_principale() ).

12. dichiarazione di uscita

uscita (costante);

where costante è di tipo Int. Chiamando questo terminerà lo scheduler.

13. Dichiarazione di commento
Queste sono dichiarazioni precedute da "//" e vengono ignorate dal BASL
compilatore.

// questo linea is ignorati
Int i; // stringa i seguenti , il barre is ignorati

OPERATORE PRECEDENZA E ASSOCIATIVITÀ


La tabella seguente mostra i vari livelli di precedenza degli operatori e l'associatività definita
in lingua BASL. Gli operatori sono elencati in ordine di precedenza decrescente. Il
maggiore è la precedenza di un operatore, prima viene eseguito. L'ordine in cui
gli operatori sullo stesso livello vengono eseguiti dipende dall'associatività: sinistra significa che
gli operatori sono visti da sinistra a destra, mentre right significa che sono visti da destra a sinistra.

Operatore Associatività
======================================= =============
! ++ -- + (unario più) - (unario meno) destra
* / % a sinistra
+ - a sinistra
LT LE GT GE a sinistra
EQ NEQ a sinistra
E a sinistra
OR a sinistra
= destra

PREDEFINITO FUNZIONI


In BASILICO(2), il server il tipo di dati viene mappato direttamente a un oggetto del server batch. Allo stesso modo, CNodo
è per mamma/resmom, Lavoro è un lavoro batch, e Che è quello di accodare in batch. Tuttavia, non tutto
è possibile accedere agli attributi degli oggetti PBS da BASL. Solo un sottoinsieme di attributi,
quelli che sembravano avere senso nel contesto di uno scheduler, sono resi disponibili e
è possibile accedere ai valori di questi attributi chiamando le seguenti funzioni predefinite,
note anche come funzioni di assistenza/aiuto.

(1) Funzioni relative al server

Impostato server AllServersGet(nulla)
Restituisce l'elenco dei server specificati nel file di configurazione per
che lo scrittore dello scheduler vuole che il sistema controlli periodicamente
stato, code e informazioni sui lavori. Vedere pbs__sched__basl(8 miliardi) per
discussione sul formato del file di configurazione.
ATTENZIONE: Questa funzione deve essere chiamata dall'interno programma_principale() so
che ad ogni iterazione di pianificazione, il più aggiornato Impostato server
viene restituita la struttura

server AllServersLocalHostGet(void)
Restituisce l'oggetto Server che rappresenta l'host locale. valore non impostato:
NOSERVER. Questa è una semplice funzione da chiamare per ambienti non cluster
dove esiste un solo host del server.
ATTENZIONE: Questa funzione deve essere chiamata dall'interno programma_principale() (o da
all'interno della funzione chiamata da sched_main) in modo che ad ogni pianificazione
iterazione, la più aggiornata server viene restituita la struttura

Corda ServerInetAddrGet(Server s)
Restituisce il nome per i server. valore non impostato: NULLSTR

Corda ServerDefQueGet(Server s)
Restituisce l'attributo default_queue di Server s. valore non impostato: NULLSTR

Int ServerStatoGet(Server s)
Restituisce l'attributo server_state di Server s.

Valore di ritorno:
SERVER_ACTIVE, SERVER_IDLE, SERVER_SCHED, SERVER_TERM,
SERVER_TERMDELAY, -1 (valore non impostato)

Int ServerMaxEseguiJobsGet(Server s)
Restituisce l'attributo max_running dei server. valore non impostato: 0

Int ServerMaxRunJobsPerUserGet(Server s)
Restituisce l'attributo max_user_run dei server. valore non impostato: 0

Int ServerMaxRunJobsPerGroupGet(Server s)
Restituisce l'attributo max_group_run dei server. valore non impostato: 0

Impostato Che ServerQueuesGet(Server s)
Restituisce l'elenco delle code gestite dai Server.

Impostato Lavoro ServerJobGet(Server s)
Restituisce l'elenco dei lavori gestiti dai Server. Per ottenere un sottoinsieme di questo
elenco, vedi QueJobsGet().

Int ServerIntResAvailGet(Server s, Corda nome)
Restituisce il valore alla risorsa specificata in Nome che è disponibile per i lavori
eseguito da questo server (Server risorse_disponibili.nome attributo). chiama questo
funzione per risorse con valori di tipo Int. Risorsa di esempio
i nomi sono: cput, pcput, walltime, mppt, pmppt, nice, procs, mppe, ncpus,
pncpus, nodect, srfs_assist, mta,..., mth. Per una descrizione di questi
nomi delle risorse, vedere pbs_resources_irix5(7B), pbs_risorse_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
attributi_server_pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Esempio:
Int cpuDisponibile;
// ritorno , il # of CPU attualmente disponibile in
// , il server
cpuDisponibile = ServerIntResAvailGet(server, "ncpus");

Taglia ServerSizeResAvailGet(Server s, Corda nome)
Restituisce il valore alla risorsa specificata in Nome che è disponibile per i lavori
eseguito da questo server (Server risorse_disponibili.nome attributo). chiama questo
funzione per le risorse con valori di tipo Size. Risorsa di esempio
i nomi sono: file, mem, pmem, workingset, pf, ppf, srfs_tmp, srfs_wrk,
srfs_big, srfs_fast, sds, psds. Per una descrizione di queste risorse
nomi, vedi pbs_resources_irix5(7B), pbs_risorse_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
attributi_server_pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Esempio:
Taglia memDisponibilità;
// ritorno , il quantità of disponibile memoria in
// , il server
memAvail = ServerSizeResAvailGet(server, "mem");

Corda ServerStringResAvailGet(Server s, Corda nome)
Restituisce il valore alla risorsa specificata in Nome che è disponibile per i lavori
eseguito da questo server (Server risorse_disponibili.nome attributo). chiama questo
funzione per risorse con valori di tipo String. Campione
i nomi delle risorse sono: nodes, arch, neednodes. Per una descrizione di questi
nomi delle risorse, vedere pbs_resources_irix5(7B), pbs_risorse_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
attributi_server_pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Esempio:
Corda genere;
// ritorno , il architettura (o os tipo) of
// , il server
Digitare = ServerStringResAvailGet(server, "arco");

Int ServerIntResAssignOttieni(Server s, Corda nome)
Restituisce il valore alla risorsa specificata in Nome che è assegnato a
lavori in esecuzione (Server risorse_assegnate.nome attributo). chiama questo
funzione per risorse con valori di tipo Int. Risorsa di esempio
i nomi sono: cput, pcput, walltime, mppt, pmppt, nice, procs, mppe, ncpus,
pncpus, nodect, srfs_assist, mta,..., mth. Per una descrizione di questi
nomi delle risorse, vedere pbs_resources_irix5(7B), pbs_risorse_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
attributi_server_pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Esempio:
Int cpuAssn;
// ritorno , il # of CPU attualmente addetto in
// , il server
cpuAssn = ServerIntResAssignGet(server, "ncpus");

Taglia ServerSizeResAssignGet(Server s, Corda nome)
Restituisce il valore alla risorsa specificata in Nome che è assegnato a
lavori in esecuzione (Server risorse_assegnate.nome attributo). chiama questo
funzione per le risorse con valori di tipo Size. Risorsa di esempio
i nomi sono: file, mem, pmem, workingset, pf, ppf, srfs_tmp, srfs_wrk,
srfs_big, srfs_fast, sds, psds. Per una descrizione di queste risorse
nomi, vedi pbs_resources_irix5(7B), pbs_risorse_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
attributi_server_pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Esempio:
Taglia sdsAssn;
// ritorno , il quantità of sds spazio attualmente addetto
// in , il server
sdsAssn = ServerSizeResAssignGet(server, "sd");

Corda ServerStringResAssignGet(Server s, Corda nome)
Restituisce il valore alla risorsa specificata in Nome che è assegnato a
lavori in esecuzione (Server risorse_assegnate.nome attributo). chiama questo
funzione per risorse con valori di tipo String. Campione
i nomi delle risorse sono: nodes, arch, neednodes. Per una descrizione di questi
nomi delle risorse, vedere pbs_resources_irix5(7B), pbs_risorse_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
attributi_server_pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Impostato CNodo ServerNodesGet(Server s)
Restituisce l'insieme dei nodi gestiti dai server. valore non impostato: EMPTYSETCNODE.
NOTA: di solito è possibile chiamare le seguenti funzioni per i nodi restituiti
da questa chiamata: CNodeStateGet(), CNodePropertiesGet() e CNodeTypeGet().

Int ServerNodiQuery(Server s, Corda spec)
Invia una richiesta al server specificato per richiedere la disponibilità di
risorse specificate in spec. Al momento, l'unica risorsa
specifica consentita è quella che coinvolge "nodi" e può essere del
formatta "nodi", "nodi=" o "nodi= ". I risultati della query possono essere
accessibile chiamando le seguenti funzioni: ServerNodesNumAvailGet(),
ServerNodesNumAllocGet(), ServerNodesNumRsvdGet(),
ServerNodesNumDownGet().
NOTA: questo è un involucro per il pbs_resquery(3B) funzione di server.

Valore di ritorno:
SUCCESSO, FALLIMENTO

Int NumeroNodiServerAvailGet(Server s)
Restituisce il numero di nodi disponibili per quelli gestiti dallo specificato
server, o come risulta dalla query più recente specificata da
ServerNodesQuery(). Se il valore restituito è zero, significa che
un certo numero di nodi attualmente necessari per soddisfare la specifica di
ServerNodesQuery() non sono attualmente disponibili. La richiesta forse soddisfatta
in un momento successivo. Se il risultato è negativo, nessuna combinazione di nota
i nodi possono soddisfare la specifica.

Int ServerNodesNumAllocGet(Server s)
Restituisce il numero di nodi allocati per quelli gestiti dallo specificato
server, o come risulta dalla query più recente specificata da
ServerNodesQuery().

Int ServerNodesNumRsvdGet(Server s)
Restituisce il numero di nodi riservati a quelli gestiti dallo specificato
server, o come risulta dalla query più recente specificata da
ServerNodesQuery().

Int ServerNodesNumDownGet(Server s)
Restituisce il numero di nodi down per quelli gestiti dallo specificato
server, o come risulta dalla query più recente specificata da
ServerNodesQuery().

Int ServerNodesReserve(Server s, Stringa specifica, Int RESIDUO)
Invia una richiesta al server specificato per riservare le risorse
Specificato in spec. Un valore di 0 per ID resi significa che questo è per fare a
nuova prenotazione. In caso contrario, il numero rappresenterà un esistente
(parziale) prenotazione. Risorse attualmente riservate a questo ID resi volere
essere rilasciato e verrà riprovata la prenotazione completa. Al
nel presente le uniche risorse che possono essere specificate sono
"nodi". Dovrebbe essere specificato come nodi=specifica where
la specifica è ciò che un utente specifica nell'elenco degli argomenti dell'opzione -l
per i nodi, vedere qsub (1B).
NOTA: questo è un involucro per il pbs_rescreserve(3B) funzione di server.

Valore di ritorno:
un numero di riferimento per un successo o un parziale successo
prenotazione, o FAIL

Int ServerNodesRelease(Server s, Int RESIDUO)
Questo libera o libera risorse riservate con il numero di riferimento
Specificato in RESID.
NOTA: questo è un involucro per il pbs_rescrelease(3B) funzione di server.

Valore di ritorno:
SUCCESSO o FALLIMENTO

(2) Funzioni relative a Que:

Corda QueNameGet( Che che )
Restituisce il nome di Que que. valore non impostato: NULLSTR

Int QueTypeGet( Che che )
Restituisce l'attributo queue_type di Que que.
Valore restituito: QTYPE_E (Esecuzione), QTYPE_R (Routing), -1 (non impostato
valore)

Int QueNumJobsGet( Che che )
Restituisce il numero di lavori che risiedono in Que que. valore non impostato: 0

Int QueMaxRunJobsGet( Che che )
Restituisce l'attributo max_running di Que que. valore non impostato: 0

Int QueMaxRunJobsPerUserGet( Che che )
Restituisce l'attributo max_user_run di Que que. valore non impostato: 0

Int QueMaxRunJobsPerGroupGet( Che che )
Restituisce l'attributo max_group_run di Que que. valore non impostato: 0

Int QuePriorityGet( Che che )
Restituisce l'attributo Priority di Que que. valore non impostato: 0

Int QueStateGet( Che che )
Restituisce l'attributo avviato di Que que - la selezione dell'esecuzione del lavoro
stato della coda: SCHED_DISABLED, SCHED_ENABLED. valore non impostato:
SCHED_DISABILITATO

Impostato Lavoro QueJobsGet( Che che )
Restituisce l'elenco dei lavori attualmente residenti in que.

Int QueIntResAvailGet(Que q, Corda nome)
Restituisce il valore alla risorsa specificata in Nome che è a disposizione
lavori in esecuzione da questo q (Que risorse_disponibili.nome attributo).
Chiama questa funzione per le risorse con valori di tipo Int.
I nomi delle risorse di esempio sono: cput, pcput, walltime, mppt, pmppt, nice,
procs, mppe, ncpus, pncpus, nodect, srfs_assist, mta,..., mth. Per un
descrizione di questi nomi di risorse, vedere pbs_resources_irix5(7B),
pbs_risorse_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), attributi_server_pbs(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).

Taglia QueSizeResAvailGet(Que q, Corda nome)
Restituisce il valore alla risorsa specificata in Nome che è a disposizione
lavori in esecuzione da questo q (Que risorse_disponibili.nome attributo).
Chiama questa funzione per le risorse con valori di tipo Size.
I nomi delle risorse di esempio sono: file, mem, pmem, workingset, pf, ppf,
srfs_tmp, srfs_wrk, srfs_big, srfs_fast, sds, psds. Per una descrizione
di questi nomi di risorse, vedere pbs_resources_irix5(7B),
pbs_risorse_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), attributi_server_pbs(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).

Corda QueStringResAvailGet(Que q, Corda nome)
Restituisce il valore alla risorsa specificata in Nome che è a disposizione
lavori in esecuzione da questo q (Que risorse_disponibili.nome attributo).
Chiama questa funzione per le risorse con valori di tipo String.
I nomi delle risorse di esempio sono: nodes, arch, neednodes. Per una descrizione
di questi nomi di risorse, vedere pbs_resources_irix5(7B),
pbs_risorse_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), attributi_server_pbs(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).

Int QueIntResAssignGet(Que q, Corda nome)
Restituisce il valore alla risorsa specificata in Nome che è assegnato a
lavori in esecuzione da questa coda (Que risorse_assegnate.nome attributo).
Chiama questa funzione per le risorse con valori di tipo Int.
I nomi delle risorse di esempio sono: cput, pcput, walltime, mppt, pmppt, nice,
procs, mppe, ncpus, pncpus, nodect, srfs_assist, mta,..., mth. Per un
descrizione di questi nomi di risorse, vedere pbs_resources_irix5(7B),
pbs_risorse_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), attributi_server_pbs(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).

Taglia QueSizeResAssignGet(Que q, Corda nome)
Restituisce il valore alla risorsa specificata in Nome che è assegnato a
lavori in esecuzione da questo q (Que risorse_assegnate.nome attributo).
Chiama questa funzione per le risorse con valori di tipo Size.
I nomi delle risorse di esempio sono: file, mem, pmem, workingset, pf, ppf,
srfs_tmp, srfs_wrk, srfs_big, srfs_fast, sds, psds. Per una descrizione
di questi nomi di risorse, vedere pbs_resources_irix5(7B),
pbs_risorse_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), attributi_server_pbs(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).

Corda QueStringResAssignGet(Que q, Corda nome)
Restituisce il valore alla risorsa specificata in Nome che è assegnato a
lavori in esecuzione da questo q (Que risorse_assegnate.nome attributo).
Chiama questa funzione per le risorse con valori di tipo String.
I nomi delle risorse di esempio sono: nodes, arch, neednodes. Per una descrizione
di questi nomi di risorse, vedere pbs_resources_irix5(7B),
pbs_risorse_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), attributi_server_pbs(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).

(3) Funzioni relative al lavoro

Corda JobIdGet( Lavoro lavoro )
Restituisce l'identificatore del lavoro del lavoro. valore non impostato: NULLSTR

Corda NomeLavoroGet( Lavoro lavoro )
Restituisce l'attributo Job_Name del lavoro Job. valore non impostato: NULLSTR

Corda Nome Proprietario LavoroGet( Lavoro lavoro )
Restituisce l'attributo Job_Owner del lavoro Job. valore non impostato: NULLSTR

Corda JobEffectiveUserNameGet( Lavoro lavoro)
Restituisce l'attributo euser del lavoro Job.

Corda JobEffectiveGroupNameGet(Lavoro lavoro)
Restituisce l'attributo egroup del lavoro Job. valore non impostato: NULLSTR

Int LavoroStatoOttieni ( Lavoro lavoro )
Restituisce l'attributo job_state del job job.

Valore di ritorno:
TRANSITO, IN CODA, IN ATTESA, IN ATTESA, IN CORSO, IN USCITA, -1 (non impostato
valore)

Int Priorità lavoro Ottieni( Lavoro lavoro )
Restituisce l'attributo Priorità del lavoro. valore non impostato: 0

Int JobRerunFlagGet( Lavoro lavoro )
Restituisce l'attributo rieseguibile del lavoro lavoro.
Valore restituito: FALSE, TRUE, -1 (valore non impostato)

Int LavoroInteractiveFlagGet( Lavoro lavoro )
Restituisce l'attributo interattivo del lavoro Job.
Valore restituito: FALSO, VERO. valore non impostato: FALSE

Appuntamento JobDateTimeCreatedGet(Lavoro lavoro)
Restituisce l'attributo ctime del lavoro Job. valore non impostato:
(0|0|0@-1:-1:-1)

Corda LavoroEmailAddrGet( Lavoro lavoro )
Restituisce l'attributo Mail_Users del lavoro Job. valore non impostato: NULLSTR

Corda Fase lavoroinFilesGet( Lavoro lavoro )
Restituisce l'attributo stagein di Job job. valore non impostato: NULLSTR

Corda LavoroStageoutFilesGet( Lavoro lavoro )
Restituisce l'attributo stageout del lavoro Job. valore non impostato: NULLSTR

Int JobIntResReqGet(Lavoro lavoro, Corda nome)
Restituisce il valore alla risorsa specificata in Nome come richiesto dal
lavoro (lavoro Nome_elenco_risorse attributo). Chiama questa funzione per
risorse con valori di tipo Int. Nomi di risorse di esempio
sono: cput, pcput, walltime, mppt, pmppt, nice, procs, mppe, ncpus,
pncpus, nodect, srfs_assist, mta,..., mth. Per una descrizione di questi
nomi delle risorse, vedere pbs_resources_irix5(7B), pbs_risorse_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
attributi_server_pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Esempio:
Int cputReq;
// problemi , il cput requisito of , il lavoro
cputReq = JobIntResReqGet(lavoro, "cput");

Taglia JobSizeResReqGet(Lavoro lavoro, Corda nome)
Restituisce il valore alla risorsa specificata in Nome come richiesto dal
lavoro (lavoro Nome_elenco_risorse attributo). Chiama questa funzione per
risorse con valori di tipo Size. Nomi di risorse di esempio
sono: file, mem, pmem, workingset, pf, ppf, srfs_tmp, srfs_wrk,
srfs_big, srfs_fast, sds, psds. Per una descrizione di queste risorse
nomi, vedi pbs_resources_irix5(7B), pbs_risorse_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
attributi_server_pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Esempio:
Taglia memReq;
// problemi , il memoria requisito of , il lavoro
memReq = JobSizeResReqGet(lavoro, "mem");

Corda JobStringResReqGet(Lavoro lavoro, Corda nome)
Restituisce il valore alla risorsa specificata in Nome come richiesto dal
lavoro (lavoro Nome_elenco_risorse attributo). Chiama questa funzione per
risorse con valori di tipo String. Nomi di risorse di esempio
sono: nodes, arch, neednodes. Per una descrizione di queste risorse
nomi, vedi pbs_resources_irix5(7B), pbs_risorse_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
attributi_server_pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Esempio:
Corda nodi;
// problemi , il nodi requisito proprietà of
// , il lavoro
nodi = JobStringResReqGet(lavoro, "nodi");

Int JobIntResUseGet(Lavoro lavoro, Corda nome)
Restituisce il valore alla risorsa specificata in Nome utilizzato dal lavoro (Job
risorse_usate.nome attributo). Chiama questa funzione per le risorse con
valori di tipo Int. I nomi delle risorse di esempio sono: cput, pcput,
walltime, mppt, pmppt, simpatico, procs, mppe, ncpus, pncpus, nodect,
srfs_assist, mta,..., mth. Per una descrizione di questi nomi di risorse,
vedere pbs_resources_irix5(7B), pbs_risorse_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
attributi_server_pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Esempio:
Int walltUsa;
// problemi , il quantità of walltime utilizzato by
// , il lavoro
walltUsa = JobIntResUseGet(lavoro, "muro");

Taglia JobSizeResUseGet(Lavoro lavoro, Corda nome)
Restituisce il valore alla risorsa specificata in Nome utilizzato dal lavoro (Job
risorse_usate.nome attributo). Chiama questa funzione per le risorse con
valori che sono di tipo Dimensione. I nomi delle risorse di esempio sono: file, mem,
pmem, set di lavoro, pf, ppf, srfs_tmp, srfs_wrk, srfs_big, srfs_fast,
sd, psd. Per una descrizione di questi nomi di risorse, vedere
pbs_resources_irix5(7B), pbs_risorse_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
attributi_server_pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Esempio:
Taglia srfsUsa;
// problemi , il quantità of srfs_veloce utilizzato by
// , il lavoro
srfsUsa = JobSizeResUseGet(lavoro, "srfs_fast");

Corda JobStringResUseGet(Lavoro lavoro, Corda nome)
Restituisce il valore alla risorsa specificata in Nome utilizzato dal lavoro (Job
risorse_usate.nome attributo). Chiama questa funzione per le risorse con
valori di tipo String. I nomi delle risorse di esempio sono: nodi,
arco, bisogno di nodi. Per una descrizione di questi nomi di risorse, vedere
pbs_resources_irix5(7B), pbs_risorse_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
attributi_server_pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

(4) Funzioni relative ai CNOdi

Impostato CNodo TuttiNodiGet(void)
Restituisce l'elenco dei nodi gestiti dal server in esecuzione sul
ospite locale. Questo potrebbe includere anche quei nodi che sono stati specificati
nel file di configurazione dello scheduler per il quale lo scrittore dello scheduler
vuole che il sistema controlli periodicamente informazioni come stato,
proprietà, e così via. Vedere pbs_sched_basl(8 miliardi) per una discussione su
formato del file di configurazione.
ATTENZIONE: Questa funzione deve essere chiamata dall'interno programma_principale() so
che ad ogni iterazione di pianificazione, il più aggiornato Impostato CNodo
viene restituita la struttura Non chiamarlo da un'istruzione di assegnazione
destinato a inizializzare una variabile globale, poiché l'istruzione sarà solo
essere chiamato una volta.

CNodo AllNodesLocalHostGet(void)
Restituisce l'oggetto CNode che rappresenta l'host locale. Questo è un
semplice funzione da chiamare per sistemi non cluster dove solo 1 CNode
esiste. valore non impostato: NOCNODE
ATTENZIONE: Questa funzione deve essere chiamata dall'interno programma_principale() (o
dall'interno delle funzioni chiamate da sched_main) in modo che ad ogni
iterazione di pianificazione, la più aggiornata CNodo la struttura è
restituito. Non chiamare questo da una dichiarazione di assegnazione destinata a
inizializzare una variabile globale, poiché l'istruzione verrà solo chiamata
una volta.

Corda CNodeNomeGet(CNodo nodo)
Restituisce il nome univoco (ufficiale) del nodo (es. nome host ResMom
in un modello 1 mamma/nodo). Questo restituisce la stessa stringa che era
specificato nel file di configurazione. valore non impostato: NULLSTR

Corda CNodeOsGet(CNode nodo)
Restituisce l'architettura del sistema operativo del nodo (cioè "irix5", "sp2"). non settato
valore: NULLSTR

Int CNodeStateGet( CNodo nodo )
Restituisce lo stato del nodo.

Valore di ritorno:
CNODE_OFFLINE, CNODE_DOWN, CNODE_FREE, CNODE_RESERVE,
CNODE_INUSE_EXCLUSIVE, CNODE_INUSE_SHARED, CNODE_UNKNOWN

Int CNodeTypeGet( CNodo nodo )
Restituisce il tipo del nodo.

Valore di ritorno:
CNODE_TIMESHARED, CNODE_CLUSTER, CNODE_UNKNOWN

Corda CNodePropertiesGet(CNode nodo)
Restituisce l'elenco separato da virgole di altri nomi con cui è conosciuto il nodo
( proprietà, altro nome di rete). Per esempio,
"babbage.OpenPBS.org" forse il nome del nodo, ma potrebbe anche essere conosciuto
tramite "babbage1, babbage2". valore non impostato: NULLSTR

Corda CNodeVendorGet(CNode nodo)
Restituisce il nome del fornitore per l'hardware della macchina (es
"sgi", "ibm"). valore non impostato: NULLSTR

Int CNodeNumCpusGet(CNode nodo)
Restituisce il numero di processori collegati al nodo. valore non impostato:
-1

Taglia CNodeMemTotalGet( CNodo nodo, Corda Digitare )
Restituisce la memoria totale di Digitare per il nodo. Digitare è un arbitrario
stringa che il writer dello scheduler definisce nello scheduler
file di configurazione. valore non impostato: -1b
Esempio:
// ottenere totale Fisico memoria
CNodeMemTotalGet(nodo, "vero")
// ottenere totale virtuale memoria
CNodeMemTotalGet(nodo, "virtuale")

Taglia CNodeMemAvailGet( CNodo nodo, Corda Digitare )
Restituisce la memoria disponibile di Digitare per il nodo. Digitare è un arbitrario
stringa che il writer dello scheduler definisce nello scheduler
file di configurazione. valore non impostato: -1b
Quindi le chiamate di esempio saranno:
// ottenere disponibile Fisico memoria
CNodeMemAvailGet(nodo, "vero")
// ottenere disponibile virtuale memoria
CNodeMemAvailGet(nodo, "virtuale")

Int CNodeIdletimeGet( CNodo nodo )
Restituisce il numero di secondi in cui non è stato premuto alcun tasto o movimento del mouse
avvenuta su qualsiasi terminale connesso al nodo. valore non impostato: -1

galleggiante CNodeLoadAveGet( CNodo nodo )
Restituisce la media del carico del nodo per tutte le CPU. valore non impostato: -1.0

Int CNodeCpuPercentIdleGet( CNodo nodo )
Restituisce la percentuale di tempo di inattività di tutti i processori del nodo
ho sperimentato.

Int CNodeCpuPercentSysGet( CNodo nodo )
Restituisce la percentuale di tempo che hanno tutti i processori del nodo
speso per eseguire il codice del kernel.

Int CNodeCpuPercentUserGet( CNodo nodo )
Restituisce la percentuale di tempo che hanno tutti i processori del nodo
trascorso l'esecuzione del codice utente.

Int CNodeCpuPercentGuestGet( CNodo nodo )
Restituisce la percentuale di tempo che hanno tutti i processori del nodo
speso per eseguire un sistema operativo guest.

Int CNodeNetworkBwGet( CNodo nodo, Corda Digitare )
Restituisce la larghezza di banda della rete del nodo di Digitare in byte/secondo.
Digitare è definito dallo scrittore dello scheduler nello scheduler
file di configurazione. valore non impostato: -1
Alcune chiamate di esempio sono:
CNodeNetworkBwGet( nodo, "hippi" );
CNodeNetworkBwGet( nodo, "fddi" );

Taglia CNodeDiskSpaceTotalGet(CNode nodo, Corda nome)
Restituisce lo spazio totale del nodo su disco identificato da Nome where Nome
è il nome del dispositivo arbitrariamente definito dallo scrittore di pianificazione nel
file di configurazione dell'utilità di pianificazione. valore non impostato: -1b
Esempio:
CNodoDiscoSpazioTotaleGet( nodo, "/graffio2" );

Taglia CNodeDiskSpaceAvailGet(CNode nodo, Corda nome)
Restituisce lo spazio disponibile del nodo su disco identificato da Nome where
Nome è arbitrariamente definito dallo scrittore dello scheduler nello scheduler
file di configurazione. valore non impostato: -1b
Esempio:
CNodeDiskSpaceAvailGet( nodo, "/graffio1" );

Taglia CNodeDiskSpaceReservedGet(CNode nodo, Corda nome)
Restituisce lo spazio riservato del nodo su disco (quota utente?) identificato da
Nome where Nome è arbitrariamente definito dallo scrittore dello scheduler nel
file di configurazione dell'utilità di pianificazione. valore non impostato: -1b
Esempio:
CNodeDiskSpaceReservedGet( nodo, "/graffio1" );

Int CNodoDiscoInBwGet( CNodo nodo, Corda Nome )
Restituisce la larghezza di banda di scrittura (byte/sec) del disco del nodo identificato
by Nome . valore non impostato: -1
Esempio:
CNodoDiscoInBwGet( nodo, "/veloce" );

Int CNodeDiskOutBwGet( CNodo nodo, Corda Nome )
Restituisce la larghezza di banda di lettura (byte/sec) del disco del nodo identificato da
Nome . valore non impostato: -1
Esempio:
CNodeDiskOutBwGet( nodo, "/grande" );

Taglia CNodeSwapSpaceTotalGet( CNodo nodo, Corda Nome )
Restituisce lo spazio totale del nodo su swap identificato da Nome where Nome
è arbitrariamente definito dallo scrittore dello scheduler nello scheduler
file di configurazione. valore non impostato: -1b
Esempio:
CNodeSwapSpaceTotalGet( nodo, "primario" );

Taglia CNodeSwapSpaceAvailGet( CNodo nodo, Corda Nome )
Restituisce lo spazio disponibile del nodo durante lo scambio identificato da Nome where Nome
è il nome del dispositivo arbitrariamente definito dallo scrittore di pianificazione nel
file di configurazione dell'utilità di pianificazione. valore non impostato: -1b
Esempio:
CNodeSwapSpaceAvailGet( nodo, "secondario" );

Int CNodeSwapInBwGet( CNodo nodo, Corda Nome )
Restituisce la velocità di scambio del dispositivo di scambio del nodo identificato da nome.
Esempio:
CNodeSwapInBwGet(nodo, "secondario");

Int CNodeSwapOutBwGet( CNodo nodo, Corda Nome )
Restituisce il tasso di swapout del dispositivo di swap del nodo identificato da
nome. valore non impostato: -1
Esempio:
CNodeSwapOutBwGet(nodo, "primario");

Taglia CNodoTapeSpazioTotaleGet( CNodo nodo, Corda Nome )
Restituisce lo spazio totale del nodo sul nastro identificato da Nome where Nome
è arbitrariamente definito dallo scrittore dello scheduler nello scheduler
file di configurazione. valore non impostato: -1b
Esempio:
CNodeTapeSpaceTotalGet(nodo, "4mm");

Taglia CNodeTapeSpaceAvailGet( CNodo nodo, Corda Nome )
Restituisce lo spazio disponibile del nodo su nastro identificato da Nome where
Nome è arbitrariamente definito dallo scrittore dello scheduler nello scheduler
file di configurazione. valore non impostato: -1b
Esempio:
CNodeTapeSpaceAvailGet(nodo, "8mm");

Int CNodoTapeInBwGet( CNodo nodo, Corda Nome )
Restituisce la larghezza di banda di scrittura (byte/sec) del nastro del nodo identificato
by Nome . valore non impostato: -1
Esempio:
CNodoTapeInBwGet( nodo, "4mm" );

Int CNodeTapeOutBwGet( CNodo nodo, Corda Nome )
Restituisce la larghezza di banda di lettura (byte/sec) del nastro del nodo identificato
by Nome . valore non impostato: -1
Esempio:
CNodeTapeOutBwGet( nodo, "8mm" );

Taglia CNodoSrfsSpazioTotaleGet( CNodo nodo, Corda Nome )
Restituisce lo spazio totale del nodo sul dispositivo srfs identificato da Nome
where Nome è arbitrariamente definito dallo scrittore dello scheduler nel
file di configurazione dell'utilità di pianificazione. valore non impostato: -1b
Esempio:
CNodeSrfsSpaceTotalGet(nodo, "/veloce");

Taglia CNodeSrfsSpaceAvailGet( CNodo nodo, Corda Nome )
Restituisce lo spazio disponibile del nodo sul dispositivo srfs identificato da Nome
where Nome è arbitrariamente definito dallo scrittore dello scheduler in alcuni
file di configurazione. valore non impostato: -1b
Esempio:
CNodeSrfsSpaceAvailGet( nodo, "/grande" );

Taglia CNodeSrfsSpaceReservedGet(CNode nodo, Corda nome)
Restituisce la quantità totale di spazio riservato del nodo sul dispositivo srfs
identificato da Nome where Nome è arbitrariamente definito dallo scheduler
writer nel file di configurazione dello scheduler. valore non impostato: -1b
Esempio:
CNodeSrfsSpaceReservedGet( nodo, "/veloce" );

Int CNodoSrfsInBwGet( CNodo nodo, Corda Nome )
Restituisce la larghezza di banda di scrittura (byte/sec) del dispositivo srfs del nodo
identificato da Nome . valore non impostato: -1
Esempio:
CNodeSrfsInBwGet( nodo, "/fast" );

Int CNodoSrfsOutBwGet( CNodo nodo, Corda Nome )
Restituisce la larghezza di banda di lettura (byte/sec) del dispositivo srfs del nodo
identificato da Nome . valore non impostato: -1
Esempio:
CNodeSrfsOutBwGet( nodo, "/big" );

(5) Funzioni varie

Appuntamento dataoraGet()
ottiene la data/ora corrente.

Int datetimeToSecs(DateTime dt)
restituisce il numero di secondi dall'epoca (inizio dell'ora UNIX -
00:00:00, 1 gennaio 1970) per la data/ora indicata dt.

Int LavoroAzione( Lavoro lavoro, Int azione, Corda param )
Esegue azione on lavoro con una param specificato a seconda del
azione. azione può essere: SYNCRUN, ASYNCRUN, DELETE, RERUN, HOLD,
RILASCIO, SEGNALE, MODIFYATTR, MODIFYRES dove:
Action Descrizione
=============== ==========================
SINCRONIZZAZIONE corre , il lavoro in modo sincrono,
significato , il chiamata a
LavoroAzione() volere esclusivamente
ritorno quando , il lavoro ha
iniziato running or quando
an errore ha stato
incontrato.
Param valore:
Nome of ospite(i) a eseguire il
lavoro sotto.

ASINCRUN corre , il lavoro in modo asincrono,
significato , il chiamata a
LavoroAzione() volere ritorno
subito as presto as
, il eseguire il richiesta is
convalidato by , il PBS server,
ed non necessariamente quando
, il lavoro ha iniziato
esecuzione.
Param valore:
Nome of ospite(i) a eseguire il
lavoro sotto.

DELETE eliminazioni , il lavoro.
Param valore:
"ritardo=<# of secondi>"
- ritardo # of secondo
fra , il invio
of TERMINE ed SIGILLO
a , il lavoro prima
ottenere cancellato.

RIPETI repliche , il running lavoro,
quale comporta terminazione
, il Sessione leader of , il
lavoro ed di ritorno , il lavoro
a , il in coda stato.

HOLD localita prima or Scopri di più detiene
on , il lavoro.
Param valore:
"tu", "o", "S", "UO", "os",
"uoi"
- Digitare of detiene a posto
on lavoro: utente), Altro),
sistema).

STAMPA rimuove or Comunicati
detiene posto on posti di lavoro.
Param valore:
"tu", "o", "S", "UO", "os",
"uoi"
- Digitare of detiene a rimuovere
da lavoro: utente), Altro),
sistema).

SEGNALE invia a segnale a , il
esecuzione lavoro.
Param valore:
"HUP", "SIGILLO",...

MODIFICA ATTR modifica , il specificato
attributo of , il lavoro a
, il dato valore, quando
, il nome_attributo is
!= "Elenco_risorse" or
"risorse_utilizzate".
Param valore:
"nome_attributo=valore"

MODIFICARE modifica , il lavori
Elenco_risorse
attributo dato , il
ris_nome ed , il
valore_res:
Elenco_risorse.res_name=
valore_ris
Param valore:
"res_name=res_val"
param il valore dipende dall'azione. Specificare NULLSTR se nessun valore per
questo parametro è desiderato.
Valore restituito: SUCCESSO o FAIL.
NOTA: Qualsiasi non riconosciuto azione viene ignorato.
Esempio:
// eseguire il Lavoro j sincrono
LavoroAzione(j, SINCRONIZZAZIONE, NULLSTR);

// eseguire il Lavoro j in modo asincrono on host "db"
LavoroAzione(j, ASINCRONO, "db");

// delete Lavoro j
LavoroAzione(j, ELIMINA, NULLSTR);

// delete Lavoro j con a ritardo of 5 secs
// fra , il invio of TERMINE ed
// SIGILLO
LavoroAzione(j, ELIMINA, "ritardo=5");

// replica Lavoro j
LavoroAzione(j, ESEGUI, NULLSTR);

// posto a utente) tenere on Lavoro j
LavoroAzione(j, PRESA, "u");

// posto an Altro) tenere on Lavoro j
LavoroAzione(j, PRESA, "o");

// posto a sistema) tenere on Lavoro j
LavoroAzione(j, PRESA, "S");

// posto a difetto tenere (U) on Lavoro j
LavoroAzione(j, PRESA, NULLSTR);

// rilasciare utente) tenere da Lavoro j
LavoroAzione(j, PUBBLICAZIONE, "u");

// rilasciare Altro) tenere da Lavoro j
LavoroAzione(j, PUBBLICAZIONE, "o");

// rilasciare sistema) tenere da Lavoro j
LavoroAzione(j, PUBBLICAZIONE, "S");

// rilasciare difetto tenere (U) da Lavoro j
LavoroAzione(j, PUBBLICAZIONE, NULLSTR);

// inviare SIGILLO segnale a Lavoro j
LavoroAzione(j, SEGNALE, "SIGHUP");

// update , il commento attributo of Lavoro
// j a "a Messaggio".
// I param formato è: nome_attributo=nuovo_valore
// Consultare PBS documentazione per a stratagemma of lavoro
// attributo nomi che può be specificato.
LavoroAzione(j, MODIFICA ATTR, "commento=a Messaggio");
// update , il Elenco_risorse.cput attributo of Lavoro
// j a 3600 secondi.
// I param formato è: nome_risorsa=nuovo_valore
// See risorse_pbs* uomo pagina per a stratagemma of
// nomi_risorsa che può be specificato.
LavoroAzione(j, MODIFICA, "cput=3600");

QueJobTrova(Que que, divertente Int funzione, Int cpr, Int valore);

QueJobTrova(Que que, divertente Corda funzione, Int cpr, Stringa valore);

QueJobTrova(Que que, divertente Appuntamento funzione, Int cpr, DateTime valore);

QueJobTrova(Que que, divertente Taglia funzione, Int cpr, Dimensione valore);

where cpr è uno tra: OP_EQ, OP_NEQ, OP_LE, OP_LT, OP_GE, OP_GT. func
è una funzione il cui SOLO argomento è di tipo Job. Lavoro è il ritorno
tipo.

Descrizione: si applica func ad ogni lavoro in che , e restituisci il primo
lavoro che soddisfa il confronto logico: funzione (lavoro) cpr APPREZZIAMO

Esempio:

Taglia LavoroVirtualMemAvailGet(Lavoro lavoro)
{
Taglia tg;

sz = JobSizeResReqGet(lavoro, "mem");
ritorno(sz);
}
Int JobWallTimeReqGet(Lavoro lavoro)
{
Int parete;

parete = JobIntResReqGet(lavoro, "muro");
ritorno(wallt);
}

Int LavoroCpuTimeUsatoGet(Lavoro lavoro)
{
Int computer;

cput = JobIntResUseGet(lavoro, "cput");
ritorno(cput);
}

Che trovaQueByName(Set Che code, Corda qnome)
{
Che q;

per ogni (q in code) {
se ( QueNameGet(q) EQ qnome ) {
ritorno(q);
}
}
ritorno(NOC);
}
programma_principale()
{
server s;
Che di;
Impostato Che mq;

// ottenere locale server
s = AllServersLocalHostGet();

// ottenere , il code of , il server s
sq = ServerQueuesGet(s);

// ottenere , il fare la coda detto "veloce" da , il
// locale server
che = trovaQueByName( mq, "veloce" );

// Trovare , il 1st lavoro di chi walltime requisito
// is == 300:
QueJobFind(que, JobWallTimeReqGet, EQ_OP, 300);

// Trovare , il 1st lavoro di chi email indirizzo a
// notificare circa lavoro attività != "bayucano":
QueJobFind(que, JobEmailAddrGet, OP_NEQ,
"bayucano");

// Trovare , il 1st lavoro che Prima creato dopo
// or on 3 / 3 / 1997:
QueJobFind(que, JobDateTimeCreatedGet, OP_GE,
(3|3|1997));

// Trovare , il 1st lavoro che Prima creato dopo
// 3:3:44:
QueJobFind(que, JobDateTimeCreatedGet, OP_GT,
(3:3:44));

// Trovare , il 1st lavoro che Prima creato dopo
// 3:3:44 on 3 / 3 / 1997:
QueJobFind(que, JobDateTimeCreatedGet, OP_GT,
(3|3|1997@3:3:44));

// Trovare , il 1st lavoro di chi cpu tempo utilizzato < 1600:
QueJobFind(que, JobCpuTimeUsedOttieni, OP_LT, 1600);

// Trovare , il 1st lavoro di chi virtuale memoria
// requisito <= 300 MB:
QueJobFind(que, JobVirtualMemAvailOttieni, OP_LE,
300 MB);
}

Lavoro QueJobTrova( Che che, Divertimento Int funzione, Int cpr)

Lavoro QueJobTrova( Che che, Divertimento Corda funzione, Int cpr)

Lavoro QueJobTrova( Che che, Divertimento Appuntamento funzione, Int cpr)

Lavoro QueJobTrova( Che che, Divertimento Taglia funzione, Int cpr)

where cpr può essere uno dei seguenti: OP_MAX, OP_MIN, func è un
funzione il cui unico argomento è di tipo Job.

Descrizione: restituisce il lavoro con il valore massimo o minimo trovato per
funzione (lavoro) come si applica a ogni lavoro in che .

Esempio:
Int JobCpuTimeReqGet(Lavoro lavoro)
{
Int computer;

cput = JobIntResReqGet(lavoro, "cput");
ritorno(cput);
}
programma_principale()
{
Che di;
Lavoro lavoro;

// Trovare , il Lavoro con , il massimo cpu tempo
// Requisiti:
lavoro = QueJobFind(que, JobCpuTimeReqGet, OP_MAX);

// Trovare , il Lavoro con , il ordine cpu tempo
// Requisiti:
lavoro = QueJobFind(que, JobCpuTimeReqGet, OP_MIN);
}

Che QueFiltro(Que que, divertente Int funzione, Int cpr, Int valore)

Che QueFiltro(Que que, divertente Corda funzione, Int cpr, Stringa valore)

Che QueFiltro(Que que, divertente Appuntamento funzione, Int cpr, Data valore)

Che QueFiltro(Que que, divertente Taglia funzione, Int cpr, Dimensione valore)

where cpr può essere uno dei seguenti: OP_EQ, OP_NEQ, OP_LE, OP_LT,
OP_GE, OP_GT, func è una funzione il cui unico argomento è di tipo Job.

Descrizione: si applica func ad ogni lavoro in che , e restituisce una nuova que
contenente tutti i lavori che soddisfano la condizione di confronto:
funzione (lavoro) cpr APPREZZIAMO

Esempio:
Int JobWallTimeReqGet(Lavoro lavoro)
{
Int parete;

parete = JobIntResReqGet(lavoro, "muro");
ritorno(wallt);
}
programma_principale()
{
Che di;
Che nuovoq;

// Reso a nuovi che contenente contro tutti i posti di lavoro in "di"
// con a walltime requisito == 300:
nuovoq = QueFilter(que, JobWallTimeReqGet, EQ_OP, 300);

// Reso a nuovi che contenente contro tutti i posti di lavoro in "di"
// con an email indirizzo != "bayucano":
nuovoq = QueFilter(que, JobEmailAddrGet, OP_NEQ, "bayucano");

// Reso a nuovi che contenente contro tutti i posti di lavoro in "di"
// creato dopo or on 3 / 3 / 1997:
nuovoq = QueFilter(que, JobDateTimeCreatedGet, OP_GE,
(3|3|1997));

// Reso a nuovi che contenente contro tutti i posti di lavoro in "di"
// creato dopo 3:3:44:
nuovoq = QueFilter(que, JobDateTimeCreatedGet, OP_GT,
(3:3:44));

// Reso a nuovi che contenente contro tutti i posti di lavoro in "di"
// creato dopo 3:3:44 on 3 / 3 / 1997:
nuovoq = QueFilter(que, JobDateTimeCreatedGet, OP_GT,
(3|3|1997@3:3:44));

// NOTA: I i "di" is non modificato
// qualunque.
}

Int Ordina (Imposta Lavoro s, Divertimento Int chiave, Int ordine)

Int Ordina (Imposta Lavoro s, Divertimento Corda chiave, Int ordine)

Int Ordina (Imposta Lavoro s, Divertimento galleggiante chiave, Int ordine)

Int Ordina (Imposta Lavoro s, Divertimento Appuntamento chiave, Int ordine)

Int Ordina (Imposta Lavoro s, Divertimento Taglia chiave, Int ordine)

where s l'insieme dei lavori da ordinare. chiave è la chiave di ordinamento che è a
funzione il cui unico argomento è di tipo Job, minimo è l'ordinamento
ordine: ASC, DESC.

Descrizione: ordina gli elementi di s , in ASCending o
Ordine discendente dei valori che sono stati restituiti dal chiave funzione, come
applicato a ogni membro dell'insieme dei lavori. Il s l'oggetto è modificato
con questa chiamata Questo restituisce SUCCESSO o FAIL a seconda del risultato di
il tipo.

Consigli d'uso:
Taglia JobMemReqGet(Lavoro lavoro)
{
Taglia me;

mem = JobSizeResReqGet(lavoro, "mem");
ritorno(mem);
}

programma_principale()
{
server maestro;

Impostato Lavoro lavori;

Int ordine;

// ottenere locale server
Mastercard = AllServersLocalHostGet();

posti di lavoro = ServerLavoriOttieni(maestro);
Ordina (lavori, Priorità lavoroOttieni, ASC);
Ordina (lavori, JobId Ottieni, DEC);
minimo = ASC;
Ordina (lavori, JobDateTimeCreatedGet, ordine);
minimo = DISCESA;
Ordina (lavori, JobMemReqGet, ordine);
}

Int Ordina (Imposta Che s, Divertimento Int chiave, Int ordine)

Int Ordina (Imposta Che s, Divertimento Corda chiave, Int ordine)

Int Ordina (Imposta Che s, Divertimento galleggiante chiave, Int ordine)

Int Ordina (Imposta Che s, Divertimento Appuntamento chiave, Int ordine)

Int Ordina (Imposta Che s, Divertimento Taglia chiave, Int ordine)

where s l'insieme di code da ordinare. chiave è la chiave di ordinamento che è a
funzione il cui unico argomento è di tipo Que, minimo è l'ordinamento
ordine: ASC, DESC.

Descrizione: ordina gli elementi di s , in ASCending o
Ordine discendente dei valori che sono stati restituiti dal chiave funzione, come
applicato a ogni membro dell'insieme di code. Il s l'oggetto è
modificato con questa chiamata. Questo restituisce SUCCESSO o FAIL a seconda di
esito del genere.

Consigli d'uso:
Taglia QueMemAvailGet(Que di)
{
Taglia me;

mem = QueSizeResAvailGet(que, "mem");
ritorno(mem);
}

programma_principale()
{
server maestro;

Impostato Che domande;
Int ordine;

// ottenere locale server
Mastercard = AllServersLocalHostGet();

ques = ServerQuuesGet(maestro);
Ordina (domande, QuePriorityOttieni, ASC);
Ordina (domande, QueNameGet, ASC);
minimo = DISCESA;
Ordina (domande, QueMemAvailGet, ordine);
}

Int Ordina (Imposta server s, Divertimento Int chiave, Int ordine)

Int Ordina (Imposta server s, Divertimento Corda chiave, Int ordine)

Int Ordina (Imposta server s, Divertimento galleggiante chiave, Int ordine)

Int Ordina (Imposta server s, Divertimento Appuntamento chiave, Int ordine)

Int Ordina (Imposta server s, Divertimento Taglia chiave, Int ordine)

where s l'insieme di server da ordinare. chiave è la chiave di ordinamento che è
una funzione il cui unico argomento è di tipo Server, minimo Europe è
ordinamento: ASC, DESC.

Descrizione: ordina gli elementi di s , in ASCending o
Ordine discendente dei valori che sono stati restituiti dal chiave funzione, come
applicato a ogni membro del set di server. Il s l'oggetto è
modificato con questa chiamata. Questo restituisce SUCCESSO o FAIL a seconda di
esito del genere.

Consigli d'uso:
Taglia ServerMemAvailGet(Server servi)
{
Taglia me;

mem = ServerSizeResAvailGet(serv, "mem");
ritorno(mem);
}

programma_principale()
{
Impostato server server;

Int ordine;

Int macerare;

servitore = AllServersGet();

macerare = Ordina(sserver, ServerMaxRunJobsOttieni, ASC);
Ordina(sserver, ServerInetAddrGet, ASC);

minimo = DISCESA;
Ordina(sserver, ServerMemAvailOttieni, ordine);
}

Int Ordina (Imposta CNodo s, Divertimento Int chiave, Int ordine)

Int Ordina (Imposta CNodo s, Divertimento Corda chiave, Int ordine)

Int Ordina (Imposta CNodo s, Divertimento galleggiante chiave, Int ordine)

Int Ordina (Imposta CNodo s, Divertimento Appuntamento chiave, Int ordine)

Int Ordina (Imposta CNodo s, Divertimento Taglia chiave, Int ordine)

where s l'insieme dei nodi da ordinare. chiave è la chiave di ordinamento che è a
funzione il cui unico argomento è di tipo CNode, minimo è l'ordinamento
ordine: ASC, DESC.

Descrizione: ordina gli elementi di s , in ASCending o
Ordine discendente dei valori che sono stati restituiti dal chiave funzione, come
applicato a ogni membro dell'insieme dei nodi. Il s l'oggetto è
modificato con questa chiamata. Questo restituisce SUCCESSO o FAIL a seconda di
esito del genere.

Consigli d'uso:
Taglia CNodeMyMemAvailGet(CNode cmq)
{
Taglia me;

mem = CNodeMemAvailGet(cn, "virtuale");
ritorno(mem);
}

programma_principale()
{
Impostato CNodo snodo;

Int ordine;

snodo = AllNodesGet();

Ordina (snodo, CNodeIdletimeOttieni, ASC);
Ordina (snodo, CNodeName Ottieni, ASC);
minimo = DISCESA;
Ordina (snodo, CNodeMyMemAvailGet, ordine);
}

CNode..Ottieni() FUNZIONI


I valori di ritorno delle funzioni CNode..Get() discussi nella sezione precedente sono
ottenuto inviando query di risorse al MOM del CNode ad ogni iterazione di schedulazione.
Per esempio, CNodeLoadAveGet(nodo) restituirà il valore ottenuto da alcuni
resource> query (potrebbe essere la stringa "loadave") inviata alla MOM del nodo. Il
" -> Le mappature CNode..Get()" sono stabilite internamente, ma possono essere
modificate o più mappature possono essere aggiunte tramite il file di configurazione dello scheduler. La configurazione
il file è discusso in pbs_sched_basl(8B).
Le mappature già stabilite sono riportate di seguito:

Per tutte le architetture:

CNode..Ottieni() presenti chiamata host risorsa
======================== =============
CNodeOsGet(nodo) arco
CNodeLoadAveGet(nodo) carica
CNodeIdletimeGet(nodo) tempo di inattività

Usa basl2cB online utilizzando i servizi onworks.net


Server e workstation gratuiti

Scarica app per Windows e Linux

Comandi Linux

Ad