Any novelties?

Yeah, as i writed some days ago on my Telegram channel i ‘m rewriting the kernel to resolve many architectural issues, expecially on the memory manager.

The new kernel will be called Envolve (something like Evangelion Evolution) and will be x86/x86-64, hybrid (modular micro kernel), more unix-like and written with C++14. I’m taking examples from Linux, SeaOS, EscapeOS, ToaruOS and others similar projects,…we’ll see what will come out of it.

Envolve will replace EvangelionNG, the current kernel, the one based on the Ghost Kernel.

POSIX framework update

Updated the POSIX framework on the MeetiX’s libc. Now the system supports pthread wrapped on the native api to create and manage the threads.

Avaible and working functions:

  • int pthread_attr_init(pthread_attr_t *attr)
  • int pthread_set_detachstate(pthread_attr_t *attr, int detachstate)
  • int pthread_attr_destroy(pthread_attr_t *attr)
  • int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);
  • int pthread_join(pthread_t *thread, void **retval)
  • pthread_t *pthread_self()
  • int pthread_kill(pthread_t *thread, int sig)
  • void pthread_exit(void *value)

Updated the stress command, implemented the test code for native threads and posix threads.

EvangelionNG update

Yeaaaah, finally after 2 years where the kernel has not been able to deallocate the dead threads / processes now this utopian dream has finally become reality. Today was the opportunity to make a kernel version jump from fossilized 2.1.0.s to 2.3.0.i.

In which case I implemented a new simple as stupid command to test the proper functioning of this new kernel update. the command is called: stress and at the moment only the “–heap” option is implemented.

I cleared the documentation, i will rewrite it.

MeetiX OS 0.7.1

Hi everyone, I finally finished the heavy work I set out to do before adding anything extremely important as the updates listed in the last postor revisit a bit all the kernel / libraries code, order and comment on it well, so I can preserve me to write too much of documentation.

  • Rewrited all the commands and added a new one:  ntf, to send a notification to the desktop and show a graphics popup on the screen, like the UItweak.
  • Removed the EvaQuery interface, in favor of separate calls:
    uint32_t GetThreadCount();
    uint32_t GetThreadCountT(ThreadType type);
    uint32_t GetThreadTids(Tid *buffer, uint32_t length);
    uint32_t GetThreadTidsT(Tid *buffer, uint32_t length, ThreadType type);
    uint8_t GetThreadDescriptor(Tid id, ThreadDescriptor *descriptor);
    uint32_t GetProcessCount();
    uint32_t GetProcessPids(Pid *buffer, uint32_t length);
    uint8_t GetProcessDescriptor(Pid id, ProcessDescriptor *descriptor);
    uint32_t GetPciDeviceCount();
    uint8_t GetPciDevice(uint32_t position, PciDeviceHeader *header);
  • Now the window server is considered a server, so it has been moved to /sys/eva/server and its dependency files (backgrounds, cursors, etc …) have been moved to /cfg/gui/.
  • Added getopt to the C library
  • Added IPCstream to the utils library
  • Removed the FileKernelLog interface
  • Lot of other minor things, check the diffs on GitHub

I know there are lot of new bugs, but are due to the window server (with which I don’t waste any more time because i still rewriting a new one) and to the ramdisk driver which cause memory corruptions (within some versions its use will be reduced with the introduction of the ISO9660 fs). For this update I decided to avoid to post a new iso, too much unstable.

 

Next development goals

I finally got rid of a very heavy personal commitment, now I will intensify the development of MeetiX OS, which has long been inexorably stopped.

I intend to slowly apply these new updates to the system:

Kernel:

  • Priority and preemptive task schedulation.
  • Cpu usage and frequency calculation.
  • Process deallocation.
  • Shutdown & reboot.
  • Multi User support.

Driver:

  • weNET: Window Environment Network, a new GUI compositor server.
  • Envfs: to manage environment variables on multiuser.
  • Procfs: procfs like the unix-like systems.
  • Read Atapi: to read on physical drives.
  • Iso9660: to read from real cd.
  • VirtualBox guest addiction.
  • Sound and intel AC97.
  • Dynamic linking.

Libraries:

  • Application: standardized and singletone class to create gui application.
  • libDriver: interface library to create and communicate with drivers.
  • Libc: time and getopt implementation.
  • IPCstream: class for high-level IPC.

User space:

  • Multisession support: multiple indipendent user session (no multi desktop).
  • Interpreter for the Mx++ scripting language (integrated into the mx shell).
  • MXterm: the new terminal interface of MeetiX.
  • Remove CandyShell and CandyTerminal.
  • Mx as the default system shell.
  • JavaScript applications.
  • Gui TaskManager.
  • Tetris game.
  • Pong game.

Development pack:

  • GCC and Binutils update to at least 6.3 version, preferred version 7.x
  • Use Scons or make to build sources, no more bash.
  • Documentation.