News
POSIX Support! (Prex 0.7.0)
Posted 2007-12-25
This version includes POSIX emulation support.
Some system servers and libraries are implemented.
Various bug corrections are also included.
- New: Added process server which manages process state and pid.
- New: Added exec server which executes an ELF program.
- New: Added boot server.
- New: Initial release of TTY driver. Minimum set of termios were also added.
- New: CmdBox - a small binary that includes tiny versions of many Unix utilities.
- New: Added init process.
- New: Added stdio to libc, which is optimized for low-footprint systems.
- New: Added Unix system call emulation for fork(), exec(), pid, file I/O, signal, etc.
- New: realloc() support.
- New: Chagned gcc optimization option to -Os from -O2.
- New: Enabled gcc "-ansi -pedantic" options for portability.
- Fix: Fixed the scheduler to switch a thread properly for priority change.
- Fix: Fixed the kernel hang when a thread terminates while it holds a mutex.
- Fix: Fixed the boot failure when a boot task does not have any data or bss sections.
- Fix: Correct dup() function in fs. The reference count was not incremented after dup().
- Fix: Fixed to support processing an exception by drivers at interrupt level.
- Fix: Fixed a file lookup routine in devfs.
- Fix: The schduler was kept disabled when an exception was raised with invalid parameter.
- Fix: kmem_alloc() caused a hang when kernel memory
allocation was failed.
- Fix: Changed the scheduling policy of a timer thread to SCHED_FIFO from SCHED_RR.
- Fix: Fixed a page fault during mkdir() when "foo/bar" style path is specified..
- Fix: Fixed bug in recursive mutex lock. The handling of lock count was incorrect.
- Fix: A mutex for buffer cache was not initialized.
- Fix: Fixed a page fault while writing ramfs.
- Fix: Fixed a build error with old version (2.95) of gcc.
- Fix: Design change of timer_hook().
- Fix: Fixed to reduce interrupt latency when interrupt was fired
during a thread switching.
- Fix: Added clearing rescheduling flag before context switch. This flag was kept pending in some rare cases.
- Fix: Removed a kernel function trace feature which was depend on gcc's extension feature.
- Fix: Added checking to prevent the priority boost by the thread which did not have CAP_NICE capability.
- Fix: Fixed a page fault after the task was terminated by an exception.
- Fix: Mutex was locked even if cond_wait() was failed due to exception.
- Fix: Fixed memory leak when a periodic thread was terminated.
The source code was fully cleaned up for ANSI-C with this version.
Web Site Renewal.
Posted 2007-06-26
That's because everybody judges a book by its cover...
File Systems! (Prex 0.5.0)
Posted 2007-06-20
File system is supported with this version.
- New: Added file system server including VFS framework, buffer cache and mount function.
- New: Added devfs - device file system.
- New: Added ramfs - RAM file system.
- New: Added arfs - archive file system.
- New: Added file system test tool.
- New: Added 'configure' script for build.
- New: Support BSD style makefile for POSIX applications.
- Fix: Fixed crash in irq_detach() when not using an ist.
- Fix: Fixed makefile to optimize build speed with cygwin.
You have to run 'configure' script at the top of the source tree before compiling this version.
Prex 0.4.3 Released!
Posted 2007-04-13
This version includes some important kernel enhancement like DPC framework.
- New: Added DPC (Deferred Procedure Call) framework for device drivers.
- New: Added "dmesg" function to dump kernel messages.
- New: Optimized the kernel timer code to reduce the timer jitters of periodic thread.
- New: Changed the name of sys_stat() to sys_info().
- New: Added handling of reference count for the device objects.
- New: Added "force" option to device_broadcast().
- New: Make the kernel information as same with POSIX utsname.
- New: Removed the quantum adjustment feature.
- New: Added IPC test tool for multi-threaded servers.
- New: Added timer hooking service to reduce the driver's callout.
- New: Improved DVS algorithm of CPUfreq driver.
- Fix: Fixed a system hang when periodic timer is stopped for an invalid timer object.
- Fix: Replaced a delay driver as generic driver service.
- Fix: Fixed a system call trap code (ARM).
- Fix: Fixed a compile error when it built with SSP enabled gcc.
- Fix: Fixed data corruption in malloc() library.
- Fix: Fixed a bug in sem_post(). A thread could not hold semaphore in some case.
Prex 0.4.2 Released!
Posted 2007-01-24
This release includes various bug corrections and improvement of kernel API.
- New: Support RAM disk driver.
- New: Changed an argument type of device_read()/device_write().
- New: Added kernel release name in the kernel statistics data.
- New: Expanded vm_inherit option of task_create().
- New: Changed the data type of the message length of IPC related API.
- New: The vm_attrib() API was renamed to vm_attribute().
- New: Added kernel debugging API.
- New: Code size reduction for GBA port.
- New: Support recursive locking of mutex.
- New: Code clean up and system tuning.
- Fix: Fixed page fault during kernel memory dump.
- Fix: Fixed a bug in removing free node for VM region (NOMMU).
- Fix: Fixed a system hang by accessing ARM bank register after STM^ instruction.
- Fix: Fixed an alignment bug in the page reserve routine.
- Fix: Fixed memory leak when vm_map() was called two or more times (NOMMU).
- Fix: The end address of the page extraction was not correct (i386).
- Fix: An interrupt was kept disabled when DMA buffer allocation was failed (i386).
Prex 0.4.1 Released!
Posted 2006-02-23
A minor update has been released.
- New: Added ELF task relocation with NOMMU system.
- New: Replaced all strncpy() by strlcpy() in kernel for security reason.
- Fix: There were some mutex hang conditions that caused system hang.
- Fix: Fixed a deadlock problem of FDD driver.
- Fix: Rewrote the periodic timer routine in kernel.
- Fix: The highest priority thread was not selected in sched_wakeone().
- Fix: Dropped vm_inherit option for task_create() on NOMMU system.
Source Browser is Available Online.
Posted 2006-01-04
You can browse the Prex source tree on the web site.
Security Improvement! (Prex 0.4.0)
Posted 2005-12-31
This is the milestone release for the kernel security improvement.
New system calls for "Task Capability" were added to limit individual
operation of user mode tasks. Almost all of the system calls were
revised to check task permissions.
- New: Added sys_capget()/sys_capset() kernel API to control the task capability.
- New: Defined the standard message header for IPC.
- New: Added vm_inherit argument in task_create() to improve exec() emulation.
- New: Made /sample directory and added some sample user mode applications.
- New: Removed /img directory.
- Fix: Fixed the memory leak caused when task_create() was failed.
- Fix: Fixed the incorrect I/O read size of FDD driver.
- Fix: Fixed the console driver to lock a scheduler during I/O operations.
Prex 0.3.1 Released!
Posted 2005-12-07
This release includes some minor bugfixes and feature enhancements.
- New: Added null/zero device driver.
- New: Added support for MUTEX_INITIALIZER to allow the static
initialization of mutexes.
- New: Merged all configuration files into one single 'config.h' file
in /conf directory.
- New: libc and headers were updated with BSD derived code.
- New: Added 'make lint' as make option.
- Fix: object_lookup() did not return correct object ID with
ver 0.3.0.
Prex 0.3.0 Released!
Posted 2005-11-11
The kernel becomes enough stable with this release.
- New: Integrated configuration files and makefiles.
- New: Changed the name of sync APIs for POSIX compatibility.
- New: Supported re-initialize of the semaphore.
- New: Changed the driver ioctl code to BSD style.
- New: Added test programs for mutex, semaphore and deadlock detection.
- New: Added malloc() in the user mode library.
- Fix: Fixed the incorrect kernel handling of umem_strnlen().
- Fix: Modified the thread test program for long-run test.
- Fix: sem_post() could not unblock the waiting thread.
- Fix: vm_allocate() did not zero-fill the allocated memory.
- Fix: Fixed compile error with gcc4.
Prex 0.2.2 Released!
Posted 2005-10-07
This release includes some minor bugfixes and minor feature enhancements.
- New: Added the kernel function tracer which can dump the run-time
call tree.
- New: Added a benchmark tool to create/terminate 100000 threads at once.
- New: Added code to detect above 64M of RAM. (i386)
- Fix: Fixed the kernel page fault in accessing the highest physical page. (i386)
- Fix: Removed sys_reboot() system call. It is handled by ioctl of the power management driver now.
- Fix: Fixed a long-standing bug in IST dispatcher. There was a time window that
lost an IST trigger from ISR.
- Fix: Changed not to restart the system by sys_panic() system call.
- Fix: Clean up comments in kernel sources.
Porting to ARM Processor. (Prex 0.2.1)
Posted 2005-06-27
This release includes the Game Boy Advance port.
- New: Added ARM processor support. (ATM7TDMI)
- New: Added BSP for Game Boy Advance including On-Screen Keyboard.
- Fix: The irq lock count was not 0 after switching to the new thread.
- Fix: Improved the kernel timeout timer for the small timeout value.
- Fix: Removed the error checking of maximum scheduling quantum in
sched_setparam().
MMU-less Support! (Prex 0.2.0)
Posted 2005-06-06
This is a milestone release to support 'NOMMU' microcontrollers.
The new VM stub for NOMMU was added to keep the API compatibility with
the MMU kernel.
Now, an application can work on the MMU and NOMMU platforms without changing
its source code.
- New: Added new VM code for No-MMU platform.
- New: Changed the structure of the driver I/O table.
- New: Added minimum libc.
- Fix: Fixed to prevent panic() even if the active condition variable was
destroyed.
- Fix: Fixed the semaphore code that caused an unconditional wakeup of
the blocked threads.
- Fix: The structure of the source tree became new.
Note: Currently, Newlib is not required to build Prex applications.
However, the small C library with this version is temporary code until Newlib
is ported to Prex.
Power Management! (Prex 0.1.2)
Posted 2005-04-20
Dynamic Voltage Scaling (DVS) with Pentium M processor is supported
in this release. DVS reduces the CPU power consumption without significant
performance degradation.
The voltage monitoring tool and the DVS demonstration program have
been added.
- New: Added Pentium-M support for i386 processor driver.
Some driver code was ported from OpenBSD.
- New: Added CPU voltage monitoring tool (cpuvolt).
- New: Added DVS test program which changes the CPU load periodically.
- Fix: Improved the build method for cross platform portability.
Important: The default power policy was changed to 'Power Save' mode.
If you want to optimize the system for the real-time performance,
you have to change the power policy to the 'Performance' mode.
In this mode, DVS does not work and CPU will always run at the highest speed.
Prex 0.1.1 Released!
Posted 2005-04-05
This release includes some major bugfixes and minor feature enhancements.
- New: Added an initial version of kernel monitor (kmon).
- New: Added some user mode test programs to check kernel functions.
- New: Moved time_get()/time_set() functions to the driver layer.
- New: Added sys_time() kernel interface to return system ticks.
- New: Improved the device I/O dispatcher to verify user buffer automatically.
- Fix: Timer overflow issue after 49.7 days of continuous operation.
- Fix: Unexpected page fault in an exception handler.
- Fix: Page fault after main() routine returns.
Note: Newlib is required to build an user mode application with this release.
Initial Release! (Prex 0.1)
Posted 2005-03-16
This is the first public release of Prex.
It includes kernel, system call library, "hello world" sample
application, and some technical documents.
Almost kernel features (task, thread, vm, ipc, exception, timer,
synch) have been implemented in this version.
It has a memory protection feature with i386 MMU.
I hope you can enjoy exploration of the Prex kernel source.
(like me :-)
The Project Web Site Online.
Posted 2005-03-03
I want to hear your feedback about this site. Please let
me know what you think.
The Prex Project is Published.
Posted 2005-02-23
The Prex project has been registered in
SourceForge.net.
Let's rock!
|