Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

uname(2)

swap(1M)



sysi86(2)                        UNIX System V                        sysi86(2)


NAME
      sysi86 - machine specific functions

SYNOPSIS
      #include <sys/sysi86.h>
      int sysi86 (int cmd, ...);

DESCRIPTION
      The sysi86 system call implements machine specific functions.  The cmd
      argument determines the function to be performed.  The types of the
      arguments expected depend on the function.

   Command RTODC
      When cmd is RTODC, the expected argument is the address of a struct rtc_t
      (from the header file sys/rtc.h):
            struct rtc_t {
                  char rtc_sec, rtc_asec, rtc_min, rtc_amin,
                  rtc_hr, rtc_ahr, rtc_dow, rtc_dom,
                  rtc_mon, rtc_yr, rtc_statusa,
                  rtc_statusb, rtc_statusc, rtc_statusd;
            };

      This function reads the hardware time-of-day clock and returns the data
      in the structure referenced by the argument.  This command is only
      available to the super-user.

   RDUBLK
      This command reads the u-block (per process user information as defined
      by structuser in the sys/user header file) for a given process.  When cmd
      is RDUBLK, sysi86 takes three additional arguments:  the process ID, the
      address of a buffer, and the number of bytes to read; i.e.,
            sysi86(RDULBK, pid, buf, n)
                  pid_t pid;
                  char *buf;
                  int n;

   Command SI86FPHW
      This command expects the address of an integer as its argument.  After
      successful return from the system call, the integer specifies how
      floating-point computation is supported.

      The low-order byte of the integer contains the value of "fpkind", a
      variable that specifies whether an 80287 or 80387 floating-point
      coprocessor is present, emulated in software, or not supported.  The
      values are defined in the header file sys/fp.h.

            FP_NO       no fp chip, no emulator (no fp support)
            FP_SW       no fp chip, using software emulator
            FP_HW       chip present bit
            FP_287      80287 chip present
            FP_387      80387 chip present



10/89                                                                    Page 1







sysi86(2)                        UNIX System V                        sysi86(2)


   Command SETNAME
      This command, which is only available to the super-user, expects an
      argument of type char * which points to a NULL terminated string of at
      most 7 characters.  The command will change the running system's sysname
      and nodename [see uname(2)] to this string.

   Command STIME
      When cmd is STIME, an argument of type long is expected.  This function
      sets the system time and date (not the hardware clock).  The argument
      contains the time as measured in seconds from 00:00:00 GMT January 1,
      1970.  Note that this command is only available to the super-user.

   Command SI86DSCR
      This command sets a segment or gate descriptor in the kernel.  The
      following descriptor types are accepted:
         ⊕ executable and data segments in the LDT at DPL 3
         ⊕ a call gate in the GDT at DPL 3 that points to a segment in the LDT

      The argument is a pointer to a request structure that contains the values
      to be placed in the descriptor.  The request structure is declared in the
      sys/sysi86.h header file.

   Command SI86MEM
      This command returns the size of available memory in bytes.

   Command SI86SWPI
      When cmd is SI86SWPI, individual swapping areas may be added, deleted or
      the current areas determined.  The address of an appropriately primed
      swap buffer is passed as the only argument.  (Refer to the sys/swap.h
      header file for details of loading the buffer.)

      The format of the swap buffer is:

       struct swapint {
           char  si_cmd;/*command: SI_LIST, SI_ADD, SI_DEL*/
           char  *si_buf;/*swap file path pointer*/
           int  si_swplo;/*start block*/
           int  si_nblks;/*swap size*/
        }

      Note that the add and delete options of the command may only be exercised
      by the super-user.

      Typically, a swap area is added by a single call to sysi86.  First, the
      swap buffer is primed with appropriate entries for the structure members.
      Then sysi86 is invoked.

            #include <sys/sysi86.h>
            #include <sys/swap.h>
            struct swapint swapbuf;/*swap into buffer ptr*/
            sysi86(SI86SWPI, &swapbuf);



Page 2                                                                    10/89







sysi86(2)                        UNIX System V                        sysi86(2)


      If this command succeeds, it returns 0 to the calling process.  This
      command fails, returning -1, if one or more of the following is true:

      [EFAULT]    swapbuf points to an invalid address
      [EFAULT]    swapbuf.si_buf points to an invalid address
      [ENOTBLK]   Swap area specified is not a block special device
      [EEXIST]    Swap area specified has already been added
      [ENOSPC]    Too many swap areas in use (if adding)
      [ENOMEM]    Tried to delete last remaining swap area
      [EINVAL]    Bad arguments
      [ENOMEM]    No place to put swapped pages when deleting a swap area

SEE ALSO
      uname(2).
      swap(1M) in the User's/System Administrator's Reference Manual.

DIAGNOSTICS
      Upon successful completion, zero is returned; otherwise, -1 is returned,
      and errno is set to indicate the error.  When the cmd is invalid, errno
      is set to EINVAL.


































10/89                                                                    Page 3





Typewritten Software • bear@typewritten.org • Edmonds, WA 98026