|
|
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.