*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Linux man pages -> sysctl (2)              
Title
Content
Arch
Section
 

SYSCTL(2)

Contents


NAME    [Toc]    [Back]

       sysctl - read/write system parameters

SYNOPSIS    [Toc]    [Back]

       #include <unistd.h>

       #include <linux/unistd.h>

       #include <linux/sysctl.h>

       _syscall1(int, _sysctl, struct __sysctl_args *, args);

       int _sysctl(struct __sysctl_args *args);

DESCRIPTION    [Toc]    [Back]

       The  _sysctl  call  reads and/or writes kernel parameters. For example,
       the hostname, or the maximum number of open files. The argument has the
       form

       struct __sysctl_args {
	       int *name;	 /* integer vector describing variable */
	       int nlen;	 /* length of this vector */
	       void *oldval;	 /* 0 or address where to store old value */
	       size_t *oldlenp;  /* available room for old value,
				    overwritten by actual size of old value */
	       void *newval;	 /* 0 or address of new value */
	       size_t newlen;	 /* size of new value */
       };

       This  call  does  a  search  in a tree structure, possibly resembling a
       directory tree under /proc/sys, and if  the  requested  item  is  found
       calls some appropriate routine to read or modify the value.

EXAMPLE    [Toc]    [Back]

       #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 = SIZE(osname);
	       if (sysctl(name, SIZE(name), osname, &osnamelth, 0, 0))
		       perror("sysctl");
	       else
		       printf("This machine is running %*s\n", osnamelth, osname);
	       return 0;
       }

RETURN VALUE    [Toc]    [Back]

       Upon successful completion, _sysctl returns 0. Otherwise, a value of -1
       is returned and errno is set to indicate the error.

ERRORS    [Toc]    [Back]

       ENOTDIR
	      name was not found.

       EPERM  No search permission for one of the  encountered	`directories',
	      or no read permission where oldval was nonzero, or no write permission
 where newval was nonzero.

       EFAULT The invocation asked for the previous value  by  setting	oldval
	      non-NULL, but allowed zero room in oldlenp.

CONFORMING TO    [Toc]    [Back]

       This  call  is  Linux-specific,	and  should  not  be  used in programs
       intended to be portable.  A sysctl call has been present in Linux since
       version	1.3.57.  It originated in 4.4BSD. Only Linux has the /proc/sys
       mirror, and the object naming schemes differ between Linux and BSD 4.4,
       but the declaration of the sysctl(2) function is the same in both.

BUGS    [Toc]    [Back]

       The  object names vary between kernel versions.	THIS MAKES THIS SYSTEM
       CALL WORTHLESS FOR APPLICATIONS.  Use the /proc/sys interface  instead.
       Not all available objects are properly documented.
       It  is  not  yet  possible  to  change  operating  system by writing to
       /proc/sys/kernel/ostype.

SEE ALSO    [Toc]    [Back]

      
      
       proc(5)



Linux 1.3.85			  1996-04-11			     SYSCTL(2)
[ Back ]
 Similar pages
Name OS Title
wlconfig FreeBSD read/write wavelan config parameters
AFreadmisc IRIX read from / write to / move logical read/write pointer for data in a miscellaneous chunk in an audio file
VOP_STRATEGY FreeBSD read or write a file system buffer
tis_write_unlock Tru64 Unlocks the specified read-write lock that was acquired for write access
tis_read_unlock Tru64 Unlocks a read-write lock that was acquired for read access
pthread_rwlock_wrlock Tru64 Acquires a read-write lock for write access
tis_write_lock Tru64 Acquires the specified read-write lock for write access
pthread_rwlock_rdlock Tru64 Acquires a read-write lock for read access
tis_read_lock Tru64 Acquires a read-write lock for read access
tis_read_trylock Tru64 Attempts to acquire a read-write lock for read access and does not wait if the lock cannot be immedi...
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service