Commit Graph

2436 Commits

Author SHA1 Message Date
Jonas 'Sortie' Termansen b705bf27a1 Fixed bug in MapRange{User,Kernel}. 2011-08-23 18:16:44 +02:00
Jonas 'Sortie' Termansen ea396ddd69 Libmaxsi now offers printf to user-space programs. 2011-08-23 01:32:49 +02:00
Jonas 'Sortie' Termansen 9db2c88aca Sortix can now load ELF executables into addresses spaces. 2011-08-23 00:42:56 +02:00
Jonas 'Sortie' Termansen e5eaf3eeb5 Added the MapRange virtual memory functions. 2011-08-23 00:33:57 +02:00
Jonas 'Sortie' Termansen b80195dc19 Implemented the new physical page allocator API. 2011-08-22 21:12:55 +02:00
Jonas 'Sortie' Termansen d392045559 Extended and documented the memory management API.
Physical paging have been extended with Page::Insert() and Page::GetStats()
which allows the physical paging system to add new pages to the physical page
allocator, and still keep the "free/used pages" count accurate, and providing
this information to the kernel (and user-space at some point).

The virtual memory API has been extended with RemapKernel(), RemapUser(),
MapRangeKernel(), UnmapRangeKernel(), MapRangeUser(), and UnmapRangeUser().
This huge number of related functions have been created in the hope that it
hides the internal complexity of portable virtual memory management and avoid
bugs. It is crucial that the correct group of functions are used when solving
a problem and that they are not mixed in a manner not documented.

I probably overdocumented the code - hopefully it should help avoiding making
stupid or bothersome code.

Another problem is that code calling Page::Get() often should call something
like Page::AlwaysGetPageEvenIfYouHaveToSwap(). I'd be swell to have a function
that always gets a page under heavily-swapping conditions. Possibly Page::Get()
could become that?
2011-08-22 21:05:10 +02:00
Jonas 'Sortie' Termansen 4c1cb806ba Added a sound api. 2011-08-22 00:25:28 +02:00
Jonas 'Sortie' Termansen 55e9d358cf Hello editor now doesn't require '[' in ANSI escape sequences. 2011-08-21 20:31:17 +02:00
Jonas 'Sortie' Termansen 47c44caa8d Fixed move-cursor-left bug in vgaterminal. 2011-08-21 12:52:56 +02:00
Jonas 'Sortie' Termansen 9ee93082c5 Hello is now a hello world sample ANSI text editor. 2011-08-21 12:52:56 +02:00
Jonas 'Sortie' Termansen 4db550c13b Added libmaxsi keyboard API, allowing user-space to use the keyboard. 2011-08-21 12:52:56 +02:00
Jonas 'Sortie' Termansen ed2b3cb5c9 Prevented user-space from issueing non-user-space interrupts. 2011-08-12 21:00:15 +02:00
Jonas 'Sortie' Termansen ec8c0c533b Removed accidentally included infinite debug loop in kernel.cpp. 2011-08-12 20:13:31 +02:00
Jonas 'Sortie' Termansen a2f70f358c Added linebreaks after maxsi logo. 2011-08-12 20:09:40 +02:00
Jonas 'Sortie' Termansen 9995354f95 Moved CPU code shared by x86 and x64 into x86-family. 2011-08-12 17:33:18 +02:00
Jonas 'Sortie' Termansen 4728809c00 The serial terminal now clears the screen using ANSI when initialized. 2011-08-12 17:29:45 +02:00
Jonas 'Sortie' Termansen 64d191a882 x86 now has a driver for rebooting. 2011-08-12 15:13:18 +02:00
Jonas 'Sortie' Termansen fe65e12992 Removed unnededed TLB flush from libmaxsi heap code. 2011-08-12 00:55:48 +02:00
Jonas 'Sortie' Termansen 15ce53919c Added VGA API allowing userspace to easily access 0xB8000. 2011-08-11 22:03:13 +02:00
Jonas 'Sortie' Termansen 1026354e98 Sortix now uses the Device class.
This class is very WIP and is just experimental.
2011-08-08 15:20:08 +02:00
Jonas 'Sortie' Termansen e95eb60d31 Provide a virtual address where pages can be temporarily mapped. 2011-08-08 15:20:02 +02:00
Jonas 'Sortie' Termansen 6ae7ddbcb3 Descriptors are now public members in processes. 2011-08-08 15:20:02 +02:00
Jonas 'Sortie' Termansen 412d3e78b2 AlignDown and AlignUp aligns an address on a page boundary. 2011-08-08 15:20:02 +02:00
Jonas 'Sortie' Termansen e78443d92a Processes now keep track of where their code section ends.
This is very hacky, but allows us to allocate address space.
2011-08-08 15:19:49 +02:00
Jonas 'Sortie' Termansen db34033d40 Removed unneeded #includes from sortix/memorymanagement.cpp. 2011-08-07 20:14:26 +02:00
Jonas 'Sortie' Termansen 07b409c1a0 Added a wrapper class for handling file descriptors. 2011-08-07 19:47:43 +02:00
Jonas 'Sortie' Termansen e78390d9c2 Added a line counting make target for statistics. 2011-08-07 03:02:37 +02:00
Jonas 'Sortie' Termansen 206a7993f3 Such that the sortix subdir is git'd too. 2011-08-07 01:38:51 +02:00
Jonas 'Sortie' Termansen acd2ae58c6 And the c/h/sys dir too.. 2011-08-07 01:37:43 +02:00
Jonas 'Sortie' Termansen a4c2afedb7 libmaxsi now creates the c/h dir if missing. 2011-08-07 01:36:27 +02:00
Jonas 'Sortie' Termansen 294e5d72dd All of the initrd is now loaded. 2011-08-07 01:30:47 +02:00
Jonas 'Sortie' Termansen 794630a802 Adding proper .gitignore files. 2011-08-07 01:22:36 +02:00
Jonas 'Sortie' Termansen 185c6d4b6f Processes (and thus threads) now belong to an address space.
Changing theads now automatically switches the adress space.
2011-08-07 01:17:53 +02:00
Jonas 'Sortie' Termansen 90ebfe7f0a Improvements to the address space switching function.
It now only switches when needed and returns the old addr space.
2011-08-07 01:16:53 +02:00
Jonas 'Sortie' Termansen 66c058fba1 Refactored virtual memory management, making it less buggy.
uintptr_t is now replaced with addr_t when referring to physical memory
addresses in Sortix. Many bugs in the previous memory management code have been
fixed. The new interface is less flexible - but should prove more solid as the
nasty internals have been hidden away. The current interface design should also
make the code more 64-bit ready/friendly. And so on.
2011-08-07 00:18:41 +02:00
Jonas 'Sortie' Termansen 9b79673dcb Initial version of Sortix. 2011-08-05 14:25:00 +02:00