Antiguo Histórico de Cambios
0.6.1 - 24-Apr-2009
===================
- Rewritten some string related functions and renamed their include files.
- Cleared all the code in the string.h functions.
- Compacted the code of the processor exception handling.
- Optimized and cleared a great part of the IDE code.
- Added the /proc/cpuinfo file in the procfs.
- Added the /proc/interrupts file in the procfs.
- Added the /proc/meminfo file in the procfs.
- Added the /proc/stat file in the procfs.
- Added the 'remount' capability for the sys_mount() system call.
- Added the parallel port line printer driver (/dev/lp0) supporting only one
printer.
- Fixed correctly the limits of the segment descriptor for user processes.
- Fixed the mechanism to detect better the page faults generated by the stack.
- Fixed some stack problems in the assembler functions for the CPU detection.
- Fixed a bug in the buffer allocation of fifo files.
- Fixed a bug during the clone of the process address space that permitted
copying the pages mapped to the video addresses.
- Fixed a bad declaration in the Rock Ridge structure that prevented working
properly.
0.6.0 - 11-Mar-2009
===================
- Kernel is now compiled to run at virtual address 0xC0000000 (3GB), it
continues being loaded at physical address 0x100000 (1MB) though.
- Changed completely the initial layout of the kernel data structures.
- Rewritten mostly of the entry assembler code using the Tim Robinson's GDT
idea to reflect the new kernel location.
- Rewritten partly the memory init process to reflect the new kernel location.
- Rewritten the internal mechanisms that create the process address space.
- Changed a static array allocations by dynamic ones in ext2_bmap() which fixes
some kernel PANICs due to stack problems.
- Fixed the pointers of argv and envp in the process table.
- Fixed the preference of the operator % during the buffer and inode hashes
calculation that caused a lot of unstability.
- Removed ghost processes appeared in the /proc directory listing.
- Added support for RAMdisk devices. By default the kernel has defined only
one RAMdisk (/dev/ram0).
- Added the new kernel parameter "ramdisk_size" to define the RAMdisk size in
KB.
- Added the new kernel parameter "noramdisk" to disable RAMdisk devices.
- Fixed to show correctly the inode device number in the /proc/PID/maps file.
- Fixed to show '/dev/root' in the root filesystem device in /proc/mounts.
- Fixed a bad checking for null pointer references which helped to discover some
important bugs.
- Fixed the ioctl() call in the CDROM drives.
- Fixed to prevent a crash during a sys_mount() if filesystem type is NULL.
- Used the build timestamp as the UTS_VERSION value.
- Added support for the sys_statfs() in the ISO9660 filesystem.
- Added support for the Rock Ridge extension in the ISO9660 filesystem.
- Fixed a missing inode release when umounting devices.
0.5.0 - 12-May-2008
===================
- Added the very long awaited procfs filesystem. It still lacks a lot of system
files but all its internal structure and functionality is finished.
- Improved with new features the ATAPI CDROM driver (closing automatically
the tray, preventing media removal when it's mounted, etc.).
- Fixed some bugs in the ATAPI CDROM driver.
- Fixed some problems during the detection of IDE devices.
- Rewritten partialy the VFS corresponding to the IDE devices, in order to
support different IDE devices (hard disk and cdrom drives) in the same
controller.
- Fixed a bug in read_inode() that prevented to discard correctly an inode under
i/o error situations.
- Fixed to close() the device if sys_mount() is not completed.
- Changed the kernel location from / to /boot.
- Shifted down GNU/Fiwix logo in the GRUB splash image.
0.4.0 - 28-Nov-2007
===================
- The buffer hash and inode hash tables that were initially sized inside the
kernel BSS, are now sized during the system startup.
- Fixed the "%c" handling in the printk() function.
- Fixed a bug in the strncmp() function.
- Fixed the handling of the permission flags for each header section during the
loading of an ELF binary.
- Improved the way how are created the vma entries during the binary loading.
- Added provisionally the read-only flag during the root filesystem mount.
- Added support for filesystems with different block size (1KB, 2KB and 4KB).
- Rewritten a lot of buffer cache code to accomodate the new support for 1KB,
2KB and 4KB block size filesystems.
- Rewritten a lot of EXT2 filesystem code to take care to use the block size
value included in the in-memory superblock table instead the old one fixed
to 1KB.
- Added support to read different block sizes in the floppy and hard disk
drivers, taking care to use the block size value included in the request
parameter.
- Improved the IDE devices information. Now detects the UDMA mode but is not
used yet.
- Added the kernel boot parameter 'rootfstype' to specify which filesystem
will be used in the boot device.
- Added the IDE ATAPI CDROM driver with minimal support and improved a little
bit all the IDE drivers related code.
- Added minimal support (without extensions) for ISO9660 filesystem.
- Fixed the treatment of the return value when read_inode() returns NULL.
- Fixed a bad use of the MIN() function.
- Fixed a bug in the check_fs_busy() function during the sys_umount() system
call.
- Removed an old dependency of the EXT2 filesystem during the ELF loading. Now
it uses bmap() and it's more generic.
0.3.3 - 30-Jul-2007
===================
- Fixed a big error in the ELF-i386 binaries during the initialization of the
fractional pages between the data and bss sections. Such error caused a lot
of unexpected segmentation faults.
- Improved the way how are created and handled the addresses in the process
virtual memory maps.
- Improved all the kernel command line parameter handling.
- Fixed a lot of bugs in the signaling system and optimitzed its code. More are
still needed.
- Added support for the filetype feature in the ext2 filesystems.
- Added support for the sparse-super feature in the ext2 filesystems when in
read-only mode (since the lack of sys_write() implementation, all mounts are
still automatically mounted as read-only mode).
- Fixed some errors in the inode location algorithms in the EXT2 filesystem.
- Fixed an IDE ioctl() command that prevented getting correct hard disk size
values.
- New system calls:
sys_reboot
0.3.2 - 20-May-2007
===================
- Optimized the VMM code introduced in the previous version.
- Minimal improvements in the vconsole switching when at least one of them is
in graphics mode.
- Added new ioctl commands for a better vconsoles handling.
- Fixed IDE hard disk device minor numbers detection and isolation.
- Fixed to read unregistered block devices with same device major number.
- Fixed sending a SIGSEGV to the process when the kernel is unable to find the
interpreter of an ELF binary during the sys_execve().
- Some fixes in signaling system. More are still really needed.
- New system calls:
sys_kill, sys_chroot
0.3.1 - 02-May-2007
===================
- Adapted the printk() function to support the va_list types and its standard
macros in order to prepare it to be a complement for the new added sprintk().
- Improved the handling of the sys_getdents() system call to be part of the
current VFS layer.
- Added the readdir() method into the VFS structure.
- Improved virtual memory manager code to support SVGAlib based applications
and to add the possibility to mmap() physical addresses.
- Improved the way how to map physical addresses in the /dev/mem driver.
- Added the mmap() and readpage() methods into the VFS structure.
- Fixed code to be built with gcc 4.x.
0.3.0 - 19-Jan-2007
===================
- Added the long awaited pipefs filesystem which will permit the use of named
and unnamed pipes. Regarding the named pipes and because the kernel dont have
implemented yet the sys_write() system call, there is no way to create fifo
files with the mknod/mkfifo commands. To solve this situation and to be able
to play with named pipes, I've created in the floppy disk a fifo file located
in /dev/fifo.
- Fixed to get a blank inode when getting a new inode in the iget() function.
- Fixed the blk_dev_lseek and blk_dev_ioctl methods to take care if they are
(still) not implemented in its corresponding block device driver.
- Added the file descriptor as a new argument for the close() method in the VFS.
- Fixed and rewritten completely the way how are processed the arguments during
the sys_execve() system call.
- Fixed the ext2_dir_lseek() method with the sys_lseek() system call.
- Fixed to connect to INIT all the children processes when its parent dies.
- Removed some unused variables and code cleaning.
- It compiles with no errors with gcc-3.4.
- New system calls:
sys_pipe
0.2.4 - 05-Jan-2007
===================
- Added support for processor's cache detection. Now is displayed during the
kernel boot in the same line where is showed the processor speed.
- Fixed a bug during the page table initialization.
- Fixed an overflow during the size calculation of the buffer and inode tables
on systems with more than 400MB of memory.
- Added a verification in buffer_read() before jumping to fsop->read().
- Fixed some bad decisions during a page-fault procedure.
- Unified the way how is called the sys_iopl() with the rest of system calls.
- Restructured more accurately all the VFS implementation in order to fit the
new pipefs. This filesystem is special in what not has any device associated
to it (nodev mode).
0.2.3 - 02-Oct-2006
===================
- Fixed an inode lock during the interpreter load in dynamically linked ELF
binaries.
- Fixed a bug when handling the stack page faults that caused a lot of
unexpected kernel panics. That was the big one!.
- Rewritten some parts of VFS layer to better support multiple filesystems.
- Fixed an unreleased inode when its type is not supported yet (fifo & socket).
- Fixed an unreleased buffer when detecting an empty/broken symbolic link.
- Fixed PANIC function to take care to not burn the CPU anymore.
- Fixed in elf_load() to only release the old binary inode when it really
exists. This will prevent to release an unexistant inode when loading the
/sbin/init.
- Removed a duplicated iput() in namei().
- Fixed a global malfunction in the inode hash table mechanism.
- Changed to English the default keyboard language layout.
- Changed from "lang" to "kbd" the name of the kernel parameter to specify the
keyboard layout (current values are: "en", "es" and "ca").
0.2.2 - 08-Sep-2006
===================
- Incremented to 5 the number of supported system call parameters.
- Fixed floppy driver to add real support for 360KB, 1.2MB, 720KB and 2.88MB
type drives.
- Fixed to support I/O operations directly to block devices.
- Fixed some missing releasing inodes in many system calls.
- Fixed unexpected inode locking caused by an incorrect use of iput() and
inode_unlock() in different places.
- Some arrays initialy declared with fixed size, are now changed to dynamic
size.
- Added a memory clobber for the sti/cli calls.
- Fixed a memory leak in sys_getdents().
- The kernel now is able to mount/umount filesystems (ext2 only).
- New system calls:
sys_mount, sys_oldumount, sys_umount
0.2.1 - 01-Nov-2005
===================
- VFS layer included (only ext2 filesystem supported right now :).
- Completely rewritten almost all filesystem internal structure.
- Improved the way is mounted the root filesystem.
- Removed some unused code and code cleaning.
- Ported the load average calculation formula from the Linux kernel.
- Fixed the correct CPU Intel architecture number (i386, i486, i586 or i686)
for sys_uname().
- Improved CPU identification routines.
- New system calls:
sys_sysinfo
0.2.0 - 23-Apr-2005
===================
- Improved some console/tty handling in canonical mode.
- Fixed initialization bug in Write-Protection (WP) bit of cr0 register.
- Fixed lot of bugs in Copy-On-Write routines. Although one still persist.
- Changed completely the internal mechanism to connect device files (block and
char) with their respective drivers. Some bugs fixed.
- Improved mount_root() in super.c. Now uses iget() correctly.
- It compiles with no errors with gcc-3.3.
0.1.5 - 01-May-2004
===================
- Fixed bug in search_page_hash() which created " WARNING: Unexpected
inconsistency in hash_table. Missing page ..." messages.
- Better handling of page faults in the stack area.
- Implemented the long awaited Copy-On-Write (CoW) feature. As a result,
fork()s are now faster than ever and resources better managed. Completely
rewritten the page-demand mechanism in the virtual memory management.
- Other cosmetic fixes (removed unused variables and code cleaning).
0.1.4 - 15-Mar-2004
===================
- Added the new kernel parameter "lang=" to set the keyboard language layout.
At this time only "es" and "en" are valid values. The default is "es".
- Fixed some memory leaks during page deallocation.
- Completely rewritten the hash mechanism of page-table and lot of related bugs
fixed.
- Fixed bug during page table initialization.
0.1.3 - 01-Feb-2004
===================
- Fixed several bugs when handling with buffers on symlink_readlink() and
symlink_followlink().
- Fixed bug in free_pages counter.
- Completely rewritten the buffer-cache and inode-cache mechanisms.
- First testings with the newly created virtual memory management.
0.1.2 - 01-Dec-2003
===================
- Completely rewritten the gdt, ldt, tss and idt initialization. Now it's
possible to specify a number maximum of processes (NR_PROCS).
- Fixed a double (two) exception during a new page allocation when its page
table is not present (one for the page-table and another for its own page).
Now all the new page allocations are made with only one exception. Which is
faster.
- Fixed bug in console driver to avoid writtings on unopened consoles.
- Improved sleep/wakeup states in tty driver.
- Added the VT_OPENQRY and VT_ACTIVATE ioctl features.
- Code cleanup.
0.1.1 - 01-Nov-2003
===================
- Changed completely the way which memory is calculated. Now it takes advantage
of the memory map provided by GRUB (BIOS 0xE80, where available) and optimize
resources.
- Fixed a lot of stability problems.
- Fixed a bug in console initialization.
0.1.0 - 01-Sep-2003
===================
- Added support for the GRUB Multiboot Specification.
- Changed the old FILO boot loader by GRUB, which have better support for
modern hardware and have a lot of new features.
- Added a floppy controller reset during floppy_init().
- Fixed child page-tables initialization during fork().
- Updated code to detect newer Intel processors using CPUID extensions (where
available).
- Report more and better information during boot process.
0.0.0w - 01-Jun-2003
====================
- Added more features to ioctl() system call for ttys.
- Improved terminal handling in graphics mode using svgalib.
- Fixed a big bug during page table allocation and initialization in some parts
of kernel.
- New system calls:
sys_setgroups
0.0.0v - 01-Apr-2003
====================
- Removed the already-registered-device control, which avoided to mount as a
root device the rest of disk drives that was not primary master.
- The *stat() system calls now returns PAGE_SIZE (4096 bytes) as a "st_blksize"
value. Before, it returned 1024 bytes which affected the sys_getdents()
behavior.
- Fixed lot of bugs in old_mmap() and sys_munmap() and its related functions.
- Added support for the controlling terminal (ctty), process groups, sessions,
etc.
- New system calls:
sys_sethostname, sys_setdomainname, sys_getpgid, sys_getsid
0.0.0u - 01-Jan-2003
====================
- Fixed some bugs in the buffer cache which affected hash functions.
- Reduced signal latency between processes. Sometimes it caused uncontrolled
reentries in the kernel.
- Exception and interruptions entry calls improved.
- Implemented inode_lock() and inode_unlock() for the internal inode system
blocking.
- Inodes freeing routine iput() improved.
- Improvements in the TAB handling mechanism of the console driver.
- Fixed a critical bug in the read function in file.c, which caused to don't
read, sometimes, the last block of a file.
- It compiles with no errors with gcc-2.96.
0.0.0t - 01-Sep-2002
====================
- Improvements on error detection of the buffer cache.
- old_mmap() and sys_munmap() system calls totally rewritten.
- Improved the internal structure of the virtual addresses map for each process.
- Improvements while loading in memory ELF binaries.
- Implemented new semaphores during the access to process table.
- Improvements on detecting page_faults caused by process stack.
- Boot option LANG removed. It was going to allow kernel messages in many
languages.
- FILO improvements in memory detection on old 80386 and 80486 processors.
0.0.0s - 03-Jul-2002
====================
- Fixed a bug in floppy driver during the check results after reading.
- Improvements on the floppy driver when moving transfer area to kernel memory
space. 20KB being freed to user space.
- Rewritten namei() and it's helping routines.
- Improved symbolic links handling mechanism.
- Improvements on the internal registry of the device drivers.
- New system calls:
sys_idle
0.0.0r - 01-May-2002
====================
- Improvements on the floppy driver. Resource locking implemented.
- Fixed some bugs in do_munmap().
- Fixed a bug in namei.c which affected directly to symbolic links with an
absolute path.
0.0.0q - 01-Apr-2002
====================
- Fixed some bugs in FILO.
- Improvements on the floppy driver.
- System call sys_getdents() totally rewritten.
- Fixed a bug in namei.c. bmap() was not used correctly and caused to not
localize files in directories bigger than 12 direct blocks (EXT2).
- Fixed a bug in mmap.c. It didn't controlled correctly the
null-pointer-references in the user space.
- Fixed some bugs about inodes and buffer's space. get_free_inode() and
get_free_buffer() called a sleep() with the parameter PROC_INTERRUMPIBLE.
Currently the only parameter implemented is PROC_UNINTERRUMPIBLE.
0.0.0p - 03-Mar-2002
====================
- ELF binaries dynamically linked loading fully restructured.
- It works with no problems under Bochs v1.3. Although it's too slow, due to an
excess of internal structures to initialize.
- Fixed some bugs during process synchronization.
- Reestructured again the stack layout in memory of the ELF binaries, to be the
same as in Linux.
- Minimum support for Linux's dynamically linked ELF binaries.
- New system calls:
old_mmap, sys_munmap, sys_mprotect
0.0.0o - 01-Jan-2002
====================
- Fixed a bug in elf.c. It didn't free a buffer at the end of ELF binaries
check.
- Fixed a bug in FILO which caused the kernel don't mount filesystems in other
devices than primary master. The value of ROOTDRIVE didn't match with the
kernel.
- Added symbolic links support.
- New system calls:
sys_sigsuspend, sys_readlink
0.0.0n - 01-Dec-2001
====================
- Console driver improvements to interpret ANSI escape sequences.
- Enhanced detection of the new Intel processors.
- It compiles with no errors with egcs-2.91.66.
- Improvements in the detection and treatment of signals for memory protection
errors.
- Reestructured the stack layout in memory of the ELF binaries, to be the same
as in Linux.
- Totally improved the runtime environment of /sbin/init.
- Fixed a bug in inode.c (during the change from "indirect block" to
"double-indirect block").
- FILO: Added ROOTDRIVE option, which will allow to specify the "root
filesystem" to mount when the kernel is loaded.
- Fixed a bug in file.c which caused overwrittings in the user's memory space.
- Fixed some bugs in BSS section during demand paging.
- New system calls:
sys_statfs, sys_fstatfs, sys_nanosleep, sys_umask, sys_uname,
sys_waitpid, sys_olduname, sys_iopl
- Improved system calls:
sys_ioctl, sys_wait4
0.0.0m - 01-Jul-2001
====================
- New driver for IDE/ATA hard disks, it also detects ATAPI CDROM devices. This
new driver is working in read-only mode for the moment.
- Improvements on timers. They work similarly to signals, so it allows to have
a maximum of 31 working simultanously.
- Fixed bug in printk() function.
- Added the driver for memory devices (/dev/mem, /dev/kmem, /dev/null and
/dev/zero).
- Big improvements to the console driver to interpret ANSI escape sequences.
- FILO (FIwix LOader) has now more dependence with the kernel.
- New system calls:
sys_fchdir
0.0.0l - 01-May-2001
====================
- Created the file 'Changes' which will contain all the changes between kernel
releases.
- Bug fixed in the free pages count during the memory initialization process.
- Bug fixed in a pointer into each process' internal structure, which basically
affected to sys_execve() system call, but it also caused some unexpected
General Protection Faults (GPFs).
- Fixed a calc error which causes an overflow over 1024 in the pages table.
- Big improvements in the console and keyboard driver.
- New feature CLOSE_ON_EXEC added for the file descriptor of a process.
- Algorithm modified for the system calls sleep(), wakeup() and wake_proc().
This is now much more effective although it's still provisional.
- New system calls:
sys_access
- Improved system calls:
sys_fcntl, sys_ioctl
|