plucky (3) procps.3.gz

Provided by: procps_4.0.4-4ubuntu5_amd64 bug

NAZWA

       procps - API do dostępu do informacji systemowych w systemie plików /proc

SKŁADNIA

       W  niniejszym  opisie  jest  reprezentowanych  pięć różnych interfejsów, nazwanych od plików służących do
       dostępu w pseudo systemie plików /proc: diskstats, meminfo, slabinfo, stat oraz vmstat.

           #include <libproc2/interfejs.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 *name,      ]   tylko API diskstats
               enum item item);

           struct stack *procps_select (
               struct info *info,
           [   const char *name,      ]   tylko API diskstats
               enum item *items,
               int numitems);

           struct reaped *procps_reap (
               struct info *info,
           [   enum reap_type what,   ]   tylko API stat
               enum item *items,
               int numitems);

           struct stack **procps_sort (
               struct info *info,
               struct stack *stacks[],
               int numstacked,
               enum item sortitem,
               enum sort_order order);

           Powyższe funkcje i struktury są ogólne, ale konkretne interfejsy stają się  częścią  identyfikatorów.
           Np. `procps_new' właściwie staje się `procps_meminfo_new', `info' staje się `diskstats_info' itd.

           Ten sam interfejs jest używany w nazwie każdego pliku nagłówkowego z dodanym rozszerzeniem `.h'.

           Konsolidować z -lproc2.

OPIS

   Przegląd
       Interfejsy  te opierają się na prostej strukturze `result', odzwierciedlającej element `item' wraz z jego
       wartością  (w  unii  ze  standardowymi  typami  C  jako  składowymi).  Wszystkie  struktury  `result'  są
       automatycznie przydzielane i dostarczane przez bibliotekę.

       Podając  tablicę  elementów  `item', struktury te mogą być zorganizowane w "stos", potencjalnie zwracając
       wiele wyników w pojedynczym wywołaniu funkcji. W ten  sposób  na  "stos"  można  patrzeć  jak  na  rekord
       zmiennej długości, którego zawartość i porządek są określane wyłącznie przez użytkownika.

       Częścią  każdego interfejsu jest para unikatowych enumeratorów. Elementy `noop' i `extra' istnieją w celu
       trzymania wartości użytkownika. Nie są nigdy ustawiane przez bibliotekę, ale wynik `extra' jest  zerowany
       przy każdej interakcji z biblioteką.

       Plik  nagłówkowy  interfejsu  jest  podstawowym dokumentem przy tworzeniu programu użytkownika. Tam można
       zaleźć dostępne elementy, ich  typ  zwracany  (nazwę  składowej  struktury  `result')  oraz  źródła  tych
       wartości. Tam też są udokumentowane dodatkowe enumeratory czy struktury.

   Użycie
       Poniżej znajduje się typowa sekwencja wywołań tych intefejsów.

       1. procps_new()
       2. procps_get(), procps_select() lub procps_reap()
       3. procps_unref()

       Funkcja  get  służy  do  odczytania  struktury  `result'  dla pojedynczego elementu `item'. Alternatywnie
       dostępne jest makro GET, kiedy istotna jest tylko wartość zwracana.

       Funkcja select potrafi odczytać wiele struktur `result' z pojedynczego "stosu".

       Na potrzeby nieprzewidywalnych, zmiennych wyników, interfejsy diskstats, slabinfo  oraz  stat  eksportują
       funkcję  reap.  Służy  do  odczytania  wielu "stosów", zawierających wiele struktur `result'. Opcjonalnie
       użytkownik może zdecydować, aby wykonać sort tych wyników.

       Aby wykorzystać dowolny "stos" i dostać się do poszczególnych struktur `result',  wymagana  jest  wartość
       relative_enum,  jak widać w makrze VAL zdefiniowanym w pliku nagłówkowym. Takie wartości mogą być sztywno
       zakodowane od 0 do numitems-1. Zwykle  jednak  tę  potrzebę  zaspokaja  się  tworząc  własne  enumeratory
       odpowiadające kolejności tablicy `items'.

   Zastrzeżenia
       Funkcje new, ref, unref, get oraz select są dostępne we wszystkich pięciu interfejsach.

       W przypadku funkcji new i unref, trzeba przekazać adres wskaźnika do struktury info. W przypadku new musi
       być zainicjowany na NULL. W przypadku unref zostanie ustawiony na NULL, jeśli  licznik  odwołań  osiągnie
       zero.

       W przypadku interfejsu diskstats, parametr name funkcji get i select określa nazwę dysku lub partycji

       W przypadku interfejsu stat, parametr what funkcji reap określa, czy zebrane mają być dane tylko dla CPU,
       czy dla CPU oraz NUMA.

       Przy używaniu funkcji sort, parametry stacks i numstacked są zwykle zwracame w strukturze `reaped'.

WARTOŚĆ ZWRACANA

   Funkcje zwracające `int'
       Błąd jest oznaczany poprzez liczbę ujemną, będącą liczbą przeciwną do znanej wartości errno.h.

       Sukces jest oznaczany wartością zerową. Jednak funkcje ref  i  unref  zwracają  bieżący  licznik  odwołań
       struktury info.

   Funkcje zwracające adres
       Błąd jest oznaczany zwracanym wskaźnikiem NULL, a powód można znaleźć w wartości errno.

       Sukces jest oznaczany wskaźnikiem na nazwaną strukturę.

DIAGNOSTYKA

       Aby  pomóc  przy  rozwijaniu programów, jest udogodnienie pozwalające zapewnić, że odwołania do składowej
       `result' zgadzają się z oczekiwaniami biblioteki. Zakłada,  że  do  dostępu  do  wartości  `result'  jest
       używane makro udostępnione w pliku nagłówkowym.

       Tę opcję można włączyć w jeden z poniższych sposobów, a wszystkie niezgodności będą wypisane na stderr.

       1) Dodanie CFLAGS='-DXTRA_PROCPS_DEBUG' do pozostałych użytych opcji ./configure.

       2) Dodanie   #include   <procps/xtra-procps-debug.h>   do  dowolnego  programu  po  nagłówkach  nazwanych
          interfejsów.

       Ta opcja weryfikacji dodaje istotny narzut. W związku  z  tym  ważne  jest,  żeby  nie  była  włączona  w
       binariach produkcyjnych.

ZOBACZ TAKŻE

       procps_misc(3), procps_pids(3), proc(5).