Page principale   Liste par ordre alphabétique   Liste des composants   Liste des fichiers   Composants   Déclarations  

Référence du fichier commandes.h

#include "lib_ksinu.h"
#include "interpreteur.h"
#include "fifo.h"
#include "signaux.h"

Aller au code source de ce fichier.

Composants

struct  parametre
 Structure correspondant a un parametre de commande.


Définitions des macros

#define P_CONST   0
#define P_REF   1
#define P_DIRECT   0
#define P_INDIR   1

Définitions des types

typedef parametre param_t

Fonctions

int cmd_cpile (int pid, mot_t mot)
 Execute l'instruction CPILE.

int cmd_dpile (int pid, mot_t mot)
 Execute l'instruction DPILE.

int cmd_donnees (int pid, mot_t mot)
 Commande pour fixer la taille de la zone de donnees.

int cmd_affect (int pid, mot_t mot)
 Execute l'instruction AFFECTE ref = ref_cst.

int cmd_affectp (int pid, mot_t mot)
 Execute l'instruction AFFECTE+ ref += ref_cst.

int cmd_affectsp (int pid, mot_t mot)
 Execute l'instruction AFFECTESP.

int cmd_test (int pid, mot_t mot)
 Execute l'instruction TEST.

int cmd_si (int pid, mot_t mot)
 Execute l'instruction SI.

int cmd_saut (int pid, mot_t mot)
 Execute l'instruction SAUT.

int cmd_appel (int pid, mot_t mot)
 Commande d'appel de fonction.

int cmd_retour (int pid)
 Commande de retour de fonction.

int cmd_fin (int pid)
 Commande TRAPPE terminant le processus.

int cmd_id (int pid)
 Commande TRAPPE qui retourne le pid du processus.

int cmd_idp (int pid)
 Commande TRAPPE qui retourne le ppid du processus.

int cmd_capture (int pid)
 Commande TRAPPE qui associe un handler a un signal pour le processus.

int cmd_emets (int pid)
 Commande TRAPPE qui envoie a un processus un signal.

int cmd_recouvre (int pid)
 Commande TRAPPE qui recouvre l'espace memoire d'un processus pour executer un autre programme.

int cmd_clone (int pid)
 Commande TRAPPE qui duplique l'espace memoire
.


int cmd_attends (int pid)
 Commande TRAPPE qui suspend le processu jusqu'à la mort d'un fils.

int cmd_lit (int pid)
 Commande TRAPPE qui lit une lettre ds le tube d'entree.

int cmd_ecrit (int pid)
 Commande TRAPPE qui ecrit une lettre ds le tube de sortie.

int terminer_proc (int pid)
 Termine un processus proprement.

int supprimer_proc (int pid)
 Supprime un proc et les pages mem attachees.

int supprimer_partie_proc (int pid)
 Supprime les pages mem attachees au processus.

int condition_vraie (mot_t mot)
 Regarde l'etat du drapeau du saut conditionnel.

int changer_condition (int condition, mot_t mot)
 Modifie l'etat du drapeau du saut conditionnel.

int parser_param (int pid, mot_t mot, param_t tab_param[2], int nb)
 Parse un mot contenant une instruction.


Description détaillée

Entete de commandes.c

Définition dans le fichier commandes.h.


Documentation de la fonction

int changer_condition int    condition,
mot_t    mot
 

Modifie l'etat du drapeau du saut conditionnel L'information est stockee sur le 4eme bit de poids fort (00010000) du mot.

Paramètres:
condition  : le nouvel etat du drapeau
mot  : mot correspondant a l'entree du processus ds la table des processus
Renvoie:
l'ancien etat

Définition à la ligne 344 du fichier commandes.c.

Référencé par cmd_test().

int cmd_affect int    pid,
mot_t    mot
 

Execute l'instruction AFFECTE ref = ref_cst.
Stocke a l'adresse du 1er arg la valeur du 2eme arg . Puis deplace le compteur programme sur l'instruction suivante

Paramètres:
pid  : pid du processus
mot  : mot correspondant à l'instruction
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 594 du fichier commandes.c.

Références parametre::ad, ecrire_mot(), ecrire_mot_mem(), lire_mot(), lire_mot_mem(), vad_t::num, parser_param(), parametre::type, parametre::zone, et vad_t::zone.

Référencé par next_inst().

int cmd_affectp int    pid,
mot_t    mot
 

Execute l'instruction AFFECTE+ ref += ref_cst
Stocke a l'adresse du 1er arg la valeur du 2eme arg ajoutee a la valeur du 1er . Puis deplace le compteur programme sur l'instruction suivante

Paramètres:
pid  : pid du processus
mot  : mot correspondant à l'instruction
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 654 du fichier commandes.c.

Références parametre::ad, ecrire_mot(), ecrire_mot_mem(), lire_mot(), lire_mot_mem(), vad_t::num, parser_param(), parametre::type, parametre::zone, et vad_t::zone.

Référencé par next_inst().

int cmd_affectsp int    pid,
mot_t    mot
 

Execute l'instruction AFFECTESP Stocke a l'adresse du 1er arg la valeur du 2eme arg qui correspond a un pointeur sur fonction.Puis deplace le compteur programme sur l'instruction suivante.

Paramètres:
pid  : pid du processus
mot  : mot correspondant à l'instruction
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 724 du fichier commandes.c.

Références parametre::ad, ecrire_mot(), ecrire_mot_mem(), lire_mot_mem(), vad_t::num, parser_param(), parametre::zone, et vad_t::zone.

Référencé par next_inst().

int cmd_appel int    pid,
mot_t    mot
 

Commande d'appel de fonction :

  • Memorise le compteur programme sur la pile
  • Modifie le compteur programme pour qu'il pointe sur la 1ere instruction de la fonction appelee
Paramètres:
pid  : num du processus en cours d'execution
mot  : mot correspondant a l'instruction
Renvoie:
  • -1 en cas d'echec
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 417 du fichier commandes.c.

Références parametre::ad, changer_esp(), ecrire_mot(), ecrire_mot_mem(), lire_etat(), lire_mot_mem(), vad_t::num, parser_param(), et vad_t::zone.

Référencé par next_inst().

int cmd_attends int    pid
 

Commande TRAPPE qui suspend le processus jusqu'à la mort d'un fils.
Incremente le compteur programme.
Un argument : P1 l'adresse memoire ou stocker la valeur de retour du fils Retourne :

  • 255 en cas d'echec
  • le pid du fils sinon
Paramètres:
pid  : pid du processus
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 1634 du fichier commandes.c.

Références changer_etat(), ecrire_mot(), ecrire_mot_mem(), lire_etat(), lire_mot(), lire_mot_mem(), lire_ppid(), lire_type_pp(), liste_proc, liste_supp_pid(), vad_t::num, rapatrier_page_swap(), supprimer_proc(), et vad_t::zone.

Référencé par next_inst().

int cmd_capture int    pid
 

Commande TRAPPE qui associe un handler a un signal pour le processus.
Incremente le compteur programme.
Ses arguments:

  • P1: le signal
  • P2: pointeur sur le handler
Paramètres:
pid  : pid du processus
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 984 du fichier commandes.c.

Références add_sig(), signal::cp, ecrire_mot(), ecrire_mot_mem(), lire_mot(), lire_mot_mem(), vad_t::num, sig_ksinu2lib(), signal::signal, et vad_t::zone.

Référencé par next_inst().

int cmd_clone int    pid
 

Commande TRAPPE qui duplique l'espace memoire
Incremente le compteur programme.
Aucun argument.
Retourne :

  • 0 ds l'espace memoire du fils
  • le pid du fils si on est ds l'espace memoire du pere
Paramètres:
pid  : pid du processus
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 1441 du fichier commandes.c.

Références changer_type_pp(), ecrire_mot(), ecrire_mot_mem(), liberer_page(), liberer_pid(), lire_etat(), lire_mot_mem(), lire_type_pp(), liste_acces_page(), liste_pages, vad_t::num, page_forcee(), pid_libre(), rapatrier_page_swap(), supprimer_proc(), et vad_t::zone.

Référencé par next_inst().

int cmd_cpile int    pid,
mot_t    mot
 

Augmente la taille de la pile.
Et incremente la valeur du compteur programme

Paramètres:
pid  : numero du processus dont on veut augementer la taille de la pile
nbre  : nombre de mot a augementer
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 1776 du fichier commandes.c.

Références parametre::ad, changer_esp(), ecrire_mot_mem(), lire_mot_mem(), parser_param(), et parametre::type.

Référencé par next_inst().

int cmd_donnees int    pid,
mot_t    mot
 

Commande pour fixer la taille de la zone de donnees.
Elle ne peut etre appelee qu'en debut de programme (compteur programme = 0)

Paramètres:
pid  : num du processus en cours d'execution
mot  : mot correspondant a l'instruction
Renvoie:
  • -1 en cas d'erreur
  • 0 sinon

Définition à la ligne 513 du fichier commandes.c.

Références parametre::ad, ecrire_mot_mem(), lire_etat(), lire_mot_mem(), lire_type_pp(), page_forcee(), parser_param(), rapatrier_page_swap(), et parametre::type.

Référencé par next_inst().

int cmd_dpile int    pid,
mot_t    mot
 

Diminue la taille de la pile.
En plus de modifier la taille :

  • incremente la valeur du compteur programme
Paramètres:
pid  : numero du processus dont on veut diminuer la taille de la pile
nbre  : nombre de mot a diminuer
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 1825 du fichier commandes.c.

Références parametre::ad, changer_esp(), ecrire_mot_mem(), lire_mot_mem(), parser_param(), et parametre::type.

Référencé par next_inst().

int cmd_ecrit int    pid
 

Commande TRAPPE qui ecrit une lettre ds le tube de sortie. Commande bloquante
Incremente le compteur programme.
Ses arguments:

  • P1: l'adresse (Mx) ou est stocke le caractere a ecrire
  • P2: le nombre de carateres a ecrire (bloque ici a 1)
Paramètres:
pid  : pid du processus
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 1235 du fichier commandes.c.

Références changer_etat(), ecrire_mot(), ecrire_mot_mem(), ecrire_stdout(), lire_mot(), lire_mot_mem(), liste_proc, liste_supp_pid(), vad_t::num, et vad_t::zone.

Référencé par next_inst().

int cmd_emets int    pid
 

Commande TRAPPE qui envoie a un processus un signal
Incremente le compteur programme.
Ses arguments:

  • P1: le numero de processus
  • P2: le signal
Paramètres:
pid  : pid du processus
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 1054 du fichier commandes.c.

Références ecrire_mot(), ecrire_mot_mem(), lire_mot(), lire_mot_mem(), vad_t::num, sig_ksinu2lib(), et vad_t::zone.

Référencé par next_inst().

int cmd_fin int    pid
 

Commande TRAPPE terminant le processus
Incremente le compteur programme.
Ses arguments:

  • P0: la valeur de retour du processus
Paramètres:
pid  : pid du processus
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 1337 du fichier commandes.c.

Références terminer_proc().

Référencé par next_inst().

int cmd_id int    pid
 

Commande TRAPPE qui retourne le pid du processus. C'est a dire qui l'ecrit sur la pile
Incremente le compteur programme.

Paramètres:
pid  : pid du processus
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 899 du fichier commandes.c.

Références ecrire_mot(), ecrire_mot_mem(), lire_mot_mem(), vad_t::num, et vad_t::zone.

Référencé par next_inst().

int cmd_idp int    pid
 

Commande TRAPPE qui ecrit sur le haut de la pile le ppid du processus.
Incremente le compteur programme.

Paramètres:
pid  : pid du processus
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 938 du fichier commandes.c.

Références ecrire_mot(), ecrire_mot_mem(), lire_mot_mem(), lire_ppid(), vad_t::num, et vad_t::zone.

Référencé par next_inst().

int cmd_lit int    pid
 

Commande TRAPPE qui lit une lettre ds le tube d'entree. La lecture est bloquante.
Incremente le compteur programme.
Ses arguments:

  • P1: l'adresse (Mx) ou on ecrit le caractere
  • P2: le nombre de carateres a lire (bloque ici a 1)
Paramètres:
pid  : pid du processus
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 1130 du fichier commandes.c.

Références changer_etat(), ecrire_mot(), ecrire_mot_mem(), lire_mot(), lire_mot_mem(), lire_stdin(), liste_proc, liste_supp_pid(), vad_t::num, et vad_t::zone.

Référencé par next_inst().

int cmd_recouvre int    pid
 

Commande TRAPPE qui recouvre l'espace memoire d'un processus pour executer un autre programme.
Incremente le compteur programme.
Argument : l'adresse ou est stocke le nom du fichier objet (1 caractere) Retourne :

  • -1 en cas d'erreur
  • rien sinon
Paramètres:
pid  : pid du processus
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 1357 du fichier commandes.c.

Références changer_ppid(), ecrire_mot(), lancer_prog(), liberer_page(), liberer_page_swap(), lire_etat(), lire_mot(), lire_mot_mem(), lire_ppid(), lire_type_pp(), vad_t::num, supprimer_partie_proc(), et vad_t::zone.

Référencé par next_inst().

int cmd_retour int    pid
 

Commande de retour de fonction

  • Lit l'adresse de retour sur le haut de la pile
  • Depile la pile de 1
  • Modifie le compteur programme
Paramètres:
pid  : num du processus en cours d'execution
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sino

Définition à la ligne 472 du fichier commandes.c.

Références changer_esp(), ecrire_mot_mem(), lire_etat(), lire_mot(), lire_mot_mem(), vad_t::num, et vad_t::zone.

Référencé par next_inst().

int cmd_saut int    pid,
mot_t    mot
 

Execute l'instruction SAUT.
Deplace le compteur programme a l'endroit indique par le 1er parametre.

Paramètres:
pid  : pid du processus
mot  : mot correspondant à l'instruction
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 870 du fichier commandes.c.

Références parametre::ad, ecrire_mot_mem(), lire_mot_mem(), et parser_param().

Référencé par next_inst().

int cmd_si int    pid,
mot_t    mot
 

Execute l'instruction SI :

  • si le drapeau des sauts conditionnel est leve -> effectue le saut
  • sinon deplace juste le compteur programme a l'instruction suivante
Paramètres:
pid  : pid du processus
mot  : mot correspondant à l'instruction
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 836 du fichier commandes.c.

Références parametre::ad, condition_vraie(), ecrire_mot_mem(), lire_mot_mem(), et parser_param().

Référencé par next_inst().

int cmd_test int    pid,
mot_t    mot
 

Execute l'instruction TEST.
Cette commande verifie l'egalite (en valeur) des 2 parametres puis leve ou abaisse en consequence le drapeau pour le saut conditionnnel. Elle incremente aussi le compteur programme.

Paramètres:
pid  : pid du processus
mot  : mot correspondant à l'instruction
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas de violation de memoire
  • 0 sinon

Définition à la ligne 768 du fichier commandes.c.

Références parametre::ad, changer_condition(), ecrire_mot_mem(), lire_mot(), lire_mot_mem(), vad_t::num, parser_param(), parametre::type, parametre::zone, et vad_t::zone.

Référencé par next_inst().

int condition_vraie mot_t    mot
 

Regarde l'etat du drapeau du saut conditionnel. L'information est stockee sur le 4eme bit de poids fort (00010000) du mot.

Paramètres:
mot  : mot correspondant a l'entree du processus ds la table des processus
Renvoie:
  • 1 si le drapeau est leve (ie la condition est vraie)
  • 0 si le drapeau est baisse

Définition à la ligne 333 du fichier commandes.c.

Référencé par cmd_si().

int parser_param int    pid,
mot_t    mot,
param_t    tab_param[2],
int    nb
 

Parse un mot contenant une instruction. Extrait de ce mot, les 2 parmetres de l'instruction ranges dans une structure.Cette fonction effectue egalement un pre-traitement en traitant le cas des indirections.

Paramètres:
mot  : mot contenant une instruction
tab_param  : tableau ou sera stocke les 2 parametres
nb  : nombre de parametres a parser
Renvoie:
  • -1 en cas d'erreur inconnue
  • -2 en cas d'indirection erronnee
  • 0 sinon

Définition à la ligne 364 du fichier commandes.c.

Références parametre::ad, lire_mot(), vad_t::num, parametre::type, parametre::zone, et vad_t::zone.

Référencé par cmd_affect(), cmd_affectp(), cmd_affectsp(), cmd_appel(), cmd_cpile(), cmd_donnees(), cmd_dpile(), cmd_saut(), cmd_si(), et cmd_test().

int supprimer_partie_proc int    pid
 

Supprime partiellement un processus :

  • Supprime les pages physiques attachees au processus sauf la page qui contient la table des pages car elle contient aussi
    • le ppid (qui n'a pas pu etre mis dans la table des processus faute de place).
    • la valeur de retour du processus
  • Supprime les signaux a intercepter de table_capture
Paramètres:
pid  : Numero du processus qu'on veut supprimer
Renvoie:
  • -1 erreur: processus inchange
  • -2 erreur: processus partiellement supprime (des pages sont probablement perdues)
  • 0 sinon

Définition à la ligne 240 du fichier commandes.c.

Références ecrire_mot_mem(), liberer_page(), liberer_page_swap(), lire_etat(), lire_mot_mem(), lire_type_pp(), rapatrier_page_swap(), et supp_all_sig().

Référencé par cmd_recouvre(), supprimer_proc(), et terminer_proc().

int supprimer_proc int    pid
 

Supprime un proc :

  • libere son numero dans la table des processus
  • libere toutes ses pages physiques (en memoire principale ou secondaire)
Paramètres:
pid  : Numero du processus qu'on veut supprimer
Renvoie:
  • -1 erreur: processus inchange
  • -2 erreur: processus partiellement supprime (des pages sont probablement perdues)
  • 0 sinon

Définition à la ligne 186 du fichier commandes.c.

Références liberer_page(), liberer_pid(), lire_etat(), lire_mot_mem(), lire_type_pp(), liste_proc, liste_supp_pid(), rapatrier_page_swap(), et supprimer_partie_proc().

Référencé par cmd_attends(), cmd_clone(), lancer_prog(), et terminer_proc().

int terminer_proc int    pid
 

Termine un processus proprement : avant du supprimer completement un processus (fonction supprimer_proc), il faut

  • regarder qui est le pere de ce processus.
    • le pere est mort -> erreur !
    • ppid = NO_PERE -> On supprime completement ce processus
      (NO_PERE (0) est le "processus" qui tue tous les orphelins)
    • ppid != 0 -> On regarde s'il attend la mort d'un fils.
      • si oui :
        • ecrit ds P0 du pere le pid
        • lit $n ds P1 du pere et ecrit ds M$n du pere la valeur de sortie du processus
        • le reveille
      • si non :
        • ecrit P0 (valeur de retour du processus) dans le mot NUM_MOT_EXIT de la table des pages du processus
        • se met en E_ZOMBI
  • regarder l'etat de ses fils:
    • E_ZOMBI -> les supprimer completement
    • autre -> les rendre orphelins
Paramètres:
pid  : Numero du processus qu'on veut supprimer
Renvoie:
  • -1 erreur: processus inchange
  • -2 erreur: processus partiellement supprime (des pages sont probablement perdues)
  • 0 sinon

Définition à la ligne 38 du fichier commandes.c.

Références changer_etat(), changer_ppid(), ecrire_mot(), ecrire_mot_mem(), lire_etat(), lire_mot(), lire_mot_mem(), lire_ppid(), lire_type_pp(), liste_add_pid(), liste_proc, vad_t::num, rapatrier_page_swap(), supprimer_partie_proc(), supprimer_proc(), et vad_t::zone.

Référencé par cmd_fin(), interprete_signaux(), et next_inst().


Généré le Sun Sep 29 22:47:23 2002 pour KSInu par doxygen1.2.16