Provided by: manpages-fr_1.67.0-1_all bug

NOM

       syslog,  klogctl  -  Lire  et/ou  effacer  les  buffers  circulaires de
       messages du noyau.

SYNOPSIS

       /* L’interface GlibC */
       #include <sys/klog.h>

       int klogctl(int type, char *bufp, int len);

       /* L’appel-système déclaré à la main */
       #include <unistd.h>

       #include <linux/unistd.h>

       _syscall3(int, syslog, int, type, char *, bufp, int, len);

       int syslog(int type, char *bufp, int len);

DESCRIPTION

       Cette  fonction  n’est  probablement  pas  celle  qui  vous  intéresse,
       regardez  plutot  syslog(3)  pour  l’interface  avec la bibliothèque C.
       Cette page ne documente que l’interface directe de l’appel-système avec
       le noyau.

       L’argument type détermine l’action effectuée par cette fonction.

       Extrait de kernel/printk.c:
       /*
        * Commandes de sys_syslog:
        *
        *   0 -- Fermer le journal (actuellement NOP)
        *   1 -- ouvrir le journal (actuellement NOP)
        *   2 -- Lire depuis le journal
        *   3 -- Lire jusqu’a 4Ko des derniers messages du buffer circulaire.
        *   4 -- Lire et effacer les 4Ko derniers messages du buffer circulaire.
        *   5 -- Vider le buffer circulaire
        *   6 -- Désactiver printk sur la console
        *   7 -- Activer printk sur la console
        *   8 -- Indiquer le niveau des messages à afficher sur la console.
        *   9 -- Renvoie le nombre de caractères non lus dans le buffer.
        */

       Seule  la  fonction  3 est autorisée pour les processus non Super-User.
       (La fonction 9 a été ajoutée dans le 2.4.10)

       Le buffer de journalisation du noyau.
       Le noyau dispose d’un  buffer  circulaire  d’une  longueur  LOG_BUF_LEN
       (4096  à  l’origine,  8192 depuis le 1.3.54, et 16384 depuis la version
       2.1.113) dans laquelle il stocke les messages  reçus  par  la  fonction
       printk().  Ce buffer est le journal du système.

       L’appel  syslog  (2,buf,len)  attend que ce journal soit non vide, puis
       lit au plus len octets qu’il place dans le buffer buf.  Il  renvoie  le
       nombre  d’octets  lus.  Les  octets  lus sont extraits du journal : les
       informations ne peuvent être lues qu’une seule fois.  C’est la fonction
       exécutée par le noyau quand un programme utilisateur lit /proc/kmsg.

       L’appel syslog (3,buf,len) lit les len dernier octets depuis le journal
       (de manière non destructive).  Il ne lira pas plus que  ce  qui  a  été
       écrit   dans   le   buffer  depuis  la  dernière  commande  de  lecture
       destructrice.  Il renvoie le nombre d’octets lus.

       L’appel syslog (4,buf,len) effectue la même chose puis vide le  buffer.

       L’appel syslog (5,dummy,idummy) vide uniquement le buffer.

       le niveau de journalisation (loglevel)
       La  routine du noyau printk() n’écrira un message sur la console que si
       celui-ci a un niveau de journalisation inférieur  à  la  valeur  de  la
       variable  console_loglevel  (initialement DEFAULT_CONSOLE_LOGLEVEL (7),
       mais augmenté à 10 si la ligne de commande du  noyau  contient  le  mot
       ‘debug’,  et  à  15  si  une faute du noyau se produit - en réalite les
       valeurs 10 et 15 sont idiotes et  n’apportent  rien  de  plus  que  8).
       Cette  variable  est  positionnée  (dans  l’intervalle 1-8) par l’appel
       syslog (8,dummy,value).  L’appel syslog (type,dummy,idummy)  avec  type
       égal  à 6 ou 7 la positionne à 1 (seulement les messages kernel panics)
       ou 7 (tout sauf les messages de débugging), respectivement.

       Chaque  ligne  de  texte  dans  un  message  a  son  propre  niveau  de
       journalisation.  Ce niveau est DEFAULT_MESSAGE_LOGLEVEL - 1 (6) à moins
       que la ligne ne commence par <d> où d est un chiffre dans  l’intervalle
       1-7.   La  signification  conventionnelle des niveaux de journalisation
       est définie dans <linux/kernel.h> comme suit :

       #define KERN_EMERG    "<0>"  /* système inutilisable             */
       #define KERN_ALERT    "<1>"  /* action à effectuer immédiatement */
       #define KERN_CRIT     "<2>"  /* conditions critiques             */
       #define KERN_ERR      "<3>"  /* conditions d’erreurs             */
       #define KERN_WARNING  "<4>"  /* message d’avertissement          */
       #define KERN_NOTICE   "<5>"  /* normal mais significatif         */
       #define KERN_INFO     "<6>"  /* informations                     */
       #define KERN_DEBUG    "<7>"  /* messages de débugging            */

VALEUR RENVOYÉE

       En cas d’erreur -1 est renvoyé et errno contient le code d’erreur.   En
       cas  de  réussite  syslog()  renvoie  le  nombre d’octets lus pour type
       valant 2, 3 ou 4, et 0 sinon.

ERREURS

       EPERM  Une tentative de changer console_loglevel ou d’effacer le buffer
              circulaire  du  noyau  par  un  processus  sans  les  privilèges
              Super-User.

       EINVAL Mauvais paramètres

       ERESTARTSYS
              L’appel-système a été interrompu par un signal -  rien  n’a  été
              lu.  (Ceci ne peut être vu que pendant un suivi de processus).

CONFORMITÉ

       Cet appel système est spécifique Linux et ne doit pas être employé dans
       des programmes destinés à être portables.

NOTES

       Depuis longtemps des gens trouvent regrettable qu’un  appel-système  du
       noyau  et  une  routine  de  bibliothèque aient le même nom bien qu’ils
       n’aient pas de rapports entre eux.  Dans les libc4 et libc5  le  numéro
       de  cet  appel-système  était  défini par SYS_klog.  Dans la GlibC 2.0,
       l’appel-système est nommé klogctl.

VOIR AUSSI

       syslog(3)

TRADUCTION

       Christophe Blaess, 1996-2003.