home *** CD-ROM | disk | FTP | other *** search
/ ANews 2 / AnewsCD2.iso / Indispensables / Librairies / Ixemul / README < prev   
Text File  |  1999-10-14  |  17KB  |  341 lines

  1. README for ixemul.library and ixnet.library version 45.1
  2.  
  3.  
  4.  
  5. IMPORTANT
  6.  
  7. Always read the NEWS file for information about new features! The NEWS file
  8. is part of the ixemul source archive.
  9.  
  10. Starting with ixemul.library version 42.0 the ssystem() function is no longer
  11. supported. The only two applications use this function are (to my knowledge)
  12. gcc and man. You should either upgrade to the latest gcc (2.7.2 or higher)
  13. or replace gcc by gccv (which is part of older gcc distributions). You can
  14. find a new 'man' version on ADE.
  15.  
  16. Starting with ixemul.library version 43.1 various networking functions have
  17. been moved to libc.a. See the NEWS file for details. It only concerns
  18. certain somewhat specialized functions, so 'normal' clients and daemons
  19. shouldn't be affected.
  20.  
  21. This library is part of ADE: the Amiga Developers Environment. For more
  22. information see ftp.ninemoons.com, /pub/ade.
  23.  
  24. INTRODUCTION
  25.  
  26. Originally created in 1991 or 1992 by Markus Wild, the ixemul.library has
  27. become the driving force behind the ADE project.
  28.  
  29. Essentially it is a BSD Unix kernel running under the Amiga OS.  The
  30. code for handling Unix signals is taken almost verbatim from the BSD kernel
  31. sources, for example.  Multitasking and file I/O is, of course, passed on
  32. to the Amiga OS.  Because the library resembles BSD Unix so closely, it has
  33. made it possible to port almost all Unix programs.
  34.  
  35. However, because of the conformance to BSD, the library is not too
  36. conservative with resources or overly concerned with Amiga standards.  For
  37. example, command line expansion uses Unix semantics and doesn't use
  38. ReadArgs().  The purpose of ixemul.library is to emulate Unix as well as is
  39. technically possible.  So given a choice between Amiga behavior or Unix
  40. behavior, the last one is chosen.
  41.  
  42. HISTORY
  43.  
  44. As I mentioned, the library was originally created by Markus Wild.  It
  45. allowed him to port Unix programs, most notably gcc and a Unix shell
  46. (pdksh), which in turn gave him the opportunity to start porting NetBSD
  47. Unix.  At some point he stopped working on ixemul.library and continued
  48. with the real thing, NetBSD.
  49.  
  50. Although Markus made some snapshots of his library available on Internet,
  51. he was about the only one who could actually compile it.  The snapshots
  52. where never complete and didn't use a standard Make tool.
  53.  
  54. Rafael W. Luebbert managed around June 1994 to actually compile the
  55. library using bits and pieces from four different source releases.  Even
  56. then he had to write some missing code and had to debug a lot before he got
  57. it working.  Luebbert released versions 40.1 through 40.4.  Since this was
  58. the only version available that could actually be compiled, Fred Fish
  59. switched to version 40.4 for his FreshFish CDROM series.
  60.  
  61. Leonard Norrgard also started working on 40.4, fixing a variety of
  62. problems.  So for a time there were two versions of the library, both
  63. derived from 40.4.  Around March 1995 I began contributing my own fixes for
  64. the library to Fred, including a fix for a horrible memory trashing bug
  65. which substantially improved the stability of the library.  Starting with
  66. version 42.0 I became the new maintainer of the library.  I merged
  67. Leonard's version of the library into 42.0, the whole source distribution
  68. was cleaned up and reorganized and many bugs were fixed.  Also new
  69. functionality was added such as timezone support.
  70.  
  71. Thanks to Jeff Shepherd the support for network functions has been totally
  72. reorganized for version 43.0.  A new ixnet.library was introduced that
  73. contains all the network handling.  This new library supports both AS225
  74. and AmiTCP.  Furthermore, there is no longer any need to maintain two
  75. versions of an Internet client or daemon as ixnet.library will do the
  76. multiplexing for you.  The program itself is completely shielded from the
  77. actual networking package in use.  Also, should a new networking package
  78. appear for the Amiga, then it is relatively easy to add support for that
  79. package to ixnet.library.  All existing programs will automatically be able
  80. to work with the new package too.
  81.  
  82. Version 43.0 also introduced support for automatic stack extension
  83. (provided you compiled your program with the -mstackextend flag).  This
  84. support was done by Matthias Fleischer.
  85.  
  86. Last, but not least, I've added the ptrace() function, which was essential
  87. for porting the GNU debugger, GDB.  So it is now possible to use a decent
  88. debugger with gcc (and with the GNU C++, fortran and ADA compilers).
  89.  
  90. Version 43.1 was a bug-fix release, which further improved stability.
  91.  
  92. Version 44.0 made the library much more (Net)BSD compatible, making it even
  93. easier to port Unix programs. Also many bugs were fixed.
  94.  
  95. Version 45.0 fixes a few bugs, improves stack extension (see the new ixstack
  96. utility) and further improves Ctrl-C handling by adding 'sessions', something
  97. that was needed for the ADE X port.
  98.  
  99. Version 45.1 is a bug-fix release, and also improves uid/gid handling.
  100.  
  101. USAGE
  102.  
  103. The Aminet distribution of ixemul consists of several archives:  one for
  104. each flavor (CPU/FPU combination) of the library, one for the timezone
  105. support, an archive for documentation, an archive for various utilities and
  106. an SDK archive, containing headers, libraries and C-objects that provide
  107. the startup code.  There is also an ixemul source archive.  If you don't
  108. mind recompiling everything, and if you have a decent ADE environment, then
  109. all you have to do is retrieve this archive, as all the other archives are
  110. generated from this source distribution.
  111.  
  112. Besides the library itself, there are also some utilities and other
  113. goodies.  First of all, there is a special trace version of the library.
  114. Together with the ixtrace tool it allows you to see which library functions
  115. are called by the program you want to debug.  If you compile the library
  116. yourself you will also get, as part of the compile process, a debug version
  117. of the library.  If you get an Enforcer hit in the library, and if you have
  118. SegTracker installed, then you can track down in which source and at which
  119. line the hit took place using the gccfindhit tool (available from Aminet
  120. and ADE) that is similar to the FindHit tool which is part of the Enforcer
  121. package.  I've used this with great success in the past.
  122.  
  123. Various settings that influence the behavior of the library can be set
  124. using the ixprefs utility.  A small tool ixrun allowing you to run AmigaOS
  125. scripts from within the Unix shell is also provided.  An ixemul-specific
  126. pipe-handler allows you to set up a pipe between an AmigaOS utility and an
  127. Unix program.  A pipe between two Unix programs is handled by the
  128. ixemul.library itself, but since AmigaOS programs are not under the
  129. control of the library, this handler is used instead.
  130.  
  131. Finally, the tools zic (for manipulating the timezone databases) and
  132. ixtimezone are also part of ixemul.  The ixtimezone tool can be used to
  133. automatically adjust the Amiga time based on the currently selected
  134. timezone.  The best way to use this tool is to install the timezone
  135. databases (in etc:zoneinfo), set the TZ environment variable correctly (in
  136. my case "Europe/Amsterdam"), add the line "ixtimezone -patch-resource
  137. >nil:" to your user-startup and set the Amiga clock to Greenwich Mean Time
  138. (or Universal Time, as it is now called).  Now you will never have to worry
  139. about things like Daylight Saving Time as each time ixtimezone is called,
  140. this tool checks the current timezone and will patch the Amiga clock to the
  141. right time.  This tool is also very useful if you also run NetBSD or Linux,
  142. as these OSes expect that the internal Amiga clock adheres to GMT.
  143.  
  144. MEMORY REQUIREMENTS
  145.  
  146. The library itself needs about 150 Kb, but if you want to do some useful
  147. work, such as compiling programs, I advise at least 4 Mb.  More importantly
  148. is the stack size:  set it to at least 50 Kb.  For large compile jobs a
  149. bigger stack may be needed.  Fred Fish has reported that compiling some
  150. really big programs (e.g.  octave) requires 1 Mb of stack.  However, this
  151. is extreme.  Usually 50-100 Kb suffices.
  152.  
  153. The reason for these large stacks is that the Unix operating system
  154. automatically extends the stack if it is too small. Therefore some Unix
  155. programs aren't exactly conservative with their stack space.
  156.  
  157. PROGRAMMING WITH IXEMUL
  158.  
  159. There is