|
|
1.1 root 1: Changes are listed in *reverse* order, most recent changes being
2:
3: first.
4:
5:
6:
7: version 0.95
8:
9:
10:
11: PATCHLEVEL13::
12:
13:
14:
15: proto.h,filesys.c:
16:
17: Added Alex's patches for Lattice.
18:
19:
20:
21: PATCHLEVEL12::
22:
23:
24:
25: dosdir.c:
26:
27: Fsnext() on symbolic links was broken, because
28:
29: relpath2cookie no longer checks drive letters
30:
31: unless "depth" is > 0. Fixed this.
32:
33: main.c,filesys.c:
34:
35: Added support for putting the mint.cnf file
36:
37: and any *.XFS files into the directory \mint.
38:
39: dos.c:
40:
41: Added Pgeteuid() and Pgetegid() system calls.
42:
43: main.c:
44:
45: Fixed the "set current directory" code to
46:
47: work properly.
48:
49: main.c:
50:
51: Added a sanity check; if GEM is already running,
52:
53: don't try to run it again.
54:
55: procfs.c:
56:
57: Added FIONWRITE and FIONREAD ioctl calls.
58:
59: proc.c,bios.c:
60:
61: Fixed the type of the critical error handler.
62:
63: dosfile.c,file.h,proc.c:
64:
65: Added Alex's patches for O_APPEND and O_NOINHERIT.
66:
67: shmfs.c:
68:
69: Fixed lseek() on shared memory segments, and added
70:
71: FIONWRITE and FIONREAD ioctl calls.
72:
73: fasttext.c:
74:
75: Tried once again to tame the wild cursor.
76:
77: dosmem.c,proc.c:
78:
79: Modified process startup code so that PROC structures are no
80:
81: longer kept forever by the kernel (which should help alleviate
82:
83: memory fragmentation problems a bit).
84:
85:
86:
87: PATCHLEVEL11::
88:
89:
90:
91: dosmem.c:
92:
93: Applied Alex Kiernan's SIGTRAP bug fix (and kicked myself for
94:
95: forgetting C's precedence rules; thanks, Alex!).
96:
97: filesys.c:
98:
99: Fixed relpath2cookie so that names like "C:\Z:" aren't
100:
101: interpreted as referring to drive Z:.
102:
103: fasttext.c:
104:
105: Restored the "turn on cursor when opening()" code, because
106:
107: without it the fasttext driver and BIOS aren't in sync.
108:
109: main.c:
110:
111: Moved the check for the presence of an already existing MiNT
112:
113: cookie to earlier in the initialization process, so that
114:
115: the error message can be printed properly.
116:
117: shmfs.c:
118:
119: Fixed Dpathconf() on U:\SHM (filenames are truncated automatically
120:
121: on that file system) and corrected the comment there.
122:
123: syscall.s:
124:
125: New function, call_aes, used to check for the presence of GEM
126:
127: (so we can tell whether or not we're running from the AUTO folder).
128:
129: main.c:
130:
131: Run any programs which come after mint.prg in the AUTO
132:
133: folder.
134:
135: version.h:
136:
137: Changed so that the patchlevel is always printed on boot-up.
138:
139:
140:
141: PATCHLEVEL10::
142:
143:
144:
145: unifs.c:
146:
147: Add U:\SHM as an interface for shared memory.
148:
149: shmfs.c:
150:
151: New file system for doing shared memory.
152:
153: xbios.c:
154:
155: Fixed Bconmap() to always return an error if the underlying
156:
157: TOS doesn't support Bconmap.
158:
159: main.c:
160:
161: Fixed a bug in the argument parsing code for the "exec"
162:
163: command in mint.cnf.
164:
165: dosdir.c:
166:
167: Changed Dlock() to return ELOCKED if an attempt is made to
168:
169: lock a drive that's already locked, and ENSLOCK if an attempt
170:
171: is made to remove a non-existent lock.
172:
173: version.h:
174:
175: I forgot again to update this. Aargh!
176:
177:
178:
179: PATCHLEVEL9::
180:
181:
182:
183: mem.c,mem.h:
184:
185: Align everything on 16 byte boundaries.
186:
187: mem.c,dosmem.c:
188:
189: Actually fix the "memory being allocated twice" bug.
190:
191: The problem was that setting m->links to 0 before calling
192:
193: attach_region was a no-no.
194:
195:
196:
197: PATCHLEVEL8::
198:
199:
200:
201: mem.c:
202:
203: Attempt to fix the strange "memory being allocated
204:
205: twice" bug.
206:
207: tosfs.c:
208:
209: Truncating names at 14 characters came *before* the
210:
211: 8.3 kludge, which meant that long names were being
212:
213: interpreted incorrectly (e.g. gcc-cc1plus.ttp was
214:
215: becoming "gcc-cc1p.tt"). Temporary kludge: only
216:
217: truncate at 32 characters. Long term solution:
218:
219: re-write this code to do the 8.3 truncation at the
220:
221: same time as the truncation.
222:
223: main.c, proc.h:
224:
225: Provide a more explicit type for criticerr.
226:
227: proc.c:
228:
229: Don't make _logbase per-process if hardware scrolling
230:
231: is active, since this makes for all kinds of weirdness!
232:
233: mem.c:
234:
235: Allow NULL commandline to be the same as an empty
236:
237: string. (It was acting this way before, due to the MiNT
238:
239: library strncpy; now that we use our own strncpy some
240:
241: programs were passing funny arguments.)
242:
243: dosmem.c:
244:
245: Provide a more detailed trace of Pexec activity.
246:
247: mem.c:
248:
249: Added a sanity check in get_region().
250:
251: proc.c:
252:
253: Set the time/date stamp of process 0 to the
254:
255: date & time when the system was booted.
256:
257: fasttext.c:
258:
259: Commented out the code that turns the cursor
260:
261: on when u:\dev\fasttext is opened.
262:
263: tty.c:
264:
265: Unsigned characters are always >= 0, so we
266:
267: don't need to check this.
268:
269:
270:
271: PATCHLEVEL7::
272:
273:
274:
275: makefile.lcc,mintlc.prj:
276:
277: Added Alex's patches.
278:
279: assert.h:
280:
281: Added Alex's patch to cast the result to void.
282:
283: filesys.c:
284:
285: Make sure the file system media change routine
286:
287: is called every time a disk change is forced;
288:
289: this corrects the Dlock() bug (it wasn't forcing
290:
291: media change as it should have).
292:
293: version.h:
294:
295: Oops! I forgot to increment this for pl6, so
296:
297: it jumps by 2 this time.
298:
299:
300:
301: PATCHLEVEL6::
302:
303:
304:
305: biosfs.c,pipefs.c,tty.c:
306:
307: New Fcntl calls for controlling terminal baud
308:
309: rates and flags such as parity and stop bits.
310:
311: These have been integrated with the old TIOC*
312:
313: calls where applicable.
314:
315: dosfile.c:
316:
317: Changed Fcntl to make a call to tty_ioctl be the
318:
319: default if the device is a terminal and the device
320:
321: ioctl routine returns EINVFN.
322:
323: procfs.c, proc.c:
324:
325: The date/time stamp of a process now shows when the
326:
327: process was started, rather than being the number
328:
329: of seconds of CPU time used.
330:
331: tosfs.c:
332:
333: Degrade an ALERT to a TRACE; there is a circumstance
334:
335: in which a root directory can apparently be changed,
336:
337: and that's when a program tries to open an empty
338:
339: file name. We don't need to warn the user that
340:
341: something is wrong in this case; we can just fail
342:
343: silently.
344:
345: proc.c:
346:
347: Save the logical screen base for each process.
348:
349: main.c,bios.c,proc.h:
350:
351: Made the critical error handler per-process.
352:
353: bios.c,syscall.s:
354:
355: A cleaner way of saving registers when calling
356:
357: functions... this wasn't really necessary, but I
358:
359: did it to make tracking a bug down easier.
360:
361: tty.c:
362:
363: New terminal flag, T_NOFLUSH, to suppress flushing of
364:
365: input when SIGINT or SIGQUIT is received.
366:
367: *fs.c, file.h:
368:
369: Added a new Dpathconf() option that tells whether or
370:
371: not a file system is case sensitive.
372:
373: dos.c:
374:
375: Forbid Prenice() on processes that you don't own.
376:
377: dosmem.c:
378:
379: Correct a typo that was causing terminal process groups
380:
381: to be incorrectly set.
382:
383:
384:
385: PATCHLEVEL5::
386:
387:
388:
389: makefile:
390:
391: The -DOWN_LIB declaration should have been on (actually,
392:
393: it was, in my copy... sorry for the mix-up).
394:
395: fasttext.c:
396:
397: Applied Alex's patch for the disappearing cursor bug.
398:
399: everywhere:
400:
401: Applied Alex's patches to add "const" declarations where
402:
403: appropriate, and to get rid of size_t (since if OWN_LIB
404:
405: is defined we use "int" instead).
406:
407: dosmem.c:
408:
409: Fixed M_KEEP to attach memory to rootproc *only* at
410:
411: process termination.
412:
413:
414:
415:
416:
417: PATCHLEVEL4::
418:
419:
420:
421: proto.h:
422:
423: Added prototype for do_func_key().
424:
425: everywhere:
426:
427: Applied apratt's debugging/trace patches.
428:
429:
430:
431: PATCHLEVEL3::
432:
433:
434:
435: xbios.c, biosfs.c:
436:
437: Change Bconmap to actually do the equivalent of an
438:
439: Fforce(-2, foo) call; this way, we don't need the
440:
441: ugly DFLTMODM kludge. (On the other hand, we introduce
442:
443: some new ugly kludges :-)).
444:
445: main.c,proc.c:
446:
447: Wait until everything is initialized before opening
448:
449: devices; this avoids bogus critical error messages from
450:
451: AHDI.
452:
453: util.c, mint.h, ctype.h:
454:
455: Add all sorts of utility routines (for string processing,
456:
457: character type recognition, and the like). This is
458:
459: designed to make sure that MiNT works the same regardless
460:
461: of what library is used to compile it. We're not quite
462:
463: totally independent of library yet (the startup code and
464:
465: <osbind.h> aren't replaced) but we're pretty close.
466:
467: main.c, proc.c:
468:
469: Initialize the current directory for the root
470:
471: process *after* file systems have been loaded, since
472:
473: otherwise the info is nuked when a new fs is loaded in.
474:
475: bios.c:
476:
477: Allow output to BIOS device 5 to be redirected along
478:
479: with BIOS device 2; we do this by using the MW
480:
481: ESC-Q control sequence to quote characters. A bit of
482:
483: a hack, but then, not many people use device 5.
484:
485: quickmov.s:
486:
487: Fixed two bugs in quickmove: (1) it didn't work for
488:
489: regions bigger than 0x00fffe00 bytes in length,
490:
491: and (2) it assumed the length was a multiple of 4
492:
493: bytes.
494:
495: fasttext.c:
496:
497: Re-arrange things a bit to get rid of a gcc 2.1 warning.
498:
499: dosmem.c:
500:
501: Change flag 0x4000 to mean "don't free the memory
502:
503: automatically on process termination"; explicit
504:
505: Mfree requests are still allowed, and after
506:
507: termination *any* process may Mfree the memory.
508:
509:
510:
511: PATCHLEVEL2::
512:
513:
514:
515: makefile:
516:
517: Remove -fcombine-regs from CFLAGS, since gcc 2.1
518:
519: doesn't understand it.
520:
521: bios.c:
522:
523: Ignore value returned by Bconout for the screen
524:
525: (many text accelerators get this wrong :-( ).
526:
527: dossig.c, signal.h:
528:
529: New system call, Psigaction(), by AGK.
530:
531: xbios.c:
532:
533: Added support for Bconmap.
534:
535: bios.c, biosfs.c:
536:
537: Rationalized the way biosfs and bios interact;
538:
539: no more funny device numbers are needed. Also:
540:
541: added support for Bconmap, and a new default
542:
543: modem device.
544:
545: pipefs.c:
546:
547: Applied Michael Hohmuth's patch for pipe_close (thanks,
548:
549: Michael!)
550:
551: filesys.c:
552:
553: Don't try to initialize all the drives at boot time; path2cookie
554:
555: is quite capable of initializing, and it saves having
556:
557: to access drive B: (for example) while booting is going
558:
559: on.
560:
561: main.c:
562:
563: Allow the user to avoid booting MiNT if the right shift key
564:
565: is held down.
566:
567: main.c:
568:
569: Added safety checking, as suggested by AKP.
570:
571: dosmem.c:
572:
573: In Mxalloc, if (mode & 0x4000) is nonzero then allocate non-freeable
574:
575: memory (we do this by attaching the memory to the root process).
576:
577: fasttext.c:
578:
579: Tabs should be non-destructive on the ST!
580:
581: proc.h:
582:
583: Re-arranged some things. Note that "slices" was never supposed
584:
585: to be visible to users! Also, added a "bconmap" variable to
586:
587: give the current Bconmap mapping for the process.
588:
589: dosdir.c:
590:
591: Fail Ddelete of current directories only on the current
592:
593: drive; for other drives, reset the current directory
594:
595: to the root directory. NOTE: Ddelete of a current directory
596:
597: is forbidden only if the directory is someone else's
598:
599: current directory; if it's only your current dir., you
600:
601: can delete it (and get automatically bumped back to
602:
603: root).
604:
605:
606:
607: PATCHLEVEL1::
608:
609:
610:
611: dosmem.c:
612:
613: Fixed a bug that caused processes with no '.' in their names
614:
615: to have the wrong process name.
616:
617: dosmem.c:
618:
619: In Pexec, make sure we yield to the new process so that
620:
621: it gets at least one timeslice to do an Mshrink().
622:
623: proc.c:
624:
625: In preempt(), don't punish processes that have buffered
626:
627: BIOS output and are preempted; the process of flushing the
628:
629: buffer may very well put them to sleep, and in any event
630:
631: processes doing I/O should not be considered "hogs".
632:
633: tosfs.c:
634:
635: Don't look for volume labels in opendir/readdir/lookup etc.
636:
637: main.c:
638:
639: AGK: added DEBUG_LEVEL and DEBUG_DEVNO options to mint.cnf.
640:
641: dossig.c:
642:
643: New system call (Psigpause()) courtesy of Alex Kiernan.
644:
645: dosmem.c:
646:
647: In Pexec(200,...), don't reset base->p_parent, since the
648:
649: "parent" in an overlay exec is oneself.
650:
651: tty.c:
652:
653: Fixed so that RAW mode reads will return all of an
654:
655: extended escape sequence at once, rather than waiting
656:
657: for the next read.
658:
659: dosmem.c:
660:
661: When terminating a process, make sure that it's "number of
662:
663: memory regions" is set to 0; otherwise, calls to memused()
664:
665: on the process (e.g. by procfs) can crash the system.
666:
667: dosdir.c:
668:
669: When removing directories, make sure that the directory
670:
671: isn't in use as someone's current directory (so that
672:
673: they don't get left in limbo).
674:
675: fasttext.c:
676:
677: Screen memory must come from ST RAM -- otherwise hardware
678:
679: scrolling crashes and burns. Fixed thanks to AGK.
680:
681: xbios.c:
682:
683: Moved the prototype for midiws to proto.h, and corrected the
684:
685: type of its argument (it should have been "int", not "short").
686:
687:
688:
689: PATCHLEVEL0::
690:
691:
692:
693: bios.c:
694:
695: Terminal modes weren't being set correctly in Bconout, and also
696:
697: weren't being set in bflush (which should have employed RAW
698:
699: mode output, but didn't).
700:
701: everywhere:
702:
703: Merged in Alex Kiernan's latest Lattice C patches.
704:
705:
706:
707:
708:
709: version 0.94
710:
711:
712:
713: PATCHLEVEL4::
714:
715:
716:
717: filesys.c:
718:
719: Use U:\DEV\CON for CON:, instead of V:\CON, since we're
720:
721: going to make drive V: go away soon.
722:
723: unifs.c:
724:
725: When looking up a drive, make sure that it has a valid file
726:
727: system attached to it -- otherwise, newly installed ramdisks
728:
729: can cause system crashes :-(.
730:
731: fasttext.c:
732:
733: Patches to make the fast text device work correctly on a TT,
734:
735: courtesy of Erling Henanger.
736:
737: main.c:
738:
739: Install 16 extra cookies, instead of 8, just to be friendly.
740:
741:
742:
743: PATCHLEVEL3::
744:
745:
746:
747: main.c:
748:
749: Allow PSEUDODRIVES=MAP to put the extra drives in
750:
751: _drvbits without installing new drivers for them.
752:
753: unifs.c:
754:
755: Don't rely on drvmap() to figure out what drives exist;
756:
757: it isn't accurate if PSEUDODRIVES=NO.
758:
759:
760:
761: PATCHLEVEL2::
762:
763:
764:
765: main.c:
766:
767: Added an option for turning off the BIOS routines for the
768:
769: pseudo-drives.
770:
771: filesys.c:
772:
773: Moved the vector set/restore code to main.c (where all the
774:
775: other vector stuff is).
776:
777: tosfs.c:
778:
779: If the _FLK cookie was already set when MiNT started, we
780:
781: pass file sharing and locking requests through to GEMDOS.
782:
783: main.c:
784:
785: Turn the cursor off when leaving, if we were started from
786:
787: the desktop.
788:
789: tosfs.c:
790:
791: Fixed a bug in which tos_chmode was returning an incorrect
792:
793: value.
794:
795: debug.c:
796:
797: Added code for octal output to sprintf().
798:
799: dosdir.c:
800:
801: Make Fsfirst() with the FA_LABEL bit set work on non-TOS
802:
803: file systems (via the file system readlabel function).
804:
805: (This used to work only when the search was restricted to
806:
807: labels only.)
808:
809: various places:
810:
811: Get rid of gcc 2.0 warnings.
812:
813:
814:
815: PATCHLEVEL1::
816:
817:
818:
819: file.h:
820:
821: Because Fmidipipe and the disk change code can close
822:
823: files other than the files of the current process,
824:
825: the device driver "close" function needs another
826:
827: parameter, namely the process id being closed; this
828:
829: allows device drivers to remove locks properly.
830:
831: tosfs.c:
832:
833: Volume labels shouldn't be found by Dreaddir().
834:
835: tosfs.c:
836:
837: Added file locking.
838:
839: filesys.c, main.c, file.h:
840:
841: New utility routine (denylock) to make implementing file
842:
843: locking easier for file systems.
844:
845:
846:
847: PATCHLEVEL0::
848:
849:
850:
851: tosfs.c:
852:
853: Canonicalize file names (i.e. convert to 8.3 format).
854:
855: Also, keep track of the value returned from the last
856:
857: readdir() call, so that a subsequent Fxattr() will take
858:
859: place quickly.
860:
861: proc.c:
862:
863: In sleep(), make sure interrupts are disabled while queue
864:
865: manipulations are occuring.
866:
867: bios.c:
868:
869: Correct a stuttering problem for ^C and similar interrupts.
870:
871: dosmem.c:
872:
873: 8 character process names weren't terminated properly.
874:
875: tty.c:
876:
877: Aaargh! Shift+cursor keys were being interpreted even when
878:
879: they shouldn't have been.
880:
881:
882:
883: version 0.93
884:
885:
886:
887: PATCHLEVEL6::
888:
889:
890:
891: filesys.c:
892:
893: Check for newly installed drives when parsing an
894:
895: absolute path without an explicit drive letter, as
896:
897: well as when looking at ones with drive letters.
898:
899:
900:
901: PATCHLEVEL5::
902:
903:
904:
905: biosfs.c, fasttext.c:
906:
907: Allow TIOCGWINSZ calls on the console (we use the line A
908:
909: variables to get the number or rows and columns).
910:
911: filesys.c:
912:
913: Fix a typo in the file system initialization checking.
914:
915: pipefs.c:
916:
917: Make "VIRGIN_PIPE" more obviously a magic value, and
918:
919: document it.
920:
921: pipefs.c:
922:
923: Make u:\pipe have a sensible date/time; also, make
924:
925: Dfree on u:\pipe return some useful statistics about
926:
927: the number of pipes in the system.
928:
929: procfs.c:
930:
931: u:\proc has a sensible time and date now, namely the
932:
933: time/date of the last process creation or destruction.
934:
935: dosfile.c:
936:
937: Fcreate() of a volume label now returns a handle to
938:
939: u:\dev\null.
940:
941: dosmem.c:
942:
943: Make sure the BIOSBUF buffer is flushed when terminating.
944:
945: main.c:
946:
947: There's a bug in TOS 1.4: GEM seems to assume that all
948:
949: memory is zero initially, and if it isn't (e.g. if a large
950:
951: AUTO folder program like MiNT terminates and leaves behind
952:
953: dirty memory) then having too many (or the wrong kind of)
954:
955: desk accessories can lead to a crash. This was a real bear
956:
957: to track down, and the work-around is very ugly; before
958:
959: MiNT exits we copy a short machine language subroutine into
960:
961: the command line, and then execute it; the routine zeros
962:
963: all of the TPA and then does a Pterm0().
964:
965: rendez.c:
966:
967: Change a "short" to "int" for the benefit of gcc 2.0.
968:
969: bios.c:
970:
971: Stop process dumps from stuttering.
972:
973: console.c:
974:
975: Added support for global file handles.
976:
977:
978:
979: PATCHLEVEL4::
980:
981:
982:
983: dosfile.c:
984:
985: In Fselect(), we have to re-validate file handles after
986:
987: a sleep() call, since signal handlers may close files.
988:
989: proc.c:
990:
991: Pre-allocate more PROC structures (this should help
992:
993: reduce memory fragmentation).
994:
995: tty.c, file.h:
996:
997: Allow cursor/function keys to send escape sequences.
998:
999: dosdir.c:
1000:
1001: As suggested by S. Henson: Dsetpath through a symbolic link
1002:
1003: may also require changing the current drive as well.
1004:
1005: proc.c,dos.c,timeout.c:
1006:
1007: New process scheduling algorithm, as suggested by A. Pratt.
1008:
1009: dosdir.c:
1010:
1011: Make only the low bit of Dlock() significant, for future
1012:
1013: expansion.
1014:
1015: dosfile.c:
1016:
1017: Allow Fcreate() to create a global file handle.
1018:
1019:
1020:
1021: PATCHLEVEL3::
1022:
1023:
1024:
1025: debug.c:
1026:
1027: Changed TRACE mode output so that not just any keys will
1028:
1029: start/stop output, but only Help and Undo.
1030:
1031: dosdir.c, filesys.c:
1032:
1033: Add a Dlock() system call to lock/unlock drives.
1034:
1035: filesys.c:
1036:
1037: Only initialize drives if the BIOS drive map says that
1038:
1039: they exist.
1040:
1041: dosmem.c:
1042:
1043: In Pexec, make a copy of any name we're going to use
1044:
1045: before freeing memory for overlayed programs; the old
1046:
1047: way was decidedly incorrect!
1048:
1049: dosfile.c:
1050:
1051: Allow for global file handles, so that shared libraries
1052:
1053: can use file handles that are the same for all processes.
1054:
1055: dosmem.c:
1056:
1057: In Mxalloc, ignore bits that we don't understand, to
1058:
1059: allow for future expansion.
1060:
1061: syscall.s:
1062:
1063: Fix a bug that could cause the wrong system call to be
1064:
1065: made if BIOS buffering is on (!).
1066:
1067: bios.c:
1068:
1069: Streamline the BIOS buffering mechanism, and make it
1070:
1071: more conservative about multiple processes doing Bconout
1072:
1073: output.
1074:
1075: procfs.c:
1076:
1077: Allow "foo.-1" to stand for the current process, and
1078:
1079: "foo.-2" to stand for our parent. Also, add new
1080:
1081: Fcntls for getting/setting memory flags.
1082:
1083: bios.c:
1084:
1085: In Setexc(), don't actually change any vectors, let the BIOS
1086:
1087: do it -- some TSR's install trap handlers that look for
1088:
1089: certain Setexc functions...
1090:
1091: signal.c:
1092:
1093: Allow nested Supexec() calls, or Supexec()'s from a terminate
1094:
1095: vector.
1096:
1097: procfs.c:
1098:
1099: Change the definition of PPROCADDR and add a new Fcntl,
1100:
1101: PCTXTSIZE.
1102:
1103: mem.c:
1104:
1105: In exec_region, set the stack based on the value of p_hitpa
1106:
1107: from the basepage, instead of the size of the memory
1108:
1109: region -- some programs rely on being able to set the initial
1110:
1111: stack pointer for a Pexec(4,...) this way.
1112:
1113: main.c, context.s:
1114:
1115: Avoid using 68020 instructions if we're on a 68010.
1116:
1117:
1118:
1119: PATCHLEVEL2::
1120:
1121:
1122:
1123: dos.c,proc.c:
1124:
1125: More tweaking of the priority code.
1126:
1127: main.c:
1128:
1129: Change the type of "tosbp" from char ** to BASEPAGE **,
1130:
1131: since that's what it really is.
1132:
1133: main.c:
1134:
1135: Add a special case for the Spanish TOS 1.0 act_pd variable.
1136:
1137: pipefs.c:
1138:
1139: When a writer is waiting to write a small amount of data
1140:
1141: atomically, remember to wake up readers so that they
1142:
1143: can clear the pipe!
1144:
1145: debug.c:
1146:
1147: Add the %u flag to ksprintf() (Fselect uses it, maybe others
1148:
1149: do too...)
1150:
1151: dosmem.c:
1152:
1153: In Pterm(), put the exit code onto the stack when calling
1154:
1155: etv_term. It won't be in the same place as it was for TOS,
1156:
1157: but c'est la vie. (People asked for this feature...)
1158:
1159: xbios.c:
1160:
1161: Provide a way to pass arguments to Supexec(). Note that Atari
1162:
1163: never documented that this was possible, but some people were
1164:
1165: relying on it anyway :-(. (Don't use this feature, it's only
1166:
1167: there as a compatibility hack.)
1168:
1169: main.c:
1170:
1171: In shutdown(), don't bother waiting a second for processes
1172:
1173: to finish if there are no other processes.
1174:
1175: filesys.c:
1176:
1177: Make sure that path names are null terminated after strncpy.
1178:
1179: mem.c:
1180:
1181: Fix the code to zero process registers so that it *only* zeros
1182:
1183: process registers.
1184:
1185: dosmem.c:
1186:
1187: Eliminate some redundant code.
1188:
1189: dosfile.c:
1190:
1191: Open u:\pipe\sys$pipe.xxx rather than q:\sys$pipe.xxx.
1192:
1193: main.c:
1194:
1195: Change a "malloc" into "kmalloc", and restore the #include
1196:
1197: of <minimal.h> that was inadvertently deleted.
1198:
1199: main.c:
1200:
1201: Allow parameters to be passed to the initial program specified
1202:
1203: by the INIT= string.
1204:
1205:
1206:
1207: PATCHLEVEL1::
1208:
1209:
1210:
1211: main.c:
1212:
1213: Fix a typo in shutdown() that was causing problems when
1214:
1215: MiNT was shut down while processes were active.
1216:
1217: tosfs.c:
1218:
1219: Make sure that tfullpath() returns a string less than
1220:
1221: PATH_MAX characters long.
1222:
1223: everywhere:
1224:
1225: Replace "sprintf" with "ksprintf".
1226:
1227: debug.c:
1228:
1229: Add a "ksprintf" function that's like sprintf(), but
1230:
1231: (a) doesn't have so many features (making it smaller),
1232:
1233: and more importantly (b) won't try to write more than
1234:
1235: SPRINTF_MAX characters into a buffer.
1236:
1237: filesys.c:
1238:
1239: In path2cookie, make sure we don't try to copy more than
1240:
1241: PATH_MAX characters into the fixed size buffers.
1242:
1243: dosmem.c:
1244:
1245: The "sleep if no memory available during Malloc" code
1246:
1247: was causing more problems than it solved, so it was
1248:
1249: removed. To compensate, we increase the priority of
1250:
1251: newly Pexec'd processes to make sure that they get
1252:
1253: to run.
1254:
1255: dosmem.c:
1256:
1257: Aaaargh! A very serious screw-up in terminate() was
1258:
1259: causing us to wake up processes sleeping in vfork()
1260:
1261: even when their children were still using the address
1262:
1263: space; needless to say, horrible (and mysterious)
1264:
1265: crashes could ensue. Fix: only force the parent awake
1266:
1267: if wait_q == WAIT_Q && wait_cond matches the terminating
1268:
1269: process, otherwise let post_sig() handle waking.
1270:
1271: While fixing this bug, re-arrange the terminate code
1272:
1273: to do the waking up at the very end, just in case some
1274:
1275: of the other code may cause a sleep() temporarily.
1276:
1277: bios.c:
1278:
1279: Fix the scan code for the UNDO key.
1280:
1281: fasttext.c:
1282:
1283: Use Setscreen() to set the hardware screen base, since setting
1284:
1285: the variable at 0x45e causes TOS to keep setting the screen base
1286:
1287: ad infinitum.
1288:
1289:
1290:
1291: PATCHLEVEL0::
1292:
1293:
1294:
1295: rendez.c:
1296:
1297: When waking a process up from a semaphore, check to see
1298:
1299: if it's on the WAIT_Q before trying to remove it from
1300:
1301: that queue (it might have been moved off the wait queue
1302:
1303: by a signal).
1304:
1305: bios.c:
1306:
1307: Make sure that Bconout(2,c) always succeeds, to compensate
1308:
1309: for text accelerators and other programs that don't return
1310:
1311: sensible values from Bconout. Also, ignore the Bconout
1312:
1313: return value when flushing the text output buffer.
1314:
1315:
1316:
1317: version 0.92
1318:
1319:
1320:
1321: PATCHLEVEL4::
1322:
1323:
1324:
1325: biosfs.c:
1326:
1327: Provide devices for the extra Mega STe serial ports.
1328:
1329: biosfs.c:
1330:
1331: Make the kernel info structure available to device drivers
1332:
1333: loaded with Dcntl.
1334:
1335: xbios.c:
1336:
1337: Provide a modified Midiws function so that this is also
1338:
1339: affected by Fmidipipe and Fforce.
1340:
1341: biosfs.c:
1342:
1343: Split bios_device into two device drivers; one for
1344:
1345: terminal devices, and one for plain character devices
1346:
1347: (the printer and IKBD port fall into this category).
1348:
1349: Also: provide a new Dcntl call to install plain BIOS
1350:
1351: devices in U:\DEV.
1352:
1353: tty.c:
1354:
1355: Check for terminal start/stop keys while reading.
1356:
1357: bios.c:
1358:
1359: In checkkeys, loop through all keys received since our last
1360:
1361: interrupt, rather than just checking the last thing in the
1362:
1363: buffer (as A. Pratt suggested).
1364:
1365: bios.c, tty.c:
1366:
1367: Made the "disable" character for special terminal functions
1368:
1369: (e.g. the EOF key) be 0 instead of -1; this matches System V,
1370:
1371: is more POSIX friendly, and also makes confusing function keys
1372:
1373: and ^@ less likely. (Thanks to Scott Willingham for this
1374:
1375: suggestion.)
1376:
1377: file.h, elsewhere as needed:
1378:
1379: Renamed the O_BIOS flag O_TTY (since that's what it really
1380:
1381: represents) and renamed the is_bios macro is_terminal.
1382:
1383: dosmem.c:
1384:
1385: Make Pexec mode 106 cause the child to be truly independent
1386:
1387: of the parent (i.e. it doesn't get the parent's address space,
1388:
1389: nor does the parent get the child's).
1390:
1391: biosfs.c:
1392:
1393: Allow symbolic links from U:\DEV; this lets us do things like
1394:
1395: Fsymlink("U:\PIPE\SERVERFIFO", "U:\DEV\SERVERDEV").
1396:
1397: main.c:
1398:
1399: When PRN=d:\foo is specified, create the file foo instead of
1400:
1401: just trying to open it; this makes no difference to devices,
1402:
1403: but makes redirecting printer output to a file much more
1404:
1405: convenient.
1406:
1407: unifs.c:
1408:
1409: Fix a bug that was causing Dgetpath() to return incorrect
1410:
1411: information for U:\A.
1412:
1413: timeout.c:
1414:
1415: Make sure "searchtime" is up-to-date; bconout uses this for
1416:
1417: the time out.
1418:
1419: biosfs.c:
1420:
1421: Fix bios_write so that if bconout fails, so does the write.
1422:
1423: bios.c:
1424:
1425: Fix bconout so that it doesn't hang forever if the device isn't
1426:
1427: going to be ready (e.g. the printer is off); instead, there's
1428:
1429: a 10 second timeout.
1430:
1431: main.c:
1432:
1433: Send all processes SIGTERM when we're shutting down, so that
1434:
1435: they have a chance to clean up after themselves.
1436:
1437: mint.h:
1438:
1439: The KBDVEC structure was missing the "clockvec" element (!).
1440:
1441:
1442:
1443: PATCHLEVEL3::
1444:
1445:
1446:
1447: biosfs.c:
1448:
1449: Revised to allow support for loading/removing device drivers
1450:
1451: dynamically, via a Dcntl() call.
1452:
1453: dosmem.c,mem.c,dosfile.c,file.h:
1454:
1455: Added support for setuid/setgid. These bits are only checked
1456:
1457: in Pexec modes 0, 100, and 200, i.e. the "load and go" modes.
1458:
1459: rendez.c:
1460:
1461: Added new semaphore code from Allan Pratt.
1462:
1463: main.c:
1464:
1465: New command for mint.cnf: "exec foo.prg bar" runs the program
1466:
1467: "foo" with argument(s) "bar".
1468:
1469: main.c:
1470:
1471: Use the XBRA protocol for all interrupt routines that we grab.
1472:
1473: filesys.c:
1474:
1475: When terminating MiNT, close all open files to make sure data
1476:
1477: is flushed and devices are nicely shut down.
1478:
1479: main.c:
1480:
1481: Add some more variables, such as CON and PRN for redirecting
1482:
1483: those handles, and HARDSCROLL for controlling the fast text
1484:
1485: output.
1486:
1487: proc.c:
1488:
1489: Make sure the "links" field for the prn and aux handles is
1490:
1491: correct.
1492:
1493: syscall.s, bios.c:
1494:
1495: Special case the BIOS Bconout code to try to speed it up
1496:
1497: a bit. We allow for buffering of Bconout output; the buffer
1498:
1499: is flushed on the next non-Bconout system call or context
1500:
1501: switch. This should usually work OK, but as a precaution
1502:
1503: we provide for a way to turn it off (BIOSBUF=NO in mint.cnf).
1504:
1505: fasttext.c.fasttext.h:
1506:
1507: New files for a faster text output device; changes were
1508:
1509: made to biosfs.c to support this, too.
1510:
1511: tty.c:
1512:
1513: Streamline writes to terminals by sending data to the
1514:
1515: tty device in chunks instead of 1 character at a time.
1516:
1517: dosfile.c:
1518:
1519: In do_open, always return EFILNF, never EPTHNF.
1520:
1521: dosmem.c:
1522:
1523: Use supexec() to execute the terminate vector code, to
1524:
1525: avoid duplication of signal 0 faking.
1526:
1527: xbios.c:
1528:
1529: In Supexec() does leave the kernel, so we have to make
1530:
1531: appropriate adjustments. We do this by faking a signal
1532:
1533: (signal 0) and installing the user's function as a signal
1534:
1535: handler.
1536:
1537: dosdir.c:
1538:
1539: Make Dfree(x) actually look at free space on the drive which
1540:
1541: corresponds to the current directory on <x>; this should make
1542:
1543: Dfree on drive U: much more useful.
1544:
1545: proc.h:
1546:
1547: Make the "base" field of the PROC structure have type BASEPAGE *
1548:
1549: (since that's what it is!)
1550:
1551: basepage.h, dosdir.c, dosmem.c:
1552:
1553: Support some undocumented fields in the basepage a little bit
1554:
1555: (i.e. they're read only). Programs that try to write to these
1556:
1557: fields break. Surprise, surprise.
1558:
1559:
1560:
1561: PATCHLEVEL2::
1562:
1563:
1564:
1565: dosmem.c, mem.c:
1566:
1567: The docs say that children started with Pexec(104,...) or
1568:
1569: Pexec(106,...) share the parent's memory. This was unfortunately
1570:
1571: not the case; if the parent exited and the child was running
1572:
1573: in the parent's address space (e.g. see tfork() in mntlib)
1574:
1575: the child died very soon thereafter (like when the next program
1576:
1577: comes along and clears the memory the child was running out of).
1578:
1579: This is now fixed.
1580:
1581: dos.c, proc.c, timeout.c:
1582:
1583: More tuning of the process scheduler.
1584:
1585: main.c:
1586:
1587: Added "setenv" function for mint.cnf.
1588:
1589:
1590:
1591: PATCHLEVEL1::
1592:
1593:
1594:
1595: filesys.c:
1596:
1597: In some circumstances, AHDI will keep telling us that a drive
1598:
1599: has changed, ad infinitum. To avoid this, we stop trying after
1600:
1601: 8 media changes occur in a row.
1602:
1603: util.c:
1604:
1605: Tuned the kmalloc() strategy to reduce memory fragmentation
1606:
1607: (every process will be allocating 264 bytes for its
1608:
1609: memory region maps right after creation, and this should
1610:
1611: come from kernel memory).
1612:
1613: tty.c:
1614:
1615: Under TOS, 1 byte writes should always be in raw mode.
1616:
1617: dos.c:
1618:
1619: In Syield(), we should call sleep() even if no other processes
1620:
1621: are waiting, just to make sure that signals, alarms, etc.
1622:
1623: are properly dealt with.
1624:
1625: filesys.c, dosfile.c:
1626:
1627: The media change code was wedged (actually, the fault was in
1628:
1629: do_pclose, which sometimes neglected to check to see whether
1630:
1631: or not the file had a still-valid device driver).
1632:
1633: dosmem.c:
1634:
1635: In the termination code, close "files" referring to a process
1636:
1637: *before* freeing all the process memory; that way, we don't
1638:
1639: have to worry in do_pclose() and other places about what
1640:
1641: kind of state the process is in.
1642:
1643: mem.h:
1644:
1645: Round off memory regions only to a word boundary for better
1646:
1647: TOS compatibility.
1648:
1649:
1650:
1651: PATCHLEVEL0::
1652:
1653: dos.c,intr.s,syscall.s:
1654:
1655: Changed s_yield() to actually give up the processor if
1656:
1657: another process is waiting for it; this means that processes
1658:
1659: that call Syield() won't be penalized by the priority code.
1660:
1661: Also: added a new kernel function, preempt(), which does
1662:
1663: what the old s_yield() did (and hence penalizes CPU hogs).
1664:
1665: makefile:
1666:
1667: Cleaned up a bit, per suggestions from A. Pratt and D. Gymer.
1668:
1669:
1670:
1671:
1672:
1673: version 0.91
1674:
1675:
1676:
1677: dosmem.c:
1678:
1679: Only the high 4 bits of the program load flags give memory
1680:
1681: requirements (we were using 8 bits).
1682:
1683: dosdir.c:
1684:
1685: Add a hack so that ksh still works (it was using '/' in a
1686:
1687: path name). THIS HACK WILL GO AWAY SOMEDAY!
1688:
1689: tty.c:
1690:
1691: CBREAK mode shouldn't do erase, kill, or EOF processing.
1692:
1693: dosdir.c:
1694:
1695: Freadlink should check first to make sure the file really
1696:
1697: is a link!
1698:
1699: file.h,tty.c:
1700:
1701: Change the name "struct winsiz" to "struct winsize" to match
1702:
1703: what Unix calls it (cosmetic change only).
1704:
1705: unifs.c:
1706:
1707: Allow renaming of the drives, and allow rmdir() to work
1708:
1709: like unlink() for symbolic links (since we fake the return
1710:
1711: value from Fsfirst to look like a directory if the link
1712:
1713: points to a directory).
1714:
1715: biosfs.c:
1716:
1717: lseek() on the null device should not return 0 always;
1718:
1719: otherwise, it will look like a terminal to many programs!
1720:
1721: dosfile.c:
1722:
1723: If a MiNT domain process closes stdin or stdout, they
1724:
1725: really do want them closed (for compatibility with
1726:
1727: MiNT 0.8).
1728:
1729: syscall.s:
1730:
1731: When returning from traps, don't pre-empt the current process
1732:
1733: if it's in supervisor mode.
1734:
1735: mem.c:
1736:
1737: Fake some stuff in the basepage so that programs compiled
1738:
1739: with dLibs will work some of the time.
1740:
1741: tosfs.c:
1742:
1743: Make the value returned from Dgetpath() lower case in the MiNT
1744:
1745: domain. Also, make tosfs a little less verbose when debugging
1746:
1747: or tracing is on.
1748:
1749: dosmem.c:
1750:
1751: Try to allocate space for saved fork() memory in the alternate (TT)
1752:
1753: memory map first, as well as in core (ST) memory.
1754:
1755: mem.h:
1756:
1757: Round allocation requests up to multiples of 8 bytes instead
1758:
1759: of 4; this automatically gives us a bit of slush for ill
1760:
1761: behaved programs, and also means that requests will always
1762:
1763: be for a multiple of sizeof(double) bytes.
1764:
1765: util.c:
1766:
1767: Get rid of the extra slush around kmalloc'd regions (which
1768:
1769: was a lot bigger than originally intended anyway!)
1770:
1771:
1772:
1773:
1774:
1775: version 0.9
1776:
1777:
1778:
1779: PATCHLEVEL21:: released version
1780:
1781:
1782:
1783: dosmem.c:
1784:
1785: Make Malloc and Mxalloc try again if there isn't enough memory;
1786:
1787: maybe the situation is temporary.
1788:
1789: mem.c:
1790:
1791: Plug a memory leak in load_region(); also make load_region try again
1792:
1793: if there isn't enough memory to load the program (just in case the
1794:
1795: situation is temporary).
1796:
1797: dosdir.c:
1798:
1799: Add a check to Fattrib to make sure that attributes of directories
1800:
1801: are never changed.
1802:
1803:
1804:
1805: PATCHLEVEL20::
1806:
1807:
1808:
1809: dosdir.c:
1810:
1811: Allow Frenames of processes and other special kinds of files even
1812:
1813: if they do have the FA_RDONLY bit set.
1814:
1815: dosfile.c:
1816:
1817: Allow creation of files with the read-only attribute.
1818:
1819: tosfs.c:
1820:
1821: Change the file deletion code so that an attempt to delete an
1822:
1823: open file no longer fails, but rather marks the file to be
1824:
1825: deleted when it is closed.
1826:
1827: file.h:
1828:
1829: Add some extra space to the tty struct, for future expansion.
1830:
1831: filesys.c,main.c:
1832:
1833: Make sure the fake BIOS disk routines are available before
1834:
1835: any of the pseudo-drives are used, by having them set up
1836:
1837: in init_filesys() instead of init_intr().
1838:
1839: tosfs.c:
1840:
1841: Remove some debugging output that isn't needed anymore.
1842:
1843:
1844:
1845: PATCHLEVEL19::
1846:
1847: Beta release.
1848:
1849:
1850:
1851: intr.s,main.c:
1852:
1853: provide some fake BIOS disk routines for the pseudo-drives,
1854:
1855: in hopes of avoiding "drive U: is not responding" types of
1856:
1857: messages that some have reported
1858:
1859: pipefs.c:
1860:
1861: half.ttp was failing under mgr, because of a race condition:
1862:
1863: our select() returns "ready" for a pipe if nobody exists to
1864:
1865: write to it (since then a read will return immediately). half
1866:
1867: would make a pipe that would end up being destroyed immediately
1868:
1869: by mgr before it got attached to a process. Solution: pipes that
1870:
1871: have *never* been opened yet for writing get a special marker
1872:
1873: and select doesn't worry about them, only about ones that were
1874:
1875: once written to.
1876:
1877: pipefs.c:
1878:
1879: Fixed FIONWRITE to return the correct value.
1880:
1881: dosdir.c:
1882:
1883: Refuse to Frename a file with the FA_RDONLY attribute.
1884:
1885: biosfs.c:
1886:
1887: Fixed bios_write to return the number of bytes successfully
1888:
1889: written.
1890:
1891: bios.c:
1892:
1893: LAST_DEVICE was inaccurate. This could happen again, so I'm simply
1894:
1895: getting rid of it and leaving all errors to the BIOS.
1896:
1897: pipefs.c:
1898:
1899: Make sure the FA_RDONLY attribute is sensible (i.e. unidirectional
1900:
1901: pipes that don't have a writer can still be written to).
1902:
1903: filesys.c:
1904:
1905: Fixed relpath2cookie so that it doesn't *always* follow symlinks
1906:
1907: (it only should when lastname == follow_links)
1908:
1909: dosfile.c:
1910:
1911: If the FA_RDONLY bit is set on the file, even the superuser should
1912:
1913: be denied access for writing.
1914:
1915: dosfile.c:
1916:
1917: Requiring write permission for Fdatime is a Bad Idea, since GEMDOS
1918:
1919: doesn't; so now MiNT doesn't either.
1920:
1921: tosfs.c, filesys.c:
1922:
1923: Fixed a bug with media changes (Fsfirst would sometimes try to close a
1924:
1925: directory that had already been automatically closed by a media change).
1926:
1927:
1928:
1929: PATCHLEVEL18::
1930:
1931:
1932:
1933: main.c:
1934:
1935: Fixed the machine type detection code; it needs to run before
1936:
1937: biosfs is initialized, i.e. before init_filesys().
1938:
1939: main.c:
1940:
1941: Provide a configuration file so that users can automatically
1942:
1943: setup symbolic links and can change their init program.
1944:
1945: biosfs.c:
1946:
1947: Allow rename on bios devices, so people who want terminals called
1948:
1949: "ttyX" instead of "modemX" can do so.
1950:
1951: dosdir.c:
1952:
1953: Flink shouldn't need write permission on the destination
1954:
1955: directory, only the source.
1956:
1957: dosfile.c:
1958:
1959: Added FSTAT function for Fcntl, to allow a better version of
1960:
1961: fstat() for the library.
1962:
1963: dosfile.c:
1964:
1965: Add code to fcntl to automatically convert MiNT 0.8 O_NDELAY
1966:
1967: into MiNT 0.9 O_NDELAY. This is a temporary measure only,
1968:
1969: to let older versions of mgr continue to work for a while.
1970:
1971: filesys.c:
1972:
1973: Symbolic links with relative paths were always failing with
1974:
1975: ELOOP. Oops! (Thanks to Stephen Henson for catching this.)
1976:
1977: file.h, tosfs.c, dosfile.c:
1978:
1979: Added a new flag, FS_NOXBIT, to control whether or not the
1980:
1981: file system has a sensible notion of execute permission.
1982:
1983: This removes an ugly check for &tos_filesys.
1984:
1985: mint.h,util.c,mem.c:
1986:
1987: Added a compile time option, JUNK_MEM, to deliberately fill
1988:
1989: the memory MiNT acquires with garbage; this is for debugging
1990:
1991: (to help track down silly failures to initialize memory) and
1992:
1993: not for production code.
1994:
1995: proc.c:
1996:
1997: Fixed a typo in init_proc() that was causing memory not to
1998:
1999: be initialized to 0 correctly. (Thanks are due to Stephen
2000:
2001: Usher for catching this one.)
2002:
2003: tosfs.c:
2004:
2005: Added a tos_rewinddir that works.
2006:
2007: file.h:
2008:
2009: Added blocks and blksize fields to the XATTR structure, and
2010:
2011: provided a few extra reserved fields for future expansion.
2012:
2013: (Also: re-arranged some fields to match what the gcc library
2014:
2015: already has.)
2016:
2017: file.h, main.c:
2018:
2019: Add sleep, wake, and wakeselect to the kernel info structure;
2020:
2021: some device drivers will need these.
2022:
2023: biosfs.c:
2024:
2025: Make nodskchng do a Getbpb on the (non-existent) device; the officially
2026:
2027: documented way of forcing a disk change requires this.
2028:
2029: file.h,filesys.c,*fs.c:
2030:
2031: Remove the "flag" argument from the dskchng function, and
2032:
2033: have the kernel check Rwabs for E_CHNG; this should save
2034:
2035: a lot of duplication in user file systems, since everyone
2036:
2037: really has to do this anyways.
2038:
2039: dosdir.c:
2040:
2041: Make sure that Fsfirst names can be null-terminated.
2042:
2043: filesys.c:
2044:
2045: Oops: a misplaced bracket in disk_changed was causing
2046:
2047: write-protected disks to always appear to have changed!
2048:
2049: tosfs.c:
2050:
2051: Made it illegal to delete or truncate an open file.
2052:
2053:
2054:
2055: PATCHLEVEL17::
2056:
2057:
2058:
2059: version.h:
2060:
2061: I think we can call this version an "alpha" one, now. No more
2062:
2063: major features remain to be added (fingers crossed, here).
2064:
2065: filesys.c,dosdir.c,*fs.c,file.h:
2066:
2067: Media change detection code; this is now the kernel's
2068:
2069: responsibility. This necessitated an additional function
2070:
2071: for file systems; I hope this is the last one.
2072:
2073: main.c,biosfs.c:
2074:
2075: Check what kind of machine we're on, and adjust what devices are
2076:
2077: present accordingly. The rs232 file has been renamed to "modem1".
2078:
2079: WARNING: This will break existing code that uses the name "rs232".
2080:
2081: filesys.c:
2082:
2083: Code for loading file systems (finally!)
2084:
2085: bios.c,context.s:
2086:
2087: Made Rwabs, Getbpb, and Mediach save registers (since device
2088:
2089: drivers often don't, and loadable file systems will be calling
2090:
2091: these directly).
2092:
2093: main.c:
2094:
2095: Implemented the "struct kerinfo" to pass information to loadable
2096:
2097: file systems.
2098:
2099: filesys.c:
2100:
2101: Re-wrote path2cookie to provide for symbolic links; a new routine
2102:
2103: (relpath2cookie) helps us out.
2104:
2105: unifs.c:
2106:
2107: Code for creating, reading, and deleting symbolic links.
2108:
2109: *fs.c, dosfile.c, file.h:
2110:
2111: Changed the way file opens and creates are done; the former
2112:
2113: (*getdev) routine for file systems has been split into
2114:
2115: (*creat) and (*getdev), both of which are quite a bit simpler.
2116:
2117: This whole scheme is clearer, less work for the file system,
2118:
2119: and will support symbolic links much better.
2120:
2121: various places:
2122:
2123: Add security checks. This is still pretty sad, but at least it
2124:
2125: can provide one with a modicum of protection against silly
2126:
2127: mistakes.
2128:
2129: dosfile.c:
2130:
2131: Require write permission on a file before changing its date via
2132:
2133: Fdatime.
2134:
2135: tosfs.c:
2136:
2137: Cleaned up and streamlined a bit, and fixed tos_readlabel.
2138:
2139: *fs.c,dosdir.c,file.h:
2140:
2141: Changed the file system "getxattr", "chmode", "chown", and
2142:
2143: "chattr" functions to take a single file cookie instead of a
2144:
2145: (directory, name) pair. This should make most uses of these
2146:
2147: functions (e.g. in name lookups) more efficient. Also,
2148:
2149: changed the readdir() function to return a file cookie to go
2150:
2151: along with the newly read file name.
2152:
2153: main.c:
2154:
2155: If "init.prg" isn't found, try starting GEM instead.
2156:
2157: unifs.c:
2158:
2159: Re-arranged to allow for symbolic links.
2160:
2161: filesys.c:
2162:
2163: Implemented some media change routines.
2164:
2165: dosdir.c:
2166:
2167: Added Fchown and Fchmod system calls.
2168:
2169: dosdir.c:
2170:
2171: Added security check for Fattrib().
2172:
2173:
2174:
2175: PATCHLEVEL16::
2176:
2177:
2178:
2179: lots of places:
2180:
2181: Try to make TRACE() and DEBUG() messages more useful for people
2182:
2183: who don't know the internals of the kernel, and who just want to
2184:
2185: debug their own programs.
2186:
2187: dosdir.c:
2188:
2189: Added Flink, Fsymlink, Freadlink, and Dcntl system calls.
2190:
2191: *fs.c,file.h:
2192:
2193: Added a new mode to Dpathconf() to determine whether the
2194:
2195: file system uses DOS type file naming conventions, ordinary
2196:
2197: Unix type, or _POSIX_NO_TRUNC type.
2198:
2199: file.h:
2200:
2201: Add an "fscntl" field to the file system structure.
2202:
2203: tosfs.c:
2204:
2205: Fix the mode values returned from getxattr() (regular files
2206:
2207: have type S_IFREG, not S_IFMT).
2208:
2209: proc.c:
2210:
2211: Zero the child's srchdta field after fork_proc(); otherwise,
2212:
2213: the accounting for Fsfirst/Fsnext can get messed up. Thanks
2214:
2215: again to S. Henson.
2216:
2217: mem.c:
2218:
2219: As Steve Henson pointed out, resetting the effective user and
2220:
2221: group id's in exec_region is probably a Bad Idea.
2222:
2223: dosdir.c:
2224:
2225: Change Dopendir/Dclosedir to use umalloc and ufree instead of
2226:
2227: kmalloc and kfree.
2228:
2229:
2230:
2231: PATCHLEVEL15::
2232:
2233:
2234:
2235: dosdir.c:
2236:
2237: When terminating, clean up after any Fsfirst/Fsnext sequences that
2238:
2239: didn't go to completion.
2240:
2241: tosfs.c:
2242:
2243: Streamlined garbage collection code, and also corrected a bug in
2244:
2245: which file indices used in directory searches could be garbage
2246:
2247: collected.
2248:
2249: file.h, *fs.c:
2250:
2251: Add symlink and hard link functions.
2252:
2253: pipefs.c:
2254:
2255: Make FIONWRITE work again (a line was accidentally deleted).
2256:
2257: Make sure that Fselect() will select any pipes that have been
2258:
2259: closed.
2260:
2261: dossig.c:
2262:
2263: Put back the user id check in Pkill.
2264:
2265: dos.c, proc.c:
2266:
2267: Make sure that the "euid" and "egid" fields are set with
2268:
2269: the Psetuid and Psetgid calls. Also, make sure the fields
2270:
2271: are reset after an exec.
2272:
2273: mem.c:
2274:
2275: Make exec_region shrink the process 'mem' and 'addr' tables
2276:
2277: to the default again if extra regions had been allocated.
2278:
2279: dosmem.c:
2280:
2281: Get rid of the magic number "100", and introduce a maximum user
2282:
2283: settable priority MAX_NICE so that the kernel can make sure
2284:
2285: that a process that needs to run (e.g. an aborted vfork) will
2286:
2287: run first by setting its priority to MAX_NICE+1.
2288:
2289: proc.c:
2290:
2291: Make sure the initial process memory tables are zeroed.
2292:
2293: proc.c:
2294:
2295: Adjust the process scheduling algorithm (yet again!). Also,
2296:
2297: rename "nice_count" to "curpri".
2298:
2299: dosdir.c,dos.c:
2300:
2301: Added Dopendir, Dreaddir, Drewinddir, Dclosedir system calls.
2302:
2303: *fs.c:
2304:
2305: Made readdir return a file index (inode number) if it's not
2306:
2307: doing a TOS mode search.
2308:
2309: biosfs.c:
2310:
2311: PHYSCONS is such an ugly name; CONSOLE makes more sense.
2312:
2313:
2314:
2315: PATCHLEVEL14::
2316:
2317:
2318:
2319: mem.c:
2320:
2321: Allow the kernel to dynamically allocate memory region
2322:
2323: descriptors if it runs out; also, increase the number that
2324:
2325: it starts with by default.
2326:
2327: util.c:
2328:
2329: Made it harmless to call kfree with a NULL argument.
2330:
2331: proc.h,mem.c,dosmem.c,proc.c:
2332:
2333: Eliminate the 64 region per process limit, by making the "mem"
2334:
2335: and "addr" arrays dynamically allocated.
2336:
2337: proc.c:
2338:
2339: Change the code for selecting which process to run next; if more
2340:
2341: than one process is on the ready queue, we use a per-process
2342:
2343: counter to prevent high priority processes from hogging all the
2344:
2345: time.
2346:
2347: dosmem.c:
2348:
2349: Release a process' controlling terminal (by setting it's process
2350:
2351: group back to 0) if the process is a process group leader and
2352:
2353: is exiting.
2354:
2355: dosfile.c,tty.c,*fs.c:
2356:
2357: Made do_open set terminals up correctly on open/close, and
2358:
2359: handle assigning process groups to them. Also, made the terminal's
2360:
2361: process group be set automatically on Fforce(-1,...).
2362:
2363: main.c,timeout.c:
2364:
2365: Added AKP's code for better resolution of time usage.
2366:
2367: DELETED FILES:
2368:
2369: xlate.c, xlate32.s, newdisk.s
2370:
2371: everywhere:
2372:
2373: Removed all references to NEED_TRANSLATION. This is getting to be a
2374:
2375: pain to maintain, and nobody seems to actually use it.
2376:
2377: *fs.c:
2378:
2379: Fixed the ENAMETOOLONG detection code in readdir (thanks, Steve!).
2380:
2381: timeout.c:
2382:
2383: New function, nap, for processes that are in busy loops waiting for
2384:
2385: an event that probably won't happen for a while (e.g. waiting for
2386:
2387: the user to hit a key); use e.g. nap(60) to sleep for 60 milliseconds
2388:
2389: instead of yield().
2390:
2391: mem.c:
2392:
2393: create_env() should use the value from the current process' basepage,
2394:
2395: since this may *not* be the same as the environment the process
2396:
2397: was actually started with
2398:
2399: dosfile.c:
2400:
2401: Make Fcntl(fh, arg, F_SETFL) leave the file sharing mode alone as well
2402:
2403: as the read/write mode.
2404:
2405: unifs.c:
2406:
2407: Change the name "fifo" to "pipe"; change "drva", "drvb" etc. into just
2408:
2409: "a", "b" etc.
2410:
2411: dosmem.c:
2412:
2413: Make it possible to provide a name with Pexec mode 104. Provide a new
2414:
2415: mode 106 that starts a process in the background and automatically
2416:
2417: detaches the process TPA from the parent's memory.
2418:
2419:
2420:
2421: PATCHLEVEL13::
2422:
2423:
2424:
2425: biosfs.c:
2426:
2427: Made sure that tty_getchar() won't see (long) negative values
2428:
2429: returned from a successful read, by clearing the high bit
2430:
2431: of read values.
2432:
2433: *fs.c,atarierr.h:
2434:
2435: Made file systems responsible for dealing with "." and "..";
2436:
2437: introduced a new (fake) EMOUNT error to indicate when ".." is
2438:
2439: found in a root directory (this is for the benefit of the
2440:
2441: unified file system code)
2442:
2443: dosdir.c,filesys.c:
2444:
2445: Changes to allow for the unified file system.
2446:
2447: unifs.c, makefile:
2448:
2449: New file, for a "unified" file system.
2450:
2451: filesys.c, *fs.c:
2452:
2453: Renamed denyaccess() to denyshare().
2454:
2455: dosdir.c:
2456:
2457: Changed getname() to work from the root down instead of from
2458:
2459: the directory up; this should work better for mounting and
2460:
2461: symbolic links.
2462:
2463: dosdir.c:
2464:
2465: Moved the check for a drive specifier (A:\FOO) in Dsetpath to
2466:
2467: where it should have been, namely before any use of the drive.
2468:
2469: biosfs.c,pipefs.c:
2470:
2471: In opendir, make sure the directory structure is properly
2472:
2473: initialized.
2474:
2475: dos.c:
2476:
2477: Changed snice and srenice to pnice and prenice; also modified the
2478:
2479: return values to be 16 bit (for the normal case), and 32 bit
2480:
2481: negative for errors, so that low priority processes can be
2482:
2483: distinguished from errors.
2484:
2485: debug*.c:
2486:
2487: The Bconstat() check for the printer should be applied to device
2488:
2489: 0, not 1.
2490:
2491:
2492:
2493: PATCHLEVEL12::
2494:
2495:
2496:
2497: dosdir.c,filesys.c:
2498:
2499: Re-wrote Fsfirst/next to use opendir/readdir/closedir. Re-wrote
2500:
2501: the pat_match function to work correctly (at least, according
2502:
2503: to the TOS rules :-).
2504:
2505: *fs.c, file.h:
2506:
2507: Added opendir/readdir/closedir calls to file systems to allow
2508:
2509: more general file systems; also changed getattr into getxattr
2510:
2511: (again, to allow file systems with extra goodies), setattr into
2512:
2513: chattr, and added chown and chmod calls. Deleted sfirst/snext
2514:
2515: file system entry points, and the Xsfirst/Xsnext system calls.
2516:
2517: *fs.c,file.h,dosfile.c,dosdir.c:
2518:
2519: Changed file systems to have separate calls for reading/writing
2520:
2521: volume labels. Added checks to Fattrib and Fcreate to avoid creating
2522:
2523: files with bad attributes (e.g. FA_LABEL or FA_DIR and anything
2524:
2525: else).
2526:
2527: main.c:
2528:
2529: Change the definition of tosvers so that TOS 1.0 corresponds
2530:
2531: to tosvers == 0x100, not tosvers == 0. Also, clean up the
2532:
2533: code for testing TOS versions.
2534:
2535: WARNING: This may break RAM TOS versions. I doubt it matters.
2536:
2537: bios.c,main.c:
2538:
2539: Always set the kbshft variable, so that kbshift is more
2540:
2541: efficient.
2542:
2543: dos.c:
2544:
2545: Eliminated the old code that allowed Super(-1L) to work (GEMDOS
2546:
2547: doesn't support this, so why should MiNT?)
2548:
2549: dos.c:
2550:
2551: Added GEMDOS date and time routines, and made sure that
2552:
2553: datestamp and timestamp are initialized properly when
2554:
2555: MiNT is started.
2556:
2557: mem.c:
2558:
2559: Increased the size of the buffer used for reading relocation
2560:
2561: information in load_region.
2562:
2563: *fs.c, dosfile.c:
2564:
2565: Changed the filesystem getdev call to return a file cookie
2566:
2567: (this saves a call to lookup on every open).
2568:
2569: *fs.c, filesys.c:
2570:
2571: Eliminated static variables, changed all routines that used to
2572:
2573: return pointers to cookies to take an extra argument (a pointer
2574:
2575: to the place to put the result).
2576:
2577: tosfs.c:
2578:
2579: Turn O_COMPAT sharing mode into O_DENYNONE (after making other
2580:
2581: appropriate changes to the access modes).
2582:
2583: debugold.c:
2584:
2585: Updated to reflect changes in debug.c.
2586:
2587: debug.c:
2588:
2589: Added calls to va_end where appropriate.
2590:
2591: debug.c:
2592:
2593: Before, hitting a key paused debugging output; now, debug_ws
2594:
2595: checks the device that output is going to, so that e.g. if it's
2596:
2597: going to the MIDI port, the output is paused when a character
2598:
2599: arrives on the MIDI port.
2600:
2601: mem.c:
2602:
2603: Made exec_region use O_DENYNONE sharing mode instead of O_DENYW
2604:
2605:
2606:
2607: PATCHLEVEL11::
2608:
2609:
2610:
2611: dosfile.c:
2612:
2613: Forbid closing file handles < 0; this will prevent accidental
2614:
2615: destruction of the BIOS handles.
2616:
2617: dosfile.c:
2618:
2619: Change Fbiosdev to be MIDI specific, rename it to Fmidipipe, and
2620:
2621: move it to dosfile.c. The semantics are a bit different, too;
2622:
2623: see the comments in dosfile.c.
2624:
2625: bios.c:
2626:
2627: Really fix the MIDI output routines, this time. (sigh)
2628:
2629:
2630:
2631: PATCHLEVEL10::
2632:
2633:
2634:
2635: signal.c:
2636:
2637: Fixed a typo in the message printed when bombs occur. Also,
2638:
2639: removed the copying of data from the supervisor stack to the
2640:
2641: BIOS area -- this was causing very strange problems, and it's
2642:
2643: not clear that the info would be useful under MiNT anyway.
2644:
2645: Finally, all this is only supposed to happen for certain
2646:
2647: signals, not for any random killings.
2648:
2649:
2650:
2651: PATCHLEVEL9::
2652:
2653:
2654:
2655: file.h, *fs.c:
2656:
2657: Changed the definition of the DTA buffer to free up space for
2658:
2659: user/group id fields and an extended attributes field. Made
2660:
2661: sfirst/snext use the 'aux' field of the directory cookie
2662:
2663: as an index.
2664:
2665: dos.c:
2666:
2667: Fixed Talarm() to return the number of seconds left before an
2668:
2669: alarm, not the number of milliseconds.
2670:
2671: dosdir.c:
2672:
2673: New system calls, Xsfirst/Xsnext, for accessing file systems
2674:
2675: with long (>12 character) names.
2676:
2677: signal.c:
2678:
2679: Fill in the BIOS post-mortem dump error correctly after
2680:
2681: bus errors, address errors, etc. Also, made the "bomb" replacement
2682:
2683: routine give the process basepage address and program counter,
2684:
2685: as suggested by AKP.
2686:
2687: tosfs.c:
2688:
2689: Fixed the tos_lookup bug that was causing bus errors during file
2690:
2691: opens.
2692:
2693:
2694:
2695: PATCHLEVEL8::
2696:
2697:
2698:
2699: tosfs.c:
2700:
2701: Made opens with O_COMPAT sharing mode always open for both reading
2702:
2703: and writing; this is so broken TOS programs that write to read-only
2704:
2705: handles will continue to work.
2706:
2707: file.h, tty.c:
2708:
2709: Added TIOCGWINSZ/TIOCSWINSZ and the appropriate window size
2710:
2711: fields to the tty structure to support them.
2712:
2713: dossig.c:
2714:
2715: Remove user id checks (for now). Make it impossible to catch
2716:
2717: SIGSTOP.
2718:
2719: bios.c:
2720:
2721: Fix so Bconout returns a value (it really should, at least for
2722:
2723: the printer).
2724:
2725: mem.c:
2726:
2727: Don't context switch and retry alloc_region; file systems and some
2728:
2729: parts of the kernel aren't expecting the context switch, and besides
2730:
2731: the previous change makes this tactic less likely to be helpful.
2732:
2733: mem.c:
2734:
2735: Don't allocate *all* of the memory to the basepage, leave some for
2736:
2737: the kernel and other programs.
2738:
2739: pipefs.c:
2740:
2741: Add a check for broken pipes when a program is trying to write
2742:
2743: atomically.
2744:
2745: dosmem.c:
2746:
2747: Block job control signals during a vfork instead of ignoring
2748:
2749: them; this will result in the "right" thing happening after
2750:
2751: the exec (since the blocked signals will then be unblocked).
2752:
2753: tosfs.c:
2754:
2755: Eeek! Fixed a very serious bug in the garbage collection
2756:
2757: routines ("i" was used where "j" should have been in a loop:
2758:
2759: result: things could be garbage collected that shouldn't
2760:
2761: have been!)
2762:
2763: procfs.c:
2764:
2765: changed the return value from "dfree" to more accurately indicate
2766:
2767: the free memory in the system, and to also provide information
2768:
2769: about the smallest unit of allocable memory (currently a longword)
2770:
2771: *fs.c,dosfile.c,dosdir.c,filesys.c:
2772:
2773: instead of passing fcookies to file systems, pass pointers to
2774:
2775: them; this should slightly improve efficiency, and greatly
2776:
2777: improve portability (otherwise, compilers used to make
2778:
2779: installable file systems would have to have the same structure
2780:
2781: passing/return conventions as the one that compiled the kernel)
2782:
2783: dos.c:
2784:
2785: new system call, Srenice(), to change priority of a different
2786:
2787: process
2788:
2789: dos.c:
2790:
2791: change Fbiosdev() system call to take a pid argument
2792:
2793: proc.h, dosfile.c:
2794:
2795: add per-file descriptor flags for things like "close on exec"
2796:
2797: file.h, mem.c, *fs.c:
2798:
2799: new file open mode, O_EXEC, for the kernel to use in Pexec
2800:
2801: rendez.c, dos.c:
2802:
2803: new file from AKP to implement a simple and fast message based
2804:
2805: IPC; the new system call is Pmsg. Also note that the syscall number
2806:
2807: of Pmsg is 0x125, which used to be used by Fbiosdev; Fbiosdev has
2808:
2809: been moved to 0x126.
2810:
2811: filesys.c:
2812:
2813: applied Steve Henson's patches to improve path2cookie's handling of
2814:
2815: repeated slashes
2816:
2817: proc.h:
2818:
2819: MAX_OPEN should be 32, not 20!
2820:
2821: mem.c:
2822:
2823: Ignore "close on exec" flag for the standard handles (for some
2824:
2825: reason, bash manages to set these for 0,1,2; this is probably a bug
2826:
2827: in the port of bash, but on the other hand it's unlikely that
2828:
2829: anyone would really want to close the standard handles when doing
2830:
2831: an exec, anyway)
2832:
2833: tty.c:
2834:
2835: Fixed RAW mode reads on terminals so that they're no longer
2836:
2837: terminated by '\r' or '\n' (and so that pty slaves aren't forced
2838:
2839: to read just 1 character at a time). Thanks to AKP for catching
2840:
2841: this.
2842:
2843:
2844:
2845: PATCHLEVEL7::
2846:
2847:
2848:
2849: *fs.c:
2850:
2851: Cleaned up the Dpathconf() return values to better reflect
2852:
2853: reality, and made the code a little easier to understand.
2854:
2855: bios.c:
2856:
2857: Adjust bcostat() parameters so that V:\MIDI and V:\KBD call
2858:
2859: the right (wrong) device (BIOS devices 3 and 4 are mixed
2860:
2861: up for Bcostat).
2862:
2863: dosmem.c:
2864:
2865: Made sure that Malloc(0L) always returns a NULL pointer.
2866:
2867: dosfile.c:
2868:
2869: Made Fclose() of handles 0, 1, 2, and 3 restore the default
2870:
2871: mappings. (Apparently TOS _does_ do this, after all.)
2872:
2873: bios.c:
2874:
2875: AHDI 3.1 added a new parameter to Rwabs; we now pass that
2876:
2877: along too.
2878:
2879: timeout.c:
2880:
2881: Make canceltimeout() free the memory used by the time out
2882:
2883: descriptor. (another Fselect bug)
2884:
2885: signal.h:
2886:
2887: Removed ABORT and ALARM from list of signals that are reported
2888:
2889: by the kernel.
2890:
2891: proc.c:
2892:
2893: Moved checkalarms() to do_wakeup_things() so that short time outs
2894:
2895: will be properly recognized; this fixes a nasty bug in Fselect.
2896:
2897:
2898:
2899: PATCHLEVEL6::
2900:
2901:
2902:
2903: pipefs.c:
2904:
2905: Make writes of 1024 or fewer bytes atomic. Also, increase pipe
2906:
2907: buffer size to 4096.
2908:
2909: tosfs.c:
2910:
2911: Make O_EXCL and O_TRUNC bits useful.
2912:
2913: tosfs.c,pipefs.c,filesys.c:
2914:
2915: Fully implement file sharing modes for tosfs and pipefs. A new
2916:
2917: routine (denyaccess) is provided in filesys.c for checking
2918:
2919: file open modes and determining conflicts (if any).
2920:
2921: pipefs.c:
2922:
2923: If a process writes on a broken pipe while ignoring SIGPIPE,
2924:
2925: the write now returns -1. (Thanks, Stephen)
2926:
2927: debug.c, bios.c:
2928:
2929: Applied bammi's patches to PATCHLEVEL 5 to fix some typos.
2930:
2931:
2932:
2933: PATCHLEVEL5::
2934:
2935:
2936:
2937: debug.c, bios.c:
2938:
2939: Applied AKP's debugging output patches, to allow TRACE and
2940:
2941: DEBUG output to go to serial ports as well as the printer.
2942:
2943:
2944:
2945: PATCHLEVEL4::
2946:
2947:
2948:
2949: dos.c:
2950:
2951: NEW SYSTEM CALL: Fbiosdev() to control redirection of BIOS
2952:
2953: devices.
2954:
2955: bios.c, proc.h:
2956:
2957: Added binput and boutput arrays to allow for per-process redirection
2958:
2959: of BIOS device input and output to GEMDOS file handles.
2960:
2961: biosfs.c:
2962:
2963: Changed "mdi" to "midi".
2964:
2965: WARNING: this change could (I suppose) break existing code.
2966:
2967: util.c:
2968:
2969: Added a umalloc() function to allocate memory in user space,
2970:
2971: and modified the various sfirst routines to use this to
2972:
2973: allocate space for patterns instead of kmalloc.
2974:
2975: dosdir.c,file.h:
2976:
2977: Added an FS_CASESENSITIVE flag to control conversion of file
2978:
2979: names to upper case for TOS domain processes.
2980:
2981: dosdir.c, *fs.c:
2982:
2983: Made sfirst/snext functions take an extra argument, the length
2984:
2985: of the file name field in the DTA buffer (so that we can provide
2986:
2987: Xsfirst/Xsnext functions that can work with longer names)
2988:
2989: mem.c:
2990:
2991: Fixed exec_region so that the close-on-exec flag works.
2992:
2993: filesys.c:
2994:
2995: Made path2cookie take the name of the place to store the last
2996:
2997: component of the path name as an argument (instead of always
2998:
2999: storing it in the global variable temp1).
3000:
3001: biosfs.c:
3002:
3003: Added code for O_NDELAY on bios devices.
3004:
3005: tosfs.c:
3006:
3007: Cleaned up garbage collection a bit -- I hope this fixes the
3008:
3009: problems with running out of indices.
3010:
3011: filesys.c:
3012:
3013: Returned the special parsing code for CON:, AUX:, etc.
3014:
3015: file.h:
3016:
3017: OOPS! The flock structure was missing an element (l_whence). It
3018:
3019: was added.
3020:
3021: WARNING: This change may break existing code.
3022:
3023: util.c:
3024:
3025: Made kmalloc take a long parameter, just in case installable
3026:
3027: file systems need lots of memory.
3028:
3029: file.h, atarierr.h, pipefs.c:
3030:
3031: Made file modes compatible with _FLK specification. Also
3032:
3033: added the ELOCKED and ENSLOCK errors to atarierr.h, and made
3034:
3035: pipefs.c use ELOCKED instead of EACCDN.
3036:
3037: WARNING: this *will* break existing programs. In particular, mgr
3038:
3039: no longer works :-( because O_NDELAY has changed. (this was
3040:
3041: temporarily patched)
3042:
3043: dos.c,dosfile.c:
3044:
3045: Added Flock() system call.
3046:
3047: mem.c:
3048:
3049: Made the initial user stack pointer low enough so that syscall.s
3050:
3051: won't run into the end of memory if the user makes a system call
3052:
3053: right away and doesn't push many parameters (the code in syscall
3054:
3055: always tries to copy a large chunk of the caller's stack).
3056:
3057: dosmem.c:
3058:
3059: Made vfork'd processes ignore job control signals (thanks to
3060:
3061: Stephen for pointing out how some shells rely on BSD's similar
3062:
3063: behaviour).
3064:
3065:
3066:
3067: PATCHLEVEL3::
3068:
3069:
3070:
3071: dosfile.c, file.h, *fs.c, bios.c:
3072:
3073: Changed f_select to use the new timeout mechanism, and provided
3074:
3075: routines in device drivers to wake up selecting processes.
3076:
3077: proc.h:
3078:
3079: New queue, SELECT_Q, for processes doing "select", to match above
3080:
3081: changes
3082:
3083: dos.c:
3084:
3085: Changed t_alarm to use the new timeout mechanism.
3086:
3087: timeout.c,proc.h:
3088:
3089: Added a new "timeout" mechanism, so that processes can specify
3090:
3091: an action to be taken when a counter expires.
3092:
3093: various places:
3094:
3095: Cleaned up TRACE and DEBUG output
3096:
3097: proc.c:
3098:
3099: Set current directory based on the TOS current directory
3100:
3101: when MiNT is starting up.
3102:
3103: debug.c:
3104:
3105: Added AKP's "trace" mode patch
3106:
3107: filesys.c:
3108:
3109: Replaced strcmp() for . and .. with direct comparisons, again
3110:
3111: per AKP.
3112:
3113: tosfs.c:
3114:
3115: Improved search performance a bit (indicies are now allocated
3116:
3117: at the beginning of the list, instead of at the end)
3118:
3119: main.c, version.h:
3120:
3121: Introduced PATCHLEVEL for alpha and beta test versions
3122:
3123: util.c:
3124:
3125: Made kmalloc() try the kernel memory region first for small
3126:
3127: regions, to cut down fragmentation of the user's memory space
3128:
3129: proc.h:
3130:
3131: Made the system stacks bigger, to compensate for the bigger
3132:
3133: contexts now that there's FPU support
3134:
3135: dosmem.c:
3136:
3137: Fixed bug with Pexec mode 6 (thanks again, AKP)
3138:
3139: biosfs.c:
3140:
3141: Changed FD0 to STDIN, FD1 to STDOUT, etc.
3142:
3143: WARNING: this change could break existing code
3144:
3145: filesys.c:
3146:
3147: '/' is no longer a directory separator for MiNT domain processes
3148:
3149: (few were using it, and it simplifies things to be able to
3150:
3151: assume '\' is the only such separator).
3152:
3153: WARNING: this change could break existing code
3154:
3155: all over the place:
3156:
3157: Changed the way directories/files are stored. We now have
3158:
3159: "file cookies" for directories, instead of strings. We
3160:
3161: also now have two directories per drive per process
3162:
3163: (a root and current).
3164:
3165: minixfs.c:
3166:
3167: Removed from the main compile, and MINIX_FS symbol was also
3168:
3169: removed -- this will be a loadable file system someday
3170:
3171: (soon, I hope).
3172:
3173: various places:
3174:
3175: Added Alex Kiernan's patches to support compilation under
3176:
3177: Lattice C v5
3178:
3179: proc.h, context.s:
3180:
3181: Added Alex Kiernan's FPU co-processor patches. WARNING: this
3182:
3183: changes the layout of the proc structure in memory, and so
3184:
3185: breaks "ps" and similar programs.
3186:
3187: proc.c:
3188:
3189: Changed sleep() to take the wait condition as an argument; this
3190:
3191: means that fewer things need to know the internals of the
3192:
3193: PROC structure
3194:
3195: various places:
3196:
3197: Added AKP's T_TOSTOP flag changes
3198:
3199: minixfs.c:
3200:
3201: Changed the 8K buffer in do_change to a static variable; our
3202:
3203: stacks aren't *that* big!
3204:
3205: intr.s:
3206:
3207: Fixed a typo that was causing serious problems with the bus
3208:
3209: error and other exception codes on the TT (thanks for
3210:
3211: catching this, Allan).
3212:
3213: dosmem.c,signal.c:
3214:
3215: Corrected the GEMDOS termination vector code (the system stack
3216:
3217: was being corrupted if the user's code returned). Thanks to
3218:
3219: Julian Reschke for catching this error.
3220:
3221: ===========================================================================
3222:
3223: version 0.8
3224:
3225:
3226:
3227: biosfs.c, pipefs.c:
3228:
3229: fix ^C and ^Y to send the signals to the whole process group,
3230:
3231: and also to make sure processes don't read these keys if
3232:
3233: they're turned into signals
3234:
3235: intr.s,dossig.c:
3236:
3237: fix exception handlers to be more careful about the distinction
3238:
3239: between being in or out of the kernel
3240:
3241: intr.s, syscall.s, main.c:
3242:
3243: make sure interrupts are off before changing any vectors
3244:
3245: bios.c:
3246:
3247: fixed the annoying problems with CTRL-ALT-Fx sometimes leaving
3248:
3249: keys in the buffer
3250:
3251: signal.c:
3252:
3253: forced p_sigreturn() with no signal pending to unwind the
3254:
3255: *whole* signal stack, in case there were multiple signals
3256:
3257: pending at the time the user did a longjmp() (or whatever
3258:
3259: prompted the Psigreturn())
3260:
3261: dosmem.c:
3262:
3263: p_wait3 now supports the WUNTRACED bit; if this isn't set,
3264:
3265: processes stopped due to job control are *not* returned
3266:
3267: dosmem.c:
3268:
3269: removed dLibs kludge -- some programs rely on p_parent being
3270:
3271: non-zero to tell them that they're not accessories
3272:
3273: various places:
3274:
3275: cleaned up job control stuff to be more Unix like
3276:
3277: mem.c,util.c:
3278:
3279: added a new memory map for the kernel -- this should ease
3280:
3281: the problems with programs grabbing all of available memory
3282:
3283: mem.c,dosmem.c:
3284:
3285: incorporated Allan's bugfixes; alternative RAM should work now
3286:
3287: signal.c, main.c, intr.s:
3288:
3289: integrated signals with normal exceptions, so that e.g.
3290:
3291: a bus error raises SIGBUS. This improves the survivability
3292:
3293: of the kernel, so that a bus error resulting from a bad
3294:
3295: system call parameter won't kill MiNT, just the offending
3296:
3297: process.
3298:
3299: proc.c:
3300:
3301: kludge to let low priority processes run every so often, even
3302:
3303: in the presence of a high priority process that is ready to run
3304:
3305: atarierr.h:
3306:
3307: ENMFIL is -49, not -47 -- so much for Abacus' docs :-)
3308:
3309: procfs.c:
3310:
3311: changes to allow read/write from process space
3312:
3313: minixfs.[ch]:
3314:
3315: changed lots of function parameter types to avoid promotion and
3316:
3317: prototype problems with 32 bit code
3318:
3319: bios.c:
3320:
3321: changed IOREC to IOREC_T to avoid name conflicts with some osbind.h
3322:
3323: biosfs.c:
3324:
3325: made mouse driver change the line A mouse position variables, so MGR
3326:
3327: will work with bigscrn and similar large screen emulators
3328:
3329: minixfs.c:
3330:
3331: new version from Stephen, now supports floppies and other removable
3332:
3333: media
3334:
3335: mem.c, dosmem.c, dos.c:
3336:
3337: added code to support new TT TOS calls Mxalloc and Maddalt, plus
3338:
3339: program flags for loading/mallocing in alternate memory
3340:
3341: bios.c,biosfs.c,dosfile.c:
3342:
3343: changed so that bios handles 0 and 1 can be redirected just like
3344:
3345: handle 2 (via the new file handles -3 and -2 respectively; AUX:
3346:
3347: and PRN: now refer to these files, and RS232 and CENTR to the
3348:
3349: physical devices)
3350:
3351: dosdir.c:
3352:
3353: Dsetdrv() fixed to return an error indication when one happens
3354:
3355: dos.c:
3356:
3357: fixed Super() bug (thanks Stephen)
3358:
3359: minixfs.c:
3360:
3361: incorporated changes to handle 1K sector sizes
3362:
3363:
3364:
3365: =============================================================================
3366:
3367: version 0.7
3368:
3369:
3370:
3371: minixfs.c:
3372:
3373: new file, courtesy of Stephen N. Henson ([email protected])
3374:
3375: this is still "under construction"; see minixfs.doc for more details
3376:
3377: bios.c:
3378:
3379: CTRL-ALT-UNDO now raises SIGQUIT, for the benefit of people with
3380:
3381: foreign ROMs (some have trouble with ^\)
3382:
3383: filesys.c:
3384:
3385: changed pathname resolution code so that multiple slashes in a file
3386:
3387: name have the same effect as single slashes. POSIX mandates this,
3388:
3389: and some Unix programs expect it, too
3390:
3391: dosmem.c:
3392:
3393: changed do_vfork() code so that the text segment of processes is
3394:
3395: *not* saved in a fork() if the process has separate text, data, and
3396:
3397: bss segments; this saves a fair bit of memory
3398:
3399: proc.c:
3400:
3401: changed the process initialization code to better deal with job
3402:
3403: control; also changed handle 2 to be AUX: (as under TOS) rather
3404:
3405: than PRN:
3406:
3407: bios.c:
3408:
3409: added CTRL-ALT-F5 (show memory usage) and CTRL-ALT-F6
3410:
3411: (show processes)
3412:
3413: filesys.c:
3414:
3415: make explicit the fact the individual file names are limited to
3416:
3417: 14 characters
3418:
3419: everywhere:
3420:
3421: change FILENAME_MAX to PATH_MAX
3422:
3423: mem.c:
3424:
3425: fixed up comments and debugging/trace info for load_region
3426:
3427: dossig.c:
3428:
3429: NEW SYSTEM CALL: Psigpending() returns the set of signals that
3430:
3431: have been sent to the process, but not yet delivered.
3432:
3433: dos.c, dosdir.c:
3434:
3435: NEW SYSTEM CALLS:
3436:
3437: Sysconf(n) returns information about the global limits of the
3438:
3439: currently running version of MiNT
3440:
3441: Dpathconf(name, n) returns information about the file system that
3442:
3443: the file "name" is located on
3444:
3445: bios.c:
3446:
3447: allow CTRL-ALT-C, CTRL-ALT-\, and CTRL-ALT-Z to force a SIGINT,
3448:
3449: SIGQUIT, or SIGTSTP, respectively, even if the terminal is in raw
3450:
3451: mode
3452:
3453: various places:
3454:
3455: call zero() instead of bzero()
3456:
3457: context.s,intr.s:
3458:
3459: changes to make MiNT TT compatible. Thanks to Allan Pratt for this!
3460:
3461: biosfs.c, tosfs.c, pipefs.c, procfs.c:
3462:
3463: fsfirst/fsnext return all upper case in TOS domain now, but
3464:
3465: lower case (or mixed) in MiNT domain; this is to try to wean
3466:
3467: programmers off of the habit of assuming everything is upper case
3468:
3469: (and converting accordingly)
3470:
3471: biosfs.c:
3472:
3473: made mouse compatible with TOS ALT-cursor keys (the Y direction was
3474:
3475: wrong before)
3476:
3477: intr.s:
3478:
3479: IPL 7 before reboot (thanks, Allan)
3480:
3481: version.h, main.c:
3482:
3483: made version numbering a bit easier (big deal)
3484:
3485: main.c:
3486:
3487: AARGH! The cookie jar stuff was plain wrong (the last cookie should
3488:
3489: have the total number of slots, not just the ones that are free).
3490:
3491: main.c:
3492:
3493: pass current environment along to init.prg, instead of forcing an
3494:
3495: empty environment
3496:
3497: signal.c:
3498:
3499: corrected killpg() bug (wasn't checking signals, so the current
3500:
3501: process didn't get the signal until later)
3502:
3503: mem.c, dosmem.c:
3504:
3505: made sure that all sizes would always be rounded to the nearest
3506:
3507: longword. Just in case they aren't, Malloc(-1L) rounds down to the
3508:
3509: next smallest longword.
3510:
3511: lots of places:
3512:
3513: memory handling was overhauled completely; kmalloc now allocates
3514:
3515: memory from the same space as do m_alloc and p_exec, so there is
3516:
3517: no artificial constraint on the number of processes
3518:
3519: ===========================================================================
3520:
3521: version 0.6
3522:
3523:
3524:
3525: dos.c:
3526:
3527: added Talarm() and Pause() system calls
3528:
3529: bios.c, tty.c, pipefs.c:
3530:
3531: added real tty structures that programs can manipulate
3532:
3533: proc.c:
3534:
3535: added some sanity checks for things like stack overflow
3536:
3537: signal.c:
3538:
3539: revamped signal handling so that Psigreturn() no longer needs an
3540:
3541: argument.
3542:
3543: dosmem.c:
3544:
3545: made Pexec'ing processes immune to SIGINT, SIGHUP, and SIGTSTP
3546:
3547: intr.s:
3548:
3549: fixed the Psigreturn race condition bug
3550:
3551: biosfs.c, pipefs.c, filesys.c, util.c:
3552:
3553: added case-insensitive string comparison routine, and modified the
3554:
3555: file systems to use it
3556:
3557: bios.c, console.c:
3558:
3559: changed return values of status calls from 1 to -1, to be TOS
3560:
3561: compatible
3562:
3563: dos.c:
3564:
3565: added new calls to get resource usage, and set resource limits
3566:
3567: dosfile.c:
3568:
3569: added new call, f_select
3570:
3571: signal.c:
3572:
3573: changed so stopped processes always have a return code of 0177
3574:
3575: biosfs.c:
3576:
3577: added a fake "third button" on the mouse (you get it by holding down
3578:
3579: a shift key and a mouse button)
3580:
3581: made mouse_read return at least 1 byte
3582:
3583: bios.c, proc.c, biosfs.c:
3584:
3585: added code to check for CTRL-ALT-key combinations on every
3586:
3587: process switch; thus, debugging, rebooting, etc. do not require
3588:
3589: waiting for a read from the keyboard. Also, ^C sends a SIGINT
3590:
3591: immediately, and ^Z (SIGTSTP) and ^\ (SIGQUIT) take effect
3592:
3593: right away, too.
3594:
3595: CTRL-ALT-DEL supported for TOS < 1.4
3596:
3597:
3598:
3599: =========================================================================
3600:
3601: version 0.5
3602:
3603:
3604:
3605: First publically released version (made available for FTP as a beta test)
3606:
3607:
3608:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.