Annotation of 43BSD/ucb/lisp/lisplib/manual/ch6.r, revision 1.1.1.1

1.1       root        1: 
                      2: 
                      3: 
                      4: 
                      5: 
                      6: 
                      7: 
                      8:                          CHAPTER  6
                      9: 
                     10: 
                     11:                       System Functions
                     12: 
                     13: 
                     14: 
                     15: 
                     16:      This chapter describes the functions used  to  interact
                     17: with  internal  components  of the Lisp system and operating
                     18: system.
                     19: 
                     20: (allocate 's_type 'x_pages)
                     21: 
                     22:      WHERE:   s_type is one of the  FRANZ  LISP  data  types
                     23:               described in 1.3.
                     24: 
                     25:      RETURNS: x_pages.
                     26: 
                     27:      SIDE EFFECT: FRANZ LISP attempts to allocate x_pages of
                     28:                   type  s_type.   If there aren't x_pages of
                     29:                   memory left, no space  will  be  allocated
                     30:                   and an error will occur.  The storage that
                     31:                   is allocated is not given to  the  caller,
                     32:                   instead  it  is  added to the free storage
                     33:                   list of s_type.  The functions _s_e_g_m_e_n_t and
                     34:                   _s_m_a_l_l-_s_e_g_m_e_n_t  allocate blocks  of storage
                     35:                   and return it to the caller.
                     36: 
                     37: (argv 'x_argnumb)
                     38: 
                     39:      RETURNS: a symbol whose pname is the x_argnumb_t_h  argu-
                     40:               ment (starting at 0) on the command line which
                     41:               invoked the current lisp.
                     42: 
                     43:      NOTE: if x_argnumb is less than zero,  a  fixnum  whose
                     44:            value  is  the number of arguments on the command
                     45:            line is returned.  (_a_r_g_v _0) returns the  name  of
                     46:            the lisp you are running.
                     47: 
                     48: (baktrace)
                     49: 
                     50:      RETURNS: nil
                     51: 
                     52:      SIDE EFFECT: the lisp runtime stack is examined and the
                     53:                   name  of (most) of the functions currently
                     54:                   in  execution  are  printed,  most  active
                     55:                   first.
                     56: 
                     57:      NOTE: this will occasionally miss the names of compiled
                     58:            lisp  functions  due to incomplete information on
                     59:            the stack.  If you  are  tracing  compiled  code,
                     60:            then  _b_a_k_t_r_a_c_e  won't  be  able  to interpret the
                     61: 
                     62: 
                     63: System Functions                                         6-1
                     64: 
                     65: 
                     66: 
                     67: 
                     68: 
                     69: 
                     70: 
                     71: System Functions                                         6-2
                     72: 
                     73: 
                     74:            stack unless  (_s_s_t_a_t_u_s _t_r_a_n_s_l_i_n_k _n_i_l)  was  done.
                     75:            See  the  function  _s_h_o_w_s_t_a_c_k  for another way of
                     76:            printing the lisp runtime stack.   This  misspel-
                     77:            ling is from Maclisp.
                     78: 
                     79: (chdir 's_path)
                     80: 
                     81:      RETURNS: t iff the system call succeeds.
                     82: 
                     83:      SIDE EFFECT: the current directory set to s_path. Among
                     84:                   other things, this will affect the default
                     85:                   location where the input/output  functions
                     86:                   look for and create files.
                     87: 
                     88:      NOTE: _c_h_d_i_r follows the standard UNIX  conventions,  if
                     89:            s_path  does  not begin with a slash, the default
                     90:            path is changed to the current path  with  s_path
                     91:            appended.   _C_h_d_i_r  employs  tilde-expansion (dis-
                     92:            cussed in Chapter 5).
                     93: 
                     94: (command-line-args)
                     95: 
                     96:      RETURNS: a list of the arguments typed on  the  command
                     97:               line, either to the lisp interpreter, or saved
                     98:               lisp dump, or application  compiled  with  the
                     99:               autorun option (liszt -r).
                    100: 
                    101: (deref 'x_addr)
                    102: 
                    103:      RETURNS: The contents of x_addr, when thought of  as  a
                    104:               longword memory location.
                    105: 
                    106:      NOTE: This may be useful in constructing arguments to C
                    107:            functions out of `dangerous' areas of memory.
                    108: 
                    109: (dumplisp s_name)
                    110: 
                    111:      RETURNS: nil
                    112: 
                    113:      SIDE EFFECT: the current lisp is dumped  to  the  named
                    114:                   file.   When  s_name is executed, you will
                    115:                   be in a lisp in the same state as when the
                    116:                   dumplisp was done.
                    117: 
                    118:      NOTE: dumplisp will fail if one tries to write over the
                    119:            current  running file. UNIX does not allow you to
                    120:            modify the file you are running.
                    121: 
                    122: 
                    123: 
                    124: 
                    125: 
                    126: 9
                    127: 
                    128: 9                                   Printed: January 31, 1984
                    129: 
                    130: 
                    131: 
                    132: 
                    133: 
                    134: 
                    135: 
                    136: System Functions                                         6-3
                    137: 
                    138: 
                    139: (eval-when l_time g_exp1 ...)
                    140: 
                    141:      SIDE EFFECT: l_time may contain any combination of  the
                    142:                   symbols  _l_o_a_d,  _e_v_a_l,  and  _c_o_m_p_i_l_e.   The
                    143:                   effects of load and compile  is  discussed
                    144:                   in  12.3.2.1 compiler.  If eval is present
                    145:                   however,  this  simply  means   that   the
                    146:                   expressions g_exp1 and so on are evaluated
                    147:                   from  left  to  right.   If  eval  is  not
                    148:                   present, the forms are not evaluated.
                    149: 
                    150: (exit ['x_code])
                    151: 
                    152:      RETURNS: nothing (it never returns).
                    153: 
                    154:      SIDE EFFECT: the lisp system dies with exit code x_code
                    155:                   or 0 if x_code is not specified.
                    156: 
                    157: (fake 'x_addr)
                    158: 
                    159:      RETURNS: the lisp object at address x_addr.
                    160: 
                    161:      NOTE: This is intended to be used by  people  debugging
                    162:            the lisp system.
                    163: 
                    164: (fork)
                    165: 
                    166:      RETURNS: nil to  the  child  process  and  the  process
                    167:               number of the child to the parent.
                    168: 
                    169:      SIDE EFFECT: A copy of the current lisp system is  made
                    170:                   in  memory and both lisp systems now begin
                    171:                   to  run.   This  function  can   be   used
                    172:                   interactively   to  temporarily  save  the
                    173:                   state of Lisp (as shown  below),  but  you
                    174:                   must  be  careful  that  only  one  of the
                    175:                   lisp's interacts with the  terminal  after
                    176:                   the fork.  The _w_a_i_t function is useful for
                    177:                   this.
                    178: 
                    179: 
                    180: 
                    181: 
                    182: 
                    183: 
                    184: 
                    185: 
                    186: 
                    187: 
                    188: 
                    189: 
                    190: 
                    191: 9
                    192: 
                    193: 9                                   Printed: January 31, 1984
                    194: 
                    195: 
                    196: 
                    197: 
                    198: 
                    199: 
                    200: 
                    201: System Functions                                         6-4
                    202: 
                    203: 
                    204: 
                    205:     ____________________________________________________
                    206: 
                    207:     -> (_s_e_t_q _f_o_o '_b_a_r)              ;; set a variable
                    208:     bar
                    209:     -> (_c_o_n_d ((_f_o_r_k)(_w_a_i_t)))        ;; duplicate the lisp system and
                    210:     nil                             ;; make the parent wait
                    211:     -> _f_o_o                          ;; check the value of the variable
                    212:     bar
                    213:     -> (_s_e_t_q _f_o_o '_b_a_z)              ;; give it a new value
                    214:     baz
                    215:     -> _f_o_o                          ;; make sure it worked
                    216:     baz
                    217:     -> (_e_x_i_t)                       ;; exit the child
                    218:     (5274 . 0)                      ;; the _w_a_i_t function returns this
                    219:     -> _f_o_o                          ;; we check to make sure parent was
                    220:     bar                             ;; not modified.
                    221:     ____________________________________________________
                    222: 
                    223: 
                    224: 
                    225: 
                    226: (gc)
                    227: 
                    228:      RETURNS: nil
                    229: 
                    230:      SIDE EFFECT: this causes a garbage collection.
                    231: 
                    232:      NOTE: The function _g_c_a_f_t_e_r is not called  automatically
                    233:            after  this function finishes.  Normally the user
                    234:            doesn't have to call _g_c since garbage  collection
                    235:            occurs automatically whenever internal free lists
                    236:            are exhausted.
                    237: 
                    238: (gcafter s_type)
                    239: 
                    240:      WHERE:   s_type is one of the  FRANZ  LISP  data  types
                    241:               listed in 1.3.
                    242: 
                    243:      NOTE: this function is called by the garbage  collector
                    244:            after  a  garbage  collection which was caused by
                    245:            running out of data type s_type.   This  function
                    246:            should  determine if more space need be allocated
                    247:            and if so should allocate it.  There is a default
                    248:            gcafter  function but users who want control over
                    249:            space allocation can define their own -- but note
                    250:            that it must be an nlambda.
                    251: 
                    252: 
                    253: 
                    254: 
                    255: 
                    256: 9
                    257: 
                    258: 9                                   Printed: January 31, 1984
                    259: 
                    260: 
                    261: 
                    262: 
                    263: 
                    264: 
                    265: 
                    266: System Functions                                         6-5
                    267: 
                    268: 
                    269: (getenv 's_name)
                    270: 
                    271:      RETURNS: a symbol whose pname is the value of s_name in
                    272:               the   current  UNIX  environment.   If  s_name
                    273:               doesn't exist in the  current  environment,  a
                    274:               symbol with a null pname is returned.
                    275: 
                    276: (hashtabstat)
                    277: 
                    278:      RETURNS: a list of fixnums representing the  number  of
                    279:               symbols in each bucket of the oblist.
                    280: 
                    281:      NOTE: the oblist is stored a  hash  table  of  buckets.
                    282:            Ideally there would be the same number of symbols
                    283:            in each bucket.
                    284: 
                    285: (help [sx_arg])
                    286: 
                    287:      SIDE EFFECT: If sx_arg is a symbol then the portion  of
                    288:                   this manual beginning with the description
                    289:                   of sx_arg is printed on the terminal.   If
                    290:                   sx_arg  is  a fixnum or the name of one of
                    291:                   the appendicies, that chapter or  appendix
                    292:                   is  printed  on the terminal.  If no argu-
                    293:                   ment is provided, _h_e_l_p prints the  options
                    294:                   that it recognizes.  The program `more' is
                    295:                   used to print the manual on the  terminal;
                    296:                   it will stop after each page and will con-
                    297:                   tinue after the space key is pressed.
                    298: 
                    299: (include s_filename)
                    300: 
                    301:      RETURNS: nil
                    302: 
                    303:      SIDE EFFECT: The given  filename  is  _l_o_a_ded  into  the
                    304:                   lisp.
                    305: 
                    306:      NOTE: this is similar to load except  the  argument  is
                    307:            not  evaluated.   Include means something special
                    308:            to the compiler.
                    309: 
                    310: (include-if 'g_predicate s_filename)
                    311: 
                    312:      RETURNS: nil
                    313: 
                    314:      SIDE EFFECT: This has the same effect as  include,  but
                    315:                   is  only actuated if the predicate is non-
                    316:                   nil.
                    317: 
                    318: 
                    319: 
                    320: 
                    321: 9
                    322: 
                    323: 9                                   Printed: January 31, 1984
                    324: 
                    325: 
                    326: 
                    327: 
                    328: 
                    329: 
                    330: 
                    331: System Functions                                         6-6
                    332: 
                    333: 
                    334: (includef 's_filename)
                    335: 
                    336:      RETURNS: nil
                    337: 
                    338:      SIDE EFFECT: this is the same  as  _i_n_c_l_u_d_e  except  the
                    339:                   argument is evaluated.
                    340: 
                    341: (includef-if 'g_predicate s_filename)
                    342: 
                    343:      RETURNS: nil
                    344: 
                    345:      SIDE EFFECT: This has the same effect as includef,  but
                    346:                   is  only actuated if the predicate is non-
                    347:                   nil.
                    348: 
                    349: (maknum 'g_arg)
                    350: 
                    351:      RETURNS: the address of its argument converted  into  a
                    352:               fixnum.
                    353: 
                    354: (monitor ['xs_maxaddr])
                    355: 
                    356:      RETURNS: t
                    357: 
                    358:      SIDE EFFECT: If xs_maxaddr is t then profiling  of  the
                    359:                   entire   lisp   system   is   begun.    If
                    360:                   xs_maxaddr is a fixnum then  profiling  is
                    361:                   done  only  up  to address xs_maxaddr.  If
                    362:                   xs_maxaddr is not given, then profiling is
                    363:                   stopped  and  the data obtained is written
                    364:                   to the file  'mon.out'  where  it  can  be
                    365:                   analyzed with the UNIX 'prof' program.
                    366: 
                    367:      NOTE: this function only works if the lisp  system  has
                    368:            been  compiled  in  a  special way, otherwise, an
                    369:            error is invoked.
                    370: 
                    371: (opval 's_arg ['g_newval])
                    372: 
                    373:      RETURNS: the value associated  with  s_arg  before  the
                    374:               call.
                    375: 
                    376:      SIDE EFFECT: If g_newval is specified, the value  asso-
                    377:                   ciated with s_arg is changed to g_newval.
                    378: 
                    379:      NOTE: _o_p_v_a_l keeps track of storage allocation. If s_arg
                    380:            is one of the data types then _o_p_v_a_l will return a
                    381:            list of three fixnums representing the number  of
                    382:            items  of  that  type in use, the number of pages
                    383:            allocated and the number of items  of  that  type
                    384:            per  page.  You  should  never  try to change the
                    385:            value _o_p_v_a_l associates with  a  data  type  using
                    386:            _o_p_v_a_l.
                    387: 
                    388: 
                    389:                                    Printed: January 31, 1984
                    390: 
                    391: 
                    392: 
                    393: 
                    394: 
                    395: 
                    396: 
                    397: System Functions                                         6-7
                    398: 
                    399: 
                    400:            If s_arg is _p_a_g_e_l_i_m_i_t then _o_p_v_a_l will return (and
                    401:            set  if  g_newval is given) the maximum amount of
                    402:            lisp data pages it  will  allocate.   This  limit
                    403:            should  remain small unless you know your program
                    404:            requires lots of space as this limit  will  catch
                    405:            programs   in  infinite  loops  which  gobble  up
                    406:            memory.
                    407: 
                    408: (*process 'st_command ['g_readp ['g_writep]])
                    409: 
                    410:      RETURNS: either a fixnum if one argument is given, or a
                    411:               list of two ports and a fixnum if two or three
                    412:               arguments are given.
                    413: 
                    414:      NOTE: *_p_r_o_c_e_s_s  starts  another  process   by   passing
                    415:            st_command to the shell (it first tries /bin/csh,
                    416:            then it tries /bin/sh if /bin/csh doesn't exist).
                    417:            If  only one argument is given to *_p_r_o_c_e_s_s, *_p_r_o_-
                    418:            _c_e_s_s waits for the new process to  die  and  then
                    419:            returns  the  exit  code  of the new process.  If
                    420:            more two or three arguments are  given,  *_p_r_o_c_e_s_s
                    421:            starts the process and then returns a list which,
                    422:            depending on the value of g_readp  and  g_writep,
                    423:            may  contain  i/o ports for communcating with the
                    424:            new process.  If g_writep  is  non-null,  then  a
                    425:            port  will  be created which the lisp program can
                    426:            use to send characters to the  new  process.   If
                    427:            g_readp  is non-null, then a port will be created
                    428:            which the lisp program can use to read characters
                    429:            from  the  new  process.   The  value returned by
                    430:            *_p_r_o_c_e_s_s is (readport writeport pid) where  read-
                    431:            port and writeport are either nil or a port based
                    432:            on the value of g_readp and g_writep.  Pid is the
                    433:            process  id of the new process.  Since it is hard
                    434:            to remember the order of  g_readp  and  g_writep,
                    435:            the  functions *_p_r_o_c_e_s_s-_s_e_n_d and *_p_r_o_c_e_s_s-_r_e_c_e_i_v_e
                    436:            were written to perform the common functions.
                    437: 
                    438: (*process-receive 'st_command)
                    439: 
                    440:      RETURNS: a port which can be read.
                    441: 
                    442:      SIDE EFFECT: The command st_command  is  given  to  the
                    443:                   shell  and  it  is  started running in the
                    444:                   background.  The output of that command is
                    445:                   available   for   reading   via  the  port
                    446:                   returned.  The input of the  command  pro-
                    447:                   cess is set to /dev/null.
                    448: 
                    449: 
                    450: 
                    451: 
                    452: 9
                    453: 
                    454: 9                                   Printed: January 31, 1984
                    455: 
                    456: 
                    457: 
                    458: 
                    459: 
                    460: 
                    461: 
                    462: System Functions                                         6-8
                    463: 
                    464: 
                    465: (*process-send 'st_command)
                    466: 
                    467:      RETURNS: a port which can be written to.
                    468: 
                    469:      SIDE EFFECT: The command st_command  is  given  to  the
                    470:                   shell  and  it  is  started  runing in the
                    471:                   background.  The lisp program can  provide
                    472:                   input  for that command by sending charac-
                    473:                   ters to the port returned  by  this  func-
                    474:                   tion.   The  output of the command process
                    475:                   is set to /dev/null.
                    476: 
                    477: (process s_pgrm [s_frompipe s_topipe])
                    478: 
                    479:      RETURNS: if the optional arguments are  not  present  a
                    480:               fixnum  which  is  the  exit  code when s_prgm
                    481:               dies.  If the optional arguments are  present,
                    482:               it returns a fixnum which is the process id of
                    483:               the child.
                    484: 
                    485:      NOTE: This command is obsolete.   New  programs  should
                    486:            use one of the *_p_r_o_c_e_s_s commands given above.
                    487: 
                    488:      SIDE EFFECT: If s_frompipe and s_topipe are given, they
                    489:                   are  bound  to ports which are pipes which
                    490:                   direct characters from FRANZ LISP  to  the
                    491:                   new process and to FRANZ LISP from the new
                    492:                   process  respectively.   _P_r_o_c_e_s_s  forks  a
                    493:                   process  named  s_prgm and waits for it to
                    494:                   die iff there are no pipe arguments given.
                    495: 
                    496: (ptime)
                    497: 
                    498:      RETURNS: a list of two  elements.   The  first  is  the
                    499:               amount of processor time used by the lisp sys-
                    500:               tem so far, and the second is  the  amount  of
                    501:               time used by the garbage collector so far.
                    502: 
                    503:      NOTE: the time is measured in those units used  by  the
                    504:            _t_i_m_e_s(2)  system call, usually 60_t_hs of a second.
                    505:            The first number includes the second number.  The
                    506:            amount  of time used by garbage collection is not
                    507:            recorded until the first call to ptime.  This  is
                    508:            done  to  prevent  overhead  when the user is not
                    509:            interested in garbage collection times.
                    510: 
                    511: 
                    512: 
                    513: 
                    514: 
                    515: 
                    516: 
                    517: 9
                    518: 
                    519: 9                                   Printed: January 31, 1984
                    520: 
                    521: 
                    522: 
                    523: 
                    524: 
                    525: 
                    526: 
                    527: System Functions                                         6-9
                    528: 
                    529: 
                    530: (reset)
                    531: 
                    532:      SIDE EFFECT: the lisp runtime stack is cleared and  the
                    533:                   system  restarts  at the top level by exe-
                    534:                   cuting a (_f_u_n_c_a_l_l _t_o_p-_l_e_v_e_l _n_i_l).
                    535: 
                    536: (restorelisp 's_name)
                    537: 
                    538:      SIDE EFFECT: this  reads  in  file  s_name  (which  was
                    539:                   created  by  _s_a_v_e_l_i_s_p)  and  then  does  a
                    540:                   (_r_e_s_e_t).
                    541: 
                    542:      NOTE: This is only used on VMS systems  where  _d_u_m_p_l_i_s_p
                    543:            cannot be used.
                    544: 
                    545: (retbrk ['x_level])
                    546: 
                    547:      WHERE:   x_level is a small integer of either sign.
                    548: 
                    549:      SIDE EFFECT: The default error handler keeps  a  notion
                    550:                   of  the current level of the error caught.
                    551:                   If x_level is negative, control is  thrown
                    552:                   to  this default error handler whose level
                    553:                   is that many less than the present, or  to
                    554:                   _t_o_p-_l_e_v_e_l  if  there  aren't  enough.   If
                    555:                   x_level is non-negative, control is passed
                    556:                   to  the handler at that level.  If x_level
                    557:                   is not present, the value -1 is  taken  by
                    558:                   default.
                    559: 
                    560: (*rset 'g_flag)
                    561: 
                    562:      RETURNS: g_flag
                    563: 
                    564:      SIDE EFFECT: If g_flag is non nil then the lisp  system
                    565:                   will   maintain  extra  information  about
                    566:                   calls to _e_v_a_l and  _f_u_n_c_a_l_l.   This  record
                    567:                   keeping slows down the evaluation but this
                    568:                   is required  for the  functions  _e_v_a_l_h_o_o_k,
                    569:                   _f_u_n_c_a_l_l_h_o_o_k,  and  _e_v_a_l_f_r_a_m_e  to  work. To
                    570:                   debug  compiled  lisp  code  the  transfer
                    571:                   tables       should      be      unlinked:
                    572:                   (_s_s_t_a_t_u_s _t_r_a_n_s_l_i_n_k _n_i_l)
                    573: 
                    574: 
                    575: 
                    576: 
                    577: 
                    578: 
                    579: 
                    580: 
                    581: 
                    582: 9
                    583: 
                    584: 9                                   Printed: January 31, 1984
                    585: 
                    586: 
                    587: 
                    588: 
                    589: 
                    590: 
                    591: 
                    592: System Functions                                        6-10
                    593: 
                    594: 
                    595: (savelisp 's_name)
                    596: 
                    597:      RETURNS: t
                    598: 
                    599:      SIDE EFFECT: the state of the Lisp system is  saved  in
                    600:                   the  file  s_name.   It  can be read in by
                    601:                   _r_e_s_t_o_r_e_l_i_s_p.
                    602: 
                    603:      NOTE: This is only used on VMS systems  where  _d_u_m_p_l_i_s_p
                    604:            cannot be used.
                    605: 
                    606: (segment 's_type 'x_size)
                    607: 
                    608:      WHERE:   s_type is one of the data types given in 1.3
                    609: 
                    610:      RETURNS: a  segment  of  contiguous  lispvals  of  type
                    611:               s_type.
                    612: 
                    613:      NOTE: In reality, _s_e_g_m_e_n_t returns a new  data  cell  of
                    614:            type  s_type  and  allocates space for x_size - 1
                    615:            more s_type's beyond the one  returned.   _S_e_g_m_e_n_t
                    616:            always  allocates  new  space  and does so in 512
                    617:            byte chunks.  If you ask for 2  fixnums,  segment
                    618:            will  actually  allocate 128 of them thus wasting
                    619:            126 fixnums.  The  function  _s_m_a_l_l-_s_e_g_m_e_n_t  is  a
                    620:            smarter  space allocator and should be used when-
                    621:            ever possible.
                    622: 
                    623: (shell)
                    624: 
                    625:      RETURNS: the exit code of the shell when it dies.
                    626: 
                    627:      SIDE EFFECT: this forks a new shell  and  returns  when
                    628:                   the shell dies.
                    629: 
                    630: (showstack)
                    631: 
                    632:      RETURNS: nil
                    633: 
                    634:      SIDE EFFECT: all  forms  currently  in  evaluation  are
                    635:                   printed,  beginning  with the most recent.
                    636:                   For compiled code the most that  showstack
                    637:                   will  show is the function name and it may
                    638:                   miss some functions.
                    639: 
                    640: 
                    641: 
                    642: 
                    643: 
                    644: 
                    645: 
                    646: 
                    647: 9
                    648: 
                    649: 9                                   Printed: January 31, 1984
                    650: 
                    651: 
                    652: 
                    653: 
                    654: 
                    655: 
                    656: 
                    657: System Functions                                        6-11
                    658: 
                    659: 
                    660: (signal 'x_signum 's_name)
                    661: 
                    662:      RETURNS: nil if no previous call  to  signal  has  been
                    663:               made, or the previously installed s_name.
                    664: 
                    665:      SIDE EFFECT: this  declares  that  the  function  named
                    666:                   s_name   will  handle  the  signal  number
                    667:                   x_signum.  If s_name is nil, the signal is
                    668:                   ignored.  Presently only four UNIX signals
                    669:                   are caught.  They and their  numbers  are:
                    670:                   Interrupt(2),    Floating    exception(8),
                    671:                   Alarm(14), and Hang-up(1).
                    672: 
                    673: (sizeof 'g_arg)
                    674: 
                    675:      RETURNS: the number of  bytes  required  to  store  one
                    676:               object of type g_arg, encoded as a fixnum.
                    677: 
                    678: (small-segment 's_type 'x_cells)
                    679: 
                    680:      WHERE:   s_type is one of fixnum, flonum and value.
                    681: 
                    682:      RETURNS: a segment of  x_cells  data  objects  of  type
                    683:               s_type.
                    684: 
                    685:      SIDE EFFECT: This may  call  _s_e_g_m_e_n_t  to  allocate  new
                    686:                   space  or  it  may  be  able  to  fill the
                    687:                   request on a page already allocated.   The
                    688:                   value returned by _s_m_a_l_l-_s_e_g_m_e_n_t is usually
                    689:                   stored in the data  subpart  of  an  array
                    690:                   object.
                    691: 
                    692: (sstatus g_type g_val)
                    693: 
                    694:      RETURNS: g_val
                    695: 
                    696:      SIDE EFFECT: If  g_type  is  not  one  of  the  special
                    697:                   sstatus  codes  described  in the next few
                    698:                   pages this simply sets g_val as the  value
                    699:                   of status type g_type in the system status
                    700:                   property list.
                    701: 
                    702: 
                    703: 
                    704: 
                    705: 
                    706: 
                    707: 
                    708: 
                    709: 
                    710: 
                    711: 
                    712: 9
                    713: 
                    714: 9                                   Printed: January 31, 1984
                    715: 
                    716: 
                    717: 
                    718: 
                    719: 
                    720: 
                    721: 
                    722: System Functions                                        6-12
                    723: 
                    724: 
                    725: (sstatus appendmap g_val)
                    726: 
                    727:      RETURNS: g_val
                    728: 
                    729:      SIDE EFFECT: If g_val is non-null when _f_a_s_l is told  to
                    730:                   create  a  load map, it will append to the
                    731:                   file  name  given  in  the  _f_a_s_l  command,
                    732:                   rather  than creating a new map file.  The
                    733:                   initial value is nil.
                    734: 
                    735: (sstatus automatic-reset g_val)
                    736: 
                    737:      RETURNS: g_val
                    738: 
                    739:      SIDE EFFECT: If g_val is non-null when an error  occurs
                    740:                   which no one wants to handle, a _r_e_s_e_t will
                    741:                   be done instead of  entering  a  primitive
                    742:                   internal break loop.  The initial value is
                    743:                   t.
                    744: 
                    745: (sstatus chainatom g_val)
                    746: 
                    747:      RETURNS: g_val
                    748: 
                    749:      SIDE EFFECT: If g_val is non nil and a _c_a_r or _c_d_r of  a
                    750:                   symbol  is done, then nil will be returned
                    751:                   instead of an error being signaled.   This
                    752:                   only affects the interpreter, not the com-
                    753:                   piler.  The initial value is nil.
                    754: 
                    755: (sstatus dumpcore g_val)
                    756: 
                    757:      RETURNS: g_val
                    758: 
                    759:      SIDE EFFECT: If g_val is nil,  FRANZ  LISP  tells  UNIX
                    760:                   that a segmentation violation or bus error
                    761:                   should cause a core dump.  If g_val is non
                    762:                   nil  then  FRANZ  LISP  will  catch  those
                    763:                   errors and print a  message  advising  the
                    764:                   user to reset.
                    765: 
                    766:      NOTE: The initial value for this flag is nil, and  only
                    767:            those  knowledgeable  of  the innards of the lisp
                    768:            system should ever set this flag non nil.
                    769: 
                    770: 
                    771: 
                    772: 
                    773: 
                    774: 
                    775: 
                    776: 
                    777: 9
                    778: 
                    779: 9                                   Printed: January 31, 1984
                    780: 
                    781: 
                    782: 
                    783: 
                    784: 
                    785: 
                    786: 
                    787: System Functions                                        6-13
                    788: 
                    789: 
                    790: (sstatus dumpmode x_val)
                    791: 
                    792:      RETURNS: x_val
                    793: 
                    794:      SIDE EFFECT: All subsequent _d_u_m_p_l_i_s_p's will be done  in
                    795:                   mode  x_val.   x_val  may be either 413 or
                    796:                   410 (decimal).
                    797: 
                    798:      NOTE: the advantage of mode 413 is that the dumped Lisp
                    799:            can  be demand paged in when first started, which
                    800:            will make it start faster and disrupt other users
                    801:            less.  The initial value is 413.
                    802: 
                    803: (sstatus evalhook g_val)
                    804: 
                    805:      RETURNS: g_val
                    806: 
                    807:      SIDE EFFECT: When g_val is non nil,  this  enables  the
                    808:                   evalhook  and  funcallhook  traps  in  the
                    809:                   evaluator.  See 14.4 for more details.
                    810: 
                    811: (sstatus feature g_val)
                    812: 
                    813:      RETURNS: g_val
                    814: 
                    815:      SIDE EFFECT: g_val is added  to  the  (_s_t_a_t_u_s _f_e_a_t_u_r_e_s)
                    816:                   list,
                    817: 
                    818: (sstatus gcstrings g_val)
                    819: 
                    820:      RETURNS: g_val
                    821: 
                    822:      SIDE EFFECT: if g_val is non-null, and if  string  gar-
                    823:                   bage  collection was enabled when the lisp
                    824:                   system was compiled, string space will  be
                    825:                   garbage collected.
                    826: 
                    827:      NOTE: the default value for this is nil since  in  most
                    828:            applications  garbage  collecting  strings  is  a
                    829:            waste of time.
                    830: 
                    831: (sstatus ignoreeof g_val)
                    832: 
                    833:      RETURNS: g_val
                    834: 
                    835:      SIDE EFFECT: If g_val is non-null when an end  of  file
                    836:                   (CNTL-D  on UNIX) is typed to the standard
                    837:                   top-level interpreter, it will be  ignored
                    838:                   rather then cause the lisp system to exit.
                    839:                   If the the standard input  is  a  file  or
                    840:                   pipe  then this has no effect, an EOF will
                    841:                   always cause lisp to  exit.   The  initial
                    842:                   value is nil.
                    843: 
                    844: 
                    845:                                    Printed: January 31, 1984
                    846: 
                    847: 
                    848: 
                    849: 
                    850: 
                    851: 
                    852: 
                    853: System Functions                                        6-14
                    854: 
                    855: 
                    856: (sstatus nofeature g_val)
                    857: 
                    858:      RETURNS: g_val
                    859: 
                    860:      SIDE EFFECT: g_val is removed from the status  features
                    861:                   list if it was present.
                    862: 
                    863: (sstatus translink g_val)
                    864: 
                    865:      RETURNS: g_val
                    866: 
                    867:      SIDE EFFECT: If g_val is nil then all  transfer  tables
                    868:                   are  cleared and further calls through the
                    869:                   transfer table will  not  cause  the  fast
                    870:                   links  to be set up.  If g_val is the sym-
                    871:                   bol _o_n then all  possible  transfer  table
                    872:                   entries  will  be linked and the flag will
                    873:                   be set to cause fast links to  be  set  up
                    874:                   dynamically.   Otherwise  all that is done
                    875:                   is to set the flag to cause fast links  to
                    876:                   be  set up dynamically.  The initial value
                    877:                   is nil.
                    878: 
                    879:      NOTE: For a discussion of transfer tables, see 12.8.
                    880: 
                    881: (sstatus uctolc g_val)
                    882: 
                    883:      RETURNS: g_val
                    884: 
                    885:      SIDE EFFECT: If g_val is not  nil  then  all  unescaped
                    886:                   capital  letters  in  symbols  read by the
                    887:                   reader will be converted to lower case.
                    888: 
                    889:      NOTE: This allows FRANZ LISP to be compatible with sin-
                    890:            gle  case  lisp  systems (e.g. Maclisp, Interlisp
                    891:            and UCILisp).
                    892: 
                    893: (status g_code)
                    894: 
                    895:      RETURNS: the value  associated  with  the  status  code
                    896:               g_code  if  g_code  is  not one of the special
                    897:               cases given below
                    898: 
                    899: 
                    900: 
                    901: 
                    902: 
                    903: 
                    904: 
                    905: 
                    906: 
                    907: 
                    908: 9
                    909: 
                    910: 9                                   Printed: January 31, 1984
                    911: 
                    912: 
                    913: 
                    914: 
                    915: 
                    916: 
                    917: 
                    918: System Functions                                        6-15
                    919: 
                    920: 
                    921: (status ctime)
                    922: 
                    923:      RETURNS: a symbol whose print name is the current  time
                    924:               and date.
                    925: 
                    926:      EXAMPLE: (_s_t_a_t_u_s _c_t_i_m_e) = |Sun Jun 29 16:51:26 1980|
                    927: 
                    928:      NOTE: This  has  been  made  obsolete  by  _t_i_m_e-_s_t_r_i_n_g,
                    929:            described below.
                    930: 
                    931: (status feature g_val)
                    932: 
                    933:      RETURNS: t iff g_val is in the status features list.
                    934: 
                    935: (status features)
                    936: 
                    937:      RETURNS: the value of the features  code,  which  is  a
                    938:               list  of  features  which  are present in this
                    939:               system.    You   add   to   this   list   with
                    940:               (_s_s_t_a_t_u_s _f_e_a_t_u_r_e '_g__v_a_l)  and  test if feature
                    941:               g_feat         is         present         with
                    942:               (_s_t_a_t_u_s _f_e_a_t_u_r_e '_g__f_e_a_t).
                    943: 
                    944: (status isatty)
                    945: 
                    946:      RETURNS: t iff the standard input is a terminal.
                    947: 
                    948: (status localtime)
                    949: 
                    950:      RETURNS: a list of  fixnums  representing  the  current
                    951:               time.
                    952: 
                    953:      EXAMPLE: (_s_t_a_t_u_s _l_o_c_a_l_t_i_m_e) =  (3 51 13 31 6 81  5  211
                    954:               1)
                    955:               means 3_r_d second, 51_s_t minute,  13_t_h  hour  (1
                    956:               p.m), 31_s_t day, month 6 (0 = January), year 81
                    957:               (0 = 1900), day of the  week  5  (0 = Sunday),
                    958:               211_t_h  day  of  the  year and daylight savings
                    959:               time is in effect.
                    960: 
                    961: (status syntax s_char)
                    962: 
                    963:      NOTE: This  function  should  not  be  used.   See  the
                    964:            description  of  _g_e_t_s_y_n_t_a_x  (in  Chapter 7) for a
                    965:            replacement.
                    966: 
                    967: 
                    968: 
                    969: 
                    970: 
                    971: 
                    972: 
                    973: 9
                    974: 
                    975: 9                                   Printed: January 31, 1984
                    976: 
                    977: 
                    978: 
                    979: 
                    980: 
                    981: 
                    982: 
                    983: System Functions                                        6-16
                    984: 
                    985: 
                    986: (status undeffunc)
                    987: 
                    988:      RETURNS: a list of all functions which  transfer  table
                    989:               entries  point to but which are not defined at
                    990:               this point.
                    991: 
                    992:      NOTE: Some of the undefined functions listed  could  be
                    993:            arrays which have yet to be created.
                    994: 
                    995: (status version)
                    996: 
                    997:      RETURNS: a string which is  the  current  lisp  version
                    998:               name.
                    999: 
                   1000:      EXAMPLE: (_s_t_a_t_u_s _v_e_r_s_i_o_n) = "Franz Lisp, Opus 38.61"
                   1001: 
                   1002: (syscall 'x_index ['xst_arg1 ...])
                   1003: 
                   1004:      RETURNS: the result of issuing  the  UNIX  system  call
                   1005:               number x_index with arguments xst_arg_i.
                   1006: 
                   1007:      NOTE: The UNIX system calls are described in section  2
                   1008:            of the UNIX Programmer's manual. If xst_arg_i is a
                   1009:            fixnum, then its value is passed as an  argument,
                   1010:            if  it  is  a symbol then its pname is passed and
                   1011:            finally if it is a string then the string  itself
                   1012:            is  passed  as an argument.  Some useful syscalls
                   1013:            are:
                   1014:            (_s_y_s_c_a_l_l _2_0) returns process id.
                   1015:            (_s_y_s_c_a_l_l _1_3) returns the number of seconds  since
                   1016:            Jan 1, 1970.
                   1017:            (_s_y_s_c_a_l_l _1_0 '_f_o_o) will unlink (delete)  the  file
                   1018:            foo.
                   1019: 
                   1020: (sys:access 'st_filename 'x_mode)
                   1021: (sys:chmod 'st_filename 'x_mode)
                   1022: (sys:gethostname)
                   1023: (sys:getpid)
                   1024: (sys:getpwnam 'st_username)
                   1025: (sys:link 'st_oldfilename 'st_newfilename)
                   1026: (sys:time)
                   1027: (sys:unlink 'st_filename)
                   1028: 
                   1029:      NOTE: We have been warned that the actual  system  call
                   1030:            numbers  may  vary  among different UNIX systems.
                   1031:            Users concerned about portability may wish to use
                   1032:            this  group  of  functions.  Another advantage is
                   1033:            that tilde-expansion is performed on all filename
                   1034:            arguments.   These functions do what is described
                   1035:            in the system call section of your UNIX manual.
                   1036: 
                   1037:            _s_y_s:_g_e_t_p_w_n_a_m returns a  vector  of  four  entries
                   1038:            from the password file, being the user name, user
                   1039: 
                   1040: 
                   1041:                                    Printed: January 31, 1984
                   1042: 
                   1043: 
                   1044: 
                   1045: 
                   1046: 
                   1047: 
                   1048: 
                   1049: System Functions                                        6-17
                   1050: 
                   1051: 
                   1052:            id, group id, and home directory.
                   1053: 
                   1054: (time-string ['x_seconds])
                   1055: 
                   1056:      RETURNS: an ascii string giving the time and date which
                   1057:               was  x_seconds  after  UNIX's idea of creation
                   1058:               (Midnight, Jan 1, 1970 GMT).  If  no  argument
                   1059:               is  given,  time-string  returns  the  current
                   1060:               date.  This supplants (_s_t_a_t_u_s _c_t_i_m_e), and  may
                   1061:               be  used  to make the results of _f_i_l_e_s_t_a_t more
                   1062:               intelligible.
                   1063: 
                   1064: (top-level)
                   1065: 
                   1066:      RETURNS: nothing (it never returns)
                   1067: 
                   1068:      NOTE: This function is  the  top-level  read-eval-print
                   1069:            loop.   It  never  returns  any  value.  Its main
                   1070:            utility is that if you  redefine  it,  and  do  a
                   1071:            (reset)  then  the  redefined (top-level) is then
                   1072:            invoked.  The default top-level for Franz,  allow
                   1073:            one  to  specify  his  own  printer or reader, by
                   1074:            binding the symbols  top-level-printer  and  top-
                   1075:            level-reader.   One can let the default top-level
                   1076:            do most of the drudgery in catching _r_e_s_e_t's,  and
                   1077:            reading  in  .lisprc files, by binding the symbol
                   1078:            user-top-level, to a routine that concerns itself
                   1079:            only with the read-eval-print loop.
                   1080: 
                   1081: (wait)
                   1082: 
                   1083:      RETURNS: a dotted pair (_p_r_o_c_e_s_s_i_d .  _s_t_a_t_u_s)  when  the
                   1084:               next child process dies.
                   1085: 
                   1086: 
                   1087: 
                   1088: 
                   1089: 
                   1090: 
                   1091: 
                   1092: 
                   1093: 
                   1094: 
                   1095: 
                   1096: 
                   1097: 
                   1098: 
                   1099: 
                   1100: 
                   1101: 
                   1102: 
                   1103: 
                   1104: 9
                   1105: 
                   1106: 9                                   Printed: January 31, 1984
                   1107: 
                   1108: 
                   1109: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.