home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / program / lynxlib / co.c < prev    next >
C/C++ Source or Header  |  1993-10-23  |  1KB  |  34 lines

  1. /* This source file is part of the LynxLib miscellaneous library by
  2. Robert Fischer, and is Copyright 1990 by Robert Fischer.  It costs no
  3. money, and you may not make money off of it, but you may redistribute
  4. it.  It comes with ABSOLUTELY NO WARRANTY.  See the file LYNXLIB.DOC
  5. for more details.
  6. To contact the author:
  7.     Robert Fischer \\80 Killdeer Rd \\Hamden, CT   06517   USA
  8.     (203) 288-9599     fischer-robert@cs.yale.edu                 */
  9.  
  10. /* Coroutine C code */
  11. #include "co.h"
  12.  
  13. BOOLEAN init_co(f, arg, stacksize, p)
  14. /* Returns FALSE on error */
  15. func *f;        /* Cofunction to init */
  16. LONG arg;        /* Argument to that function */
  17. long stacksize;    /* Size of stack to make */
  18. pcb *p;            /* Process stack ID to put stack in */
  19. {
  20.     /* Init the process' stack */
  21.     if ((p->stack_base = lmalloc(stacksize)) == NULL) return FALSE;
  22.     p->stack = p->stack_base + stacksize;
  23.  
  24.     /* Init the process */
  25.     init_co_s(f, arg, p);
  26. }
  27. /* -------------------------------------------------------- */
  28. kill_co(p)    /* This kills a coroutine by freeing its stack */
  29. pcb *p;
  30. {
  31.     free(p->stack_base);
  32. }
  33. /* -------------------------------------------------------- */
  34.