= SoftWare/SignalCheckpoint / API - Application Programming Interface = L'API du module {{{SignalCheckpoint}}} est simple, réduite au maximum. C'est voulu. L'objectif est d'avoir une bibliothèque facile à mettre en oeuvre dans le cadre du calcul intensif. == Constantes == Le module Fortran '''{{{Signal_Checkpoint}}}''' exporte un certain nombre de signaux. Plutôt que de mettre tous les signaux, seuls les signaux utiles ont été définis. Il est très facile d'en rajouter un s'il le faut. {{{ integer,parameter :: SIGHUP = 1 ! Signal HUP integer,parameter :: SIGINT = 2 ! Signal INT integer,parameter :: SIGQUIT = 3 ! Signal QUIT integer,parameter :: SIGUSR1 = 10 ! Signal USR1 integer,parameter :: SIGUSR2 = 12 ! Signal USR2 integer,parameter :: SIGTERM = 15 ! Signal TERM integer,parameter :: SIGXCPU = 24 ! Signal XCPU }}} == Appels de fonction et de procédure == Quelques procédures et fonctions permettent la gestion de ces signaux * '''{{{signal_checkpoint_connect}}}''' {{{ subroutine signal_checkpoint_connect (SIG_NUM, EXIT) integer,intent(in) :: SIG_NUM logical,intent(in),optional :: EXIT }}} Appel à placer en début de programme afin d'indiquer le ou les signaux à prendre en compte. Le paramètre {{{EXIT}}} permet de lever un drapeau supplémentaire si le signal est reçu. Ce drapeau est utile si on souhaite que son programme puisse réagir de manière différente à deux signaux. * '''{{{signal_checkpoint_is_received}}}''' {{{ function signal_checkpoint_is_received () result (IS_RECEIVED) logical :: IS_RECEIVED }}} Fonction qui retourne positivement si un signal a été reçu. Il est donc temps de penser à finir proprement... * '''{{{signal_checkpoint_ask_for_exit_code}}}''' {{{ function signal_checkpoint_ask_for_exit_code () result (EXIT) logical :: EXIT }}} Drapeau permettant de savoir si le signal marqué {{{EXIT}}} a été reçu. Cela permet de quitter le programme avec un code d'erreur par exemple et non avec la valeur classique 0. En effet, ce code de retour peut être utilisé par le scheduleur ou le script de lancement batch pour savoir si le code doit être re-soumis ou non. * '''{{{signal_checkpoint_received_times}}}''' {{{ function signal_checkpoint_received_times () result (RECEIVED_TIMES) integer :: RECEIVED_TIMES }}} Fonction qui retourne le nombre de signaux reçu. Cette fonction ne sers à rien dans un code de calcul car ce nombre n'a pas de signification autre que {{{== 0}}} ou {{{> 0}}}, signification déjà donné par l'appel {{{signal_checkpoint_is_received}}}. Elle est juste utile en phrase de test afin de valider que l'on reçois bien les signaux !