unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (OSF1-V5.1-alpha)
Page:
Section:
Apropos / Subsearch:
optional field



table(2)							     table(2)



NAME
  table	- Examines or updates elements from a system table.

SYNOPSIS

  #include <&lt;sys/table.h>&gt;

  int table(id,	index, addr, nel, lel)
	  long id;
	  long index;
	  void *addr;
	  long nel;
	  u_long lel;

PARAMETERS

  id  The ID of	the system table that contains the element or elements.

  index
      The index	of an element within the table.

  addr
      The address of a struct (or a struct array) of the appropriate type to
      copy the element values to (on examine) or from (on update).  The	vari-
      ous structure layouts are	described in /usr/include/sys/table.h.

  nel A	signed number that specifies how many elements to copy and in which
      direction.  A positive value copies the elements from the	kernel to
      addr.  A negative	value copies the elements from addr to the kernel.

  lel The expected size	of a single element.

DESCRIPTION

  The table() interface	is used	to examine or update one or more elements in
  the system table.  The system	table is specified by id and the starting
  element is specified by index.

  The table() interface	copies the element value or values to or from the
  specified addr.  The nel parameter specifies the number of elements to
  copy,	starting from index.  A	positive value indicates an examine opera-
  tion.	 The elements are copied from the kernel to addr.  A negative value
  indicates an update operation.  The elements are copied from addr to the
  kernel.

  The lel parameter specifies the expected element size.  If multiple ele-
  ments	are specified, successive addresses are	calculated for addr by incre-
  menting it by	lel for	each element copied.  If the size of a given element
  is larger than lel, table() truncates	excess data on an update (from addr
  to the kernel) and stores only the expected size on an examine (from the
  kernel to addr).  If the size	of a given element is smaller than lel,
  table() copies only the valid	data on	an update and pads the element value
  on an	examine.

  The table() interface	guarantees that	an update operation will not change
  the offset and size of any field within an element.  New fields are added
  only at the end of an	element.


  The table() interface	returns	a count	of the elements	examined or updated.
  The id TBL_PROCINFO allows you to determine the actual number	of elements
  in a table before requesting any data; call table() with lel set to zero
  (0) and nel to the maximum positive integer.

  The id parameter must	specify	one of the following tables, each of which
  has a	structure in <&lt;sys/table.h>&gt;, unless otherwise noted:

  TBL_U_TTYD
      The controlling terminal device number table.  The index is by process
      ID and exactly one element can be	requested.  If the process ID is zero
      (0), the current process is indexed.  Only 0 and the current process ID
      are supported.  The element is of	type dev_t as defined in
      <&lt;sys/types.h>&gt;.  This table is examine only.  It cannot be	updated.

  TBL_UAREA
      The U-area table.	 The index is by process ID.  See the user.h header
      file for the (pseudo) struct user	that is	returned.

  TBL_LOADAVG
      The system load average vector (pseudo) table.  The index	must be	zero
      (0) and exactly one element can be requested.

      If the scale is zero (0),	the load average vector	is the floating	point
      variant.	If the size is non-zero, the load average vector has been
      scaled by	the indicated factor (typically	1000) to produce the long
      integer variant.	This table is examine only.  It	cannot be updated.

  TBL_INCLUDE_VERSION
      The system include file version number (pseudo) table.  The index	must
      be zero (0) and exactly one element can be requested.  The include ver-
      sion is a	unique integer.	 It identifies the layout of kernel data
      structures that are imported by certain kernel-dependent programs.
      This table is examine only.  It cannot be	updated.

  TBL_ARGUMENTS
      The process command argument table containing the	saved arguments	for
      processes.  The index is by process ID and exactly one element can be
      requested.  Arguments for	processes other	than the current process can
      be accessed only by the  root user.  This	table is examine only.	It
      cannot be	updated.

      All the command line arguments for the process.	Specify	the process
      id in the	index argument.	 The addr argument points to a buffer into
      which the	command	line arguments are placed.

      The amount of buffer space needed	for the	command	line arguments
      depends on the total length of all the arguments from the	process	being
      examined.	 Specify the size of the user buffer with the lel argument.
      If the buffer is not large enough	to accept the complete argument	list,
      the given	length of the buffer is	copied.

      The arguments are	placed in the buffer as	a series of null-terminated
      strings, in argument order.

  TBL_MAXUPRC
      The maximum process count	per user ID table.  The	index is by process
      ID and exactly one element can be	requested.  If the process ID is zero
      (0), the current process is indexed.  Only 0 and the current process ID
      are supported.  The element is of	the short integer type.

      The maximum count	includes all processes running under the current user
      ID even though the limit affects only the	current	process	and any	chil-
      dren created with	that limit in effect.  The limit can be	changed	only
      by the root user.

  TBL_PROCINFO
      The process status information table.  The index is an offset into a
      table of processes.  Status information for processes other than the
      current process can be accessed only by the root user.  This table is
      examine only and cannot be updated.

      This id lets you determine the actual number of elements in a table
      before you request any data.  You	call table with	the lel	argument set
      to zero, index set to zero, and the nel argument set to the maximum
      positive integer.	 The return is the number of elements in the table.

  TBL_THREADSTATES
      The current count	of threads and their states. The index may be either
      a	single process ID, or zero (0) to count	all process IDs.  Only the
      root user	can obtain information on a single process ID that is not the
      current process.	Only one element should	be requested (only one is
      available).  This	table is examine only.	It cannot be updated.

  TBL_ENVIRONMENT
      The process environment table.  The index	is by process ID and exactly
      one element can be requested.  Environment information for processes
      other than the current process can be accessed only by the root user.
      This table is examine only.  It cannot be	updated.

  TBL_SYSINFO
      The system time information table.  The index must be zero (0) and
      exactly one element can be requested.  The system	information table
      contains ticks of	time accumulated in the	various	system states: user,
      nice, system, and	idle.  The system tick frequency and profiling (if
      configured) frequency are	also provided for conversion from ticks	to
      time values.  This table is examine only.	 It cannot be updated.

  TBL_DKINFO
      The disk statistics table.  The index is by disk number.	This table is
      examine only.  It	cannot be updated.

  TBL_SWAPINFO
      The system swap device list information table. This table	is examine
      only.  It	cannot be updated. If the index	is positive or zero (0), the
      swap device information for the entry in the swap	device list is
      returned.

      If the index is less than	zero (0), the amount of	total swap space con-
      figured and amount of total free space on	the system is returned.	In
      addition,	the flags field	contains the value of vm_swap_eager flag and
      the dev field contains the lazy swap device number (if lazy swap)	or
      zero (0) (if eager swap).

  TBL_TTYINFO
      The TTY statistics table.	 The index must	be zero	(0) and	exactly	one
      element can be requested.	 This table is examine only.  It cannot	be
      updated.

  TBL_MSGDS
      The message queue	ID table.  The index is	the index into the queue
      array.  Each element is a	msqid_ds structure as defined in msqid_ds().
      This table is examine only.  Its elements	cannot be updated.

  TBL_SEMDS
      The semaphore ID table.  The index is the	index into the array of
      semaphore	IDs.  Each element is a	semid_ds structure as defined in
      semid_ds().  This	table is examine only.	Its elements cannot be
      updated.

  TBL_SHMDS
      The shared memory	region ID table.  The index is the index into the
      array of shared memory region IDs.  Each element is a shmid_ds struc-
      ture as defined in shmid_ds().  This table is examine only.  Its ele-
      ments cannot be updated.

  TBL_MSGINFO
      The message information table.  This table is examine only.  Its ele-
      ments cannot be updated.	The message information	structure is defined
      in <&lt;sys/msg.h>&gt;.

      The index	is by field positions within the message information struc-
      ture, as follows:

      MSGINFO_MAX
	  The maximum message size

      MSGINFO_MNB
	  The maximum number of	bytes on the queue

      MSGINFO_MNI
	  The number of	message	queue identifiers

      MSGINFO_TQL
	  The number of	system message headers

  TBL_SEMINFO
      The semaphore information	table.	This table is examine only.  It	can-
      not be updated.  The semaphore information structure is defined in
      <&lt;sys/sem.h>&gt;.

      The index	is by field position within the	semaphore information struc-
      ture as follows:

      SEMINFO_MNI
	  The number of	semaphore identifiers

      SEMINFO_MSL
	  The maximum number of	semaphores per identifier

      SEMINFO_OPM
	  The maximum number of	operations per semop() call

      SEMINFO_UME
	  The maximum number of	undo entries per process

      SEMINFO_VMX
	  The semaphore	maximum	value

      SEMINFO_AEM
	  The maximum adjust on	exit value

  TBL_SHMINFO
      The shared memory	information table.  This table is examine only.	 It
      cannot be	updated.  The shared memory information	structure is defined
      in <&lt;sys/shm.h>&gt;.

      The index	is by field position within the	shared memory information
      structure, as follows:



      SHMINFO_MAX
	  The maximum shared memory region size

      SHMINFO_MIN
	  The minimum shared memory region size

      SHMINFO_MNI
	  The number of	shared memory identifiers

      SHMINFO_SEG
	  The maximum number of	attached shared	memory regions per process

  TBL_INTR
      The system interrupt information table.  There is	no index into the
      table.  This table is examine only.  It cannot be	updated.

  TBL_FDSTAT
      The user file table.  The	index is by process ID and exactly one ele-
      ment can be requested.  The addr argument	is of type struct stat.	The
      nel argument specifies the file descriptor.  This	operation provides
      stat information on the specified	descriptor for the specified process
      ID.  Information on processes other than the current process can be
      accessed only by the superuser.  This table is examine only.

RETURN VALUES

  A positive return value indicates that the call succeeded for	that number
  of elements.	A return value of -1 indicates that an error occurred, and an
  error	code is	stored in the global location errno.

ERRORS

  [EFAULT]
      The addr parameter specifies an invalid address.

  [EINVAL]
      The table	specified by id	is not defined.

  [EINVAL]
      The index	value is not valid for the specified table.

  [EINVAL]
      The specified table allows only an index of the current process ID with
      exactly one element.  Some other index or	element	number was specified.

  [EINVAL]
      An element length	of zero	(0) was	supplied for the TBL_ARGUMENTS table.

  [EINVAL]
      An attempt was made to update an examine-only table.

  [EPERM]
      An attempt was made to change the	maximum	number of processes or the
      account ID, and the caller was not the root user.

  [ESRCH]
      The process specified by a process ID index cannot be found.

RELATED	INFORMATION

  acct(2)