PROCPS(3) Library Functions Manual PROCPS(3) NAMN procps -- API for att komma at information pa systemniva i filsystemet /proc SYNOPSIS Fem distinkta granssnitt representeras i detta synopsis namnges efter filen de anvander i pseudofilsystemet /proc: diskstats, meminfo, slabinfo, stat och vmstat. #include 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); Ovanstaende funktioner och poster ar generella men det specifika namngivna_granssnittet skall ocksa 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_granssnitt anvands i varje huvudfilnamn med en andelse .h tillagd. Lanka med -lproc2. BESKRIVNING Oversikt Centralt for dessa granssnitt ar en enkel "resultat"-post so avspelgar ett "element" plus dess varde (i en union med typer fran standardspraket 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 manga resultat med ett enda funktionsanrop. Alltsa kan en "stack" ses som en post med variabel langd vars innehall och ordning helt avgors av anvandaren. Som en del av varje granssnitt finns det tva unika uppraknare. Elementen "noop" och "extra" finns for att halla anvandarvarden. De satts aldrig av bilbioteket, men resultatet "extra" kommer nollstallas med varje biblioteksinteratkion. Huvudfilen namngivet_granssnitt kommer vara ett viktigt dokument under programutveckling. Dar hittar man tillgangliga element, deras returtyper (medlemsnamn i posten "resultat") och kallan for sadana varden. Ytterligare uppraknare och poster dokumenteras ocksa dar. Anvandning Foljande skulle vara en typisk sekvens av anrop till dessa granssnitt. 1. procps_new() 2. procps_get(), procps_select() eller procps_reap() 3. procps_unref() Funktionen get anvands for att hamta posten "resultat" for ett visst "element". Alternativt ar ett GET-makro tillgangligt nar endast returvardet ar intressant. Funktionen select kan hamta flera "resultat"-poster i en enda "stack". For oforutsagbara variabla resultat exporterar granssnitten diskstats, slabinfo och stat en funktion reap. Den anvands for att hamta multipla "stackar" dar var och en innehaller flera "resultat"-poster. Om onskas kan en anvandare valja att sortera dessa resultat. For att anvanda nagon "stack", och komma at individuella "resultat"-poster, kravs en relativ_upprakning som visas i makrot VAL definierat i huvudfilen. Sadana varden skulle kunna hardkodas som: 0 till antalelement-1. Dock uppfylls detta behov typiskt genom att skapa ens egna uppraknare motsvarande ordningen i vektorn av "element". Forbehall Funktionerna new, ref, unref, get och select ar tillgangliga i alla fem granssnitten. For funktionerna new och unref maste adressen till en info-postpekare ges. Med new maste den ha initierats till NULL. Med unref kommer den aterstallas till NULL om referensraknaren nar noll. Vad galler granssnittet diskstats identifierar en parameter namn till funktionerna get och select en disk eller ett partitionsnamn For granssnittet stat identifierar en vad-parameter till funktionen reap huruvida data for endast CPU:er eller bade CPU:er och NUMA-noder skall samlas in. Nar man anvander funktionen sort skall normalt parametrarna stackar och stackantal normalt vara de som returneras av posten "reaped". RETURVARDE Funktioner som returnerar en "int" Ett fel kommer indikera ett negativt tal som alltid ar inversen av nagot kant varde fran errno.h. Lyckat resultat markeras med ett returvarde av noll. Dock returnerar funktionerna ref och unref det aktuella vardet pa referensraknaren for info-posten. Funktioner som returnerar en "adress" Ett fel kommer indikeras av en NULL-returpekare och orsaken gar att hitta i dett formella errno-vardet. Lyckat resultat indikeras med en pekare till den namngivna posten. FELSOKNING For att hjalpa till i programutveckling finns det ett medel som kan hjalpa till att sakerstalla att "resultat"-medlemsreferenser stammer overens med bibliotekets forvantningar. Det forutsatter att ett av de tillgangliga makrona i huvudfilen anvands for att komma at "resultat"-vardet. Denna funktion kan aktiveras genom nagon av de foljande metoderna och eventuella avvikelser kommer att skrivas till standard fel. 1) Lagg till CFLAGS='-DXTRA_PROCPS_DEBUG' till eventuella ovriga flaggor som anvands till ./configure. 2) Lagg till #include till alla program efter inkluderandet av de namngivna granssnitten. Denna verifieringsfunktion orsakar en vasentlig kostnad. Darfor ar det viktigt att den inte ar aktiverad for produktions-/utgavebyggen. SE AVEN procps_misc(3), procps_pids(3), proc(5). libproc2 Augusti 2022 PROCPS(3)