PROCPS(3)

NAMN
procps — API för att komma åt information på systemnivå i filsystemet /proc

SYNOPSIS
Fem distinkta gränssnitt representeras i detta synopsis namnges efter filen de använder i pseudofilsystemet /proc: diskstats, meminfo, slabinfo, stat och vmstat.
    #include <libproc2/namngivet_gränssnitt.h>
    int procps_new   (struct info **info);
    int procps_ref   (struct info  *info);
    int procps_unref (struct info **info);
    struct result *procps_get (
        struct info *info,
    [   const char *namn,      ]   endast diskstats-api:et
        enum item post);
    struct stack *procps_select (
        struct info *info,
    [   const char *namn,      ]   endast diskstats-api:et
        enum item *poster,
        int postantal);
    struct reaped *procps_reap (
        struct info *info,
    [   enum reap_type vad,   ]   endast stat-api:et
        enum item *poster,
        int postantal);
    struct stack **procps_sort (
        struct info *info,
        struct stack *stackar[],
        int stackantal,
        enum item sortpost,
        enum sort_order ordning);
    Ovanstående funktioner och poster är generella men det specifika namngivna_gränssnittet skall också vara en del av alla identifierare. Till exempel, ”procps_new” skulle faktiskt vara ”procps_meminfo_new” och "info" skulle faktiskt vara ”diskstats_info”, etc. Samma namngivna_gränssnitt används i varje huvudfilnamn med en ändelse .h tillagd. Länka med -lproc2.

BESKRIVNING

  Översikt
Centralt för dessa gränssnitt är en enkel ”resultat”-post so avspelgar ett ”element” plus dess värde (i en union med typer från standardspråket C som medlemmar). Alla ”resultat”-poster allokeras automatiskt och levereras av biblioteket. Genom att ange en vektor av ”element” kan dessa strukturer organiseras som en ”stack”, som potentiellt ger många resultat med ett enda funktionsanrop. Alltså kan en ”stack” ses som en post med variabel längd vars innehåll och ordning helt avgörs av användaren. Som en del av varje gränssnitt finns det två unika uppräknare. Elementen ”noop” och ”extra” finns för att hålla användarvärden. De sätts aldrig av bilbioteket, men resultatet ”extra” kommer nollställas med varje biblioteksinteratkion. Huvudfilen namngivet_gränssnitt kommer vara ett viktigt dokument under programutveckling. Där hittar man tillgängliga element, deras returtyper (medlemsnamn i posten ”resultat”) och källan för sådana värden. Ytterligare uppräknare och poster dokumenteras också där.

  Användning
Följande skulle vara en typisk sekvens av anrop till dessa gränssnitt.
1. procps_new()
2. procps_get(), procps_select() eller procps_reap()
3. procps_unref()
Funktionen get används för att hämta posten ”resultat” för ett visst ”element”. Alternativt är ett GET-makro tillgängligt när endast returvärdet är intressant. Funktionen select kan hämta flera ”resultat”-poster i en enda ”stack”. För oförutsägbara variabla resultat exporterar gränssnitten diskstats, slabinfo och stat en funktion reap. Den används för att hämta multipla ”stackar” där var och en innehåller flera ”resultat”-poster. Om önskas kan en användare välja att sortera dessa resultat. För att använda någon ”stack”, och komma åt individuella ”resultat”-poster, krävs en relativ_uppräkning som visas i makrot VAL definierat i huvudfilen. Sådana värden skulle kunna hårdkodas som: 0 till antalelement-1. Dock uppfylls detta behov typiskt genom att skapa ens egna uppräknare motsvarande ordningen i vektorn av ”element”.

  Förbehåll
Funktionerna new, ref, unref, get och select är tillgängliga i alla fem gränssnitten. För funktionerna new och unref måste adressen till en info-postpekare ges. Med new måste den ha initierats till NULL. Med unref kommer den återställas till NULL om referensräknaren når noll. Vad gäller gränssnittet diskstats identifierar en parameter namn till funktionerna get och select en disk eller ett partitionsnamn För gränssnittet stat identifierar en vad-parameter till funktionen reap huruvida data för endast CPU:er eller både CPU:er och NUMA-noder skall samlas in. När man använder funktionen sort skall normalt parametrarna stackar och stackantal normalt vara de som returneras av posten ”reaped”.

RETURVÄRDE

  Funktioner som returnerar en ”int”
Ett fel kommer indikera ett negativt tal som alltid är inversen av något känt värde från errno.h. Lyckat resultat markeras med ett returvärde av noll. Dock returnerar funktionerna ref och unref det aktuella värdet på referensräknaren för info-posten.

  Funktioner som returnerar en ”adress”
An error will be indicated by a NULL return pointer with the reason found in the formal errno value. Success is indicated by a pointer to the named structure.

DEBUGGING
To aid in program development, there is a provision that can help ensure `result' member references agree with library expectations. It assumes that a supplied macro in the header file is used to access the `result' value. This feature can be activated through either of the following methods and any discrepancies will be written to stderr.

1)  Add CFLAGS='-DXTRA_PROCPS_DEBUG' to any other ./configure options employed.

2)  Add #include <procps/xtra-procps-debug.h> to any program after the named interface includes.

This verification feature incurs substantial overhead. Therefore, it is important that it not be activated for a production/release build.

SE ÄVEN
procps_misc(3), procps_pids(3), proc(5).