c.Gestiun semn
oldfunction=signal (signum, function);
unde:
-signum este numгrul semnalului pentru care procesul specificг acюiunea;
-function este adresa funcюiei (utilizatorului) pe care procesul dore?te s-o apeleze la recepюia semnalului. Apelul оntoarce valoarea oldfunction care a fost valoarea lui function оn cel mai recent apel al lui signal cu parametrul signum.
Procesul poate apela signal cu valoarea 1 sau 0 оn loc de adresa funcюiei: procesul va ignora viitoarele apariюii ale semnalului dacг valoarea parametrului este 1 ?i se оntoarce оn nucleu dacг valoarea lui este 0 (valoarea implicitг).
^algoritmul psig /* Algoritm pentru tratarea semnalelor */
^intrгri: niciuna
^ie?iri: niciuna
{
^obюine numгrul semnalului setat оn intrarea din tabela proceselor;
^?terge numгrul semnalului din intrarea tabelei proceselor;
^if( utilizatorul apelase funcюia sistemsignal pentru ignorarea acestui semnal)return;
^if( utilizatorul a specificat funcюia care sг trateze semnalul)
{
^obюine adresa virtualг utilizator a interceptorului de semnale pгstrat оn u area;
^?terge intrarea din u area care a conюinut adresa interceptorului de semnal;
^modificг contextul nivelului utilizator:
artificial creazг structura stivei utilizator pentru a mima apelarea funcюiei de interceptare a semnalului;
^modificг contextul nivelului sistem: scrie adresa interceptorului de semnal оn cвmpul PC al ^contextului regi?trilor salvaюi;
^return;
}
^if (semnalul este de tipul care face ca sistemul sг creeze o imagine internг unui proces)
{
^creazг fi?ierul numit "core" оn directorul curent;
^scrie conюinutul contextului nivelului utilizator оn fi?ierul "core";
}
^apeleazг imediat algoritmul exit;
}
^Cвnd trateazг un semnal nucleul determinг tipul semnalului ?i ?terge bitul semnalului tratat din intrarea corespunzгtoare tabelei proceselor, setat cвnd procesul a recepюionat semnalul. Dacг funcюia de tratare a semnalului are valoarea implicitг, nucleul va descгrca imaginea din memorie a procesului pentru anumite tipuri de semnale оnainte de a face exit.