Antiguo Histórico de Cambios

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