Provided by:
manpages-pl-dev_20060617-3_all 
NAZWA
sysctl - odczyt/zapis parametrow systemu
SK/LADNIA
#include <unistd.h>
#include <linux/unistd.h>
#include <linux/sysctl.h>
_syscall1(int, _sysctl, struct __sysctl_args *, args);
int _sysctl(struct __sysctl_args *args);
OPIS
Wywolanie _sysctl odczytuje i/lub ustawia parametry jdra. Na przyklad:
nazw hosta, maksymaln liczb otwartych plikow. Argument wywolania ma
posta
struct __sysctl_args {
int *name; /* wektor liczb calkowitych opisujcy zmienn */
int nlen; /* dlugo tego wektora */
void *oldval; /* 0 lub adres, gdzie zachowa star warto */
size_t *oldlenp; /* ilo miejsca na star warto
nadpisywana przez rzeczywisty jej rozmiar */
void *newval; /* 0 lub adres nowej wartoci */
size_t newlen; /* rozmiar nowej wartoci */
};
Wywolanie to dokonuje przeszukiwania struktury drzewiastej,
prawdopodobnie pzypominajcej drzewo katalogowe z /proc/sys, i jeli dany
element zostanie znaleziony, wywoluje odpowiedni funkcj do odczytania
lub zmodyfikowania wartoci.
PRZYK/LAD
#include <linux/unistd.h>
#include <linux/types.h>
#include <linux/sysctl.h>
_syscall1(int, _sysctl, struct __sysctl_args *, args);
int sysctl(int *name, int nlen, void *oldval, size_t *oldlenp,
void *newval, size_t newlen)
{
struct __sysctl_args args={name,nlen,oldval,oldlenp,newval,newlen};
return _sysctl(&args);
}
#define SIZE(x) sizeof(x)/sizeof(x[0])
#define OSNAMESZ 100
char osname[OSNAMESZ];
int osnamelth;
int name[] = { CTL_KERN, KERN_OSTYPE };
main(){
osnamelth = sizeof(osname);
if (sysctl(name, SIZE(name), osname, &osnamelth, 0, 0))
perror("sysctl");
else
printf("This machine is running %*s\n", osnamelth, osname);
return 0;
}
WARTO ZWRACANA
Po pomylnym zakoczeniu, _sysctl zwraca 0. W przeciwnym wypadku zwracane
jest -1 i ustawiane errno w sposob okrelajcy rodzaj bldu.
B/LDY
ENOTDIR
name nie zostalo znalezione.
EPERM Brak uprawnie do przeszukiwania jednego z napotkanych
`katalogow', lub brak praw odczytu, gdy oldval bylo niezerowe,
lub brak praw zapisu, gdy newval bylo niezerowe.
EFAULT Wywolanie dalo poprzedniej wartoci przez ustawienie oldval na
nie-NULL, lecz zezwalajc na zerow wielko w oldlenp.
ZGODNE Z
Wywolanie to jest to specyficzne dla Linuksa i nie powinno by uywane w
przenonych programach. Wywolanie sysctl jest obecne w Linuksie od
1.3.57. Pochodzi z 4.4BSD. Jedynie Linux posiada jego odwzorowanie w
/proc/sys a konwencje nazywania obiektow roni si midzy Linuksem i BSD
4.4, lecz deklaracja funkcji sysctl(2) jest taka sama w obu
przypadkach.
USTERKI
Nazwy obiektow roni si pomidzy wersjami jdra. CZYNI TO NINIEJSZ FUNKCJ
SYSTEMOW BEZUYTECZN DLA APLIKACJI. Naley zamiast niego uywa interfejsu
/proc/sys.
Nie wszystkie dostpne obiekty s odpowiednio udokumentowane.
Nie jest jeszcze moliwe zmienianie systemu operacyjnego przez zapis do
/proc/sys/kernel/ostype.
ZOBACZ TAKE
proc(5)
INFORMACJE O T/LUMACZENIU
Powysze tlumaczenie pochodzi z nieistniejcego ju Projektu Tlumaczenia
Manuali i moe nie by aktualne. W razie zauwaenia ronic midzy powyszym
opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji,
prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.