home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / zip / mint / mntlib16.lzh / MNTLIB16 / README < prev    next >
Text File  |  1993-08-03  |  4KB  |  76 lines

  1.  
  2. *NOTE*: to compile the library you will need the header files in mntinc16.zoo
  3.  
  4. This will likely be the last version of mntlib in its present form. I plan
  5. (time allowing!) to produce a more portable version of mntlib that will
  6. work with Sozobon and maybe other compilers (like Laser) as well as gcc;
  7. this will necessarily involve considerable changes in the names of functions
  8. and variables (to satisfy the DRI 8 character external name rules) and
  9. will likely take a long time to complete.
  10.  
  11. ============================================================================
  12.  
  13. Here is mintlib, a library for the gcc which produces programs usable under
  14. either MiNT or TOS (of course, some features, e.g. pipe(), are only available
  15. under MiNT). This version has been reasonably well tested under both TOS
  16. and MiNT, and with 16 and 32 bit integers, but no doubt bugs remain. Please
  17. report any that you find.
  18.  
  19. There are no docs ("Use the Source, Luke"), but most of the library should
  20. be pretty self-explanatory. MiNT specific features are active when the
  21. external variable __mint is non-zero; this variable is set automatically
  22. by the startup code in main.c. Some things to watch out for:
  23. (1) MiNT has a blocking fork(), i.e. the parent waits for the child to
  24.     relinquish its address space rather than continuing in parallel.
  25. (2) Using the spawn functions instead of fork/exec means that your programs
  26.     will work under TOS as well as under MiNT. vfork() also works under
  27.     TOS now, so vfork/exec is another viable alternative.
  28. (3) The longjmp() code has a call to Psigreturn() embedded in it; this means
  29.     that most signal handlers will work without changes, but in some very
  30.     bizarre circumstances this could cause a problem (if the sig handler
  31.     longjmps *within* itself, and then returns, for example).
  32. (4) Under TOS, all terminal reads are assumed to come from the console
  33. (5) You'll note that there is only minimal support for UNIXMODE;
  34.     this is because MiNT 0.9 supports symlinks in the kernel.
  35. (6) A function call, tfork(), is provided to start a new thread of
  36.     execution in the same address space. The declaration is
  37.     int tfork( int (*func)(), long arg ).
  38.     A new process is started, which executes concurrently with the parent
  39.     process and in the same address space (but a different stack).
  40.     The child begins at the address in func, with the stack set up as though
  41.     the call (*func)(arg) was made (in fact, this call *is* made!).
  42.     The child will exit when func returns, with the exit status being the
  43.     return code of func. The parent continues to execute concurrently;
  44.     in the parent, the value returned from tfork() is the process id of the
  45.     child.
  46. (7) The library is not set up to handle multiple threads of execution in the
  47.     same address space, so you'll have to provide semaphores for critical
  48.     library calls (e.g. malloc) yourself if you have multiple threads.
  49.  
  50. NOTE: If you already have a gcc library, make sure that you do *not* use
  51. its header files to build the mint library. Some headers (signal.h and
  52. ioctl.h) have changed significantly, and are no longer compatible. The
  53. environment variable GNUINC should point to the include directory obtained
  54. from this zoo file whenever you make any MiNT related stuff. (I've completely
  55. replaced my TOS library with this one, because it can produce TOS programs
  56. too.)
  57. Note to the note: recent versions of the gcc library have header files that
  58. are compatible with mntlib. I can't vouch for the compatibility 100% (and you
  59. definitely need a *very* recent version of the include files to get complete
  60. compatibility with mntlib16).
  61.  
  62.  
  63. The library is based on the gcc library that Jwahar Bammi and I put together.
  64. Lots of people have contributed to it, including (but not limited to):
  65.  
  66. Jwahar Bammi, Kai-Uwe Bloem, John R. Dunning, Doug Gwyn, Dave Gymer,
  67. Allan Pratt, Arnold D. Robbins, Edgar Roeder, Rich Salz, Dale Schumacher,
  68. Eric Smith, Henry Spencer, and Stephen Usher.
  69.  
  70. I've hacked on things quite a bit, so if they're broken don't blame the
  71. original authors, blame me.
  72.  
  73. Eric R. Smith
  74. eric.smith@uwo.ca
  75. ersmith@uwovax.bitnet
  76.