Minep [Mon, 15 Aug 2022 15:03:09 +0000 (16:03 +0100)]
feat: rename(2), mount(2) and unmount(2)
fix: dnode caching hash function
chore: code clean up
Minep [Sun, 14 Aug 2022 16:03:52 +0000 (17:03 +0100)]
the sata slides
Minep [Sun, 14 Aug 2022 15:55:14 +0000 (16:55 +0100)]
refactor: synchronize the vfs objects
chore: minor tweaks, fixes, and annotations
Minep [Sun, 14 Aug 2022 00:19:55 +0000 (01:19 +0100)]
Merge branch 'vfs-dev'
Minep [Sun, 14 Aug 2022 00:14:07 +0000 (01:14 +0100)]
feat: lru eviction policy on page caches
refactor: interface to file operations operats on inode only, not v_file itself
enhance: enforce more strict compiler options for code quality
chore: tweaks that make compiler happy
Minep [Fri, 12 Aug 2022 12:17:22 +0000 (13:17 +0100)]
refactor: kernel space yield() for controllable, flexible task switching
fix: incorrect control flow in getcwd(2) syscall
Minep [Wed, 10 Aug 2022 12:31:26 +0000 (13:31 +0100)]
feat: support per-process current working directory (cwd)
fix: typo in README
Minep [Tue, 9 Aug 2022 15:43:59 +0000 (16:43 +0100)]
update readme
Minep [Tue, 9 Aug 2022 15:09:18 +0000 (16:09 +0100)]
Merge branch 'master' into vfs-dev
Minep [Tue, 9 Aug 2022 15:08:11 +0000 (16:08 +0100)]
fix: remove unwanted interrupts during disk init and probing process.
Minep [Tue, 9 Aug 2022 14:29:17 +0000 (15:29 +0100)]
Merge branch 'master' into vfs-dev
Minep [Tue, 9 Aug 2022 14:25:19 +0000 (15:25 +0100)]
fix: incorrect settings of msi registers.
fix: enable correct hba interrupt for indicating end of transfer.
Minep [Tue, 9 Aug 2022 12:34:37 +0000 (13:34 +0100)]
feat: stdin/stdout into process
Minep [Mon, 8 Aug 2022 23:44:33 +0000 (00:44 +0100)]
fix: refining the tty input
Minep [Mon, 8 Aug 2022 16:15:45 +0000 (17:15 +0100)]
feat: hook up the keyboard input into our vfs
feat: general fifo buffer (based on ring buffer) implementation
fix: make read/write syscall interruptible
refactor: remove the need of using loop for finding the suitable segregated list
Minep [Sun, 7 Aug 2022 16:23:20 +0000 (17:23 +0100)]
fix: separate any i/o to sequential device from caching layer
fix: a corner case on index resulting lookup fail in radix tree
fix: pass the incorrect argument to vfs_close when freeing up resources on destorying process
refactor: attach default file ops to inode for more flexible choice of ops when opening file
refactor: reduce the size of twifs_node.
Minep [Sat, 6 Aug 2022 17:35:00 +0000 (18:35 +0100)]
feat: page caching layer for vfs
refactor: replace all mem allocation with valloc
fix: read/write to block device now using byte offset value instead of sector offset
Minep [Tue, 2 Aug 2022 14:21:36 +0000 (15:21 +0100)]
feat: symlink(2) and realpathat syscall
feat: symbolic link following
Minep [Sun, 31 Jul 2022 16:15:38 +0000 (17:15 +0100)]
feat: implement dup(2), dup2(2)
fix: free & copy the fd tables upon process destoryed or forked
Minep [Sun, 31 Jul 2022 14:21:25 +0000 (15:21 +0100)]
feat: implement fsync(2) and hard link support [link(2)]
chore: update readme
chore: re-organise the syscall to appropriate header file
chore: minor refactoring and code cleaning
Minep [Sat, 30 Jul 2022 17:08:19 +0000 (18:08 +0100)]
feat: implement rmdir(2), unlink(2), unlinkat(2)
Minep [Sat, 30 Jul 2022 16:12:54 +0000 (17:12 +0100)]
feat: implement readlink(2) readlinkat(2)
refactor: pull the . and .. support to vfs level
chore: refactor and bug fixes
Minep [Sat, 30 Jul 2022 14:09:18 +0000 (15:09 +0100)]
feat: simple device abstraction layer
feat: integrate tty console into fs
refactor: timer now using cake allocator
refactor: adjust initialization sequence
chore: code clean up and minor refactoring
Minep [Fri, 29 Jul 2022 18:05:21 +0000 (19:05 +0100)]
update readme
Minep [Fri, 29 Jul 2022 16:04:02 +0000 (17:04 +0100)]
feat: lseek(2), read(2), write(2) implementation
feat: unified block device manipulation using vfs.
chore: bug fix & code formatting.
Minep [Wed, 27 Jul 2022 23:20:37 +0000 (00:20 +0100)]
feat: readdir fix and demo
Minep [Wed, 27 Jul 2022 16:01:23 +0000 (17:01 +0100)]
feat: open(2), close(2), mkdir(2) and readdir(2) syscall
feat: file descriptor support
feat: fast interge base 2 logarithm.
fix: incorrect cake piece number calculation in cake allocator
fix: incomplete refactoring in ahci code base
fix: file system mounting.
chores: code refactoring and cleaning
Minep [Sun, 24 Jul 2022 12:51:16 +0000 (13:51 +0100)]
feat: twifs - pseudo file system for lunaix kernel state exposure
feat: vfs_path_walk now capable to mkdir enroute, and handle malformed path.
feat: mkdir, open and close file.
feat: datetime to unix time conversion.
fix: some design consideration.
Minep [Wed, 20 Jul 2022 12:31:57 +0000 (13:31 +0100)]
feat: vfs - path walking and dnode caching.
feat: vfs - file system manager for extensible file system implementation.
feat: simple hash table implementation based on hash list.
Minep [Wed, 20 Jul 2022 12:28:21 +0000 (13:28 +0100)]
feat: block device support (mount device and partitions)
Minep [Wed, 20 Jul 2022 12:24:25 +0000 (13:24 +0100)]
refactor: change the disk io api to accept device instead of port struct
refactor: add vzalloc and make vcalloc sounds right.
chore: format code and renaming things
Minep [Thu, 7 Jul 2022 17:00:39 +0000 (18:00 +0100)]
Merge branch 'sata-ahci-dev'
Minep [Thu, 7 Jul 2022 16:59:35 +0000 (17:59 +0100)]
add pci-pcie slides and resources
Minep [Thu, 7 Jul 2022 16:52:37 +0000 (17:52 +0100)]
refactor: abstract out the code for prdte creation (by imposing a constrain on buffer size should not >4MiB)
fix: free the alloced dma memory when we done the io test
Minep [Thu, 7 Jul 2022 13:12:53 +0000 (14:12 +0100)]
feat: probe more device info
feat: add port reset support
fix: command is executed as CHS mode instead of LBA
fix: delivery of MSI
Minep [Wed, 6 Jul 2022 22:34:28 +0000 (23:34 +0100)]
Merge branch 'master' into sata-ahci-dev
Minep [Wed, 6 Jul 2022 22:34:09 +0000 (23:34 +0100)]
fix: remove the reference to unknown variable
Minep [Wed, 6 Jul 2022 22:28:18 +0000 (23:28 +0100)]
feat: sector rwm ops test code
feat: retry sending of command if failed
feat: hex dump
fix: wrong CDB sizing and ensure big-endian on scsi command.
chore: correct some comments and segregated class name
Minep [Tue, 5 Jul 2022 16:23:10 +0000 (17:23 +0100)]
feat: disk read/write support for both ATA and ATAPI device
feat: vcalloc and vcalloc_dma wrapper
refactor: no need tranverse down partial list when grabing a cake!
Minep [Tue, 5 Jul 2022 16:22:14 +0000 (17:22 +0100)]
update readme
add reference material
Minep [Tue, 5 Jul 2022 16:15:38 +0000 (17:15 +0100)]
Merge branch 'master' into sata-ahci-dev
Minep [Mon, 4 Jul 2022 23:11:16 +0000 (00:11 +0100)]
feat: ATAPI device capacity probing
feat: SCSI command set support
refactor: The driver code is very tricky! I have tried my best, however I mess it up :)
Minep [Mon, 4 Jul 2022 17:45:37 +0000 (18:45 +0100)]
remove explicit path dependency in makefile
Minep [Mon, 4 Jul 2022 15:02:11 +0000 (16:02 +0100)]
Merge branch 'master' into sata-ahci-dev
Minep [Mon, 4 Jul 2022 14:58:59 +0000 (15:58 +0100)]
update readme
Minep [Mon, 4 Jul 2022 12:05:04 +0000 (13:05 +0100)]
feat: Ability to send command to ATA device.
feat: Implementation of IDENTIFY (PACKET) DEVICE command issuing.
Minep [Sun, 3 Jul 2022 15:29:09 +0000 (16:29 +0100)]
feat: alignment option of cake allocator for dma buffer
fix: ensure a minimium dword alignment
chore: adjust comments, code clean up
Minep [Sun, 3 Jul 2022 12:29:37 +0000 (13:29 +0100)]
feat: cake (slab) allocator, for dynamic continuous physical page allocation
Minep [Wed, 29 Jun 2022 17:13:15 +0000 (18:13 +0100)]
chore: replacing obsolete SATA Specification Rev 1.0a with more recent Rev 3.2
Minep [Wed, 29 Jun 2022 14:30:59 +0000 (15:30 +0100)]
chore: edit readme
chore: add SATA reference material
Minep [Wed, 29 Jun 2022 14:07:03 +0000 (15:07 +0100)]
feat: spec-compliant AHCI HBA initialization
feat: detect device presence on hba port
fix: ioremap will disable caching on all mapped page.
refactor: releasing the reclaimable page when unlocking memory
Minep [Tue, 28 Jun 2022 23:15:35 +0000 (00:15 +0100)]
feat: AHCI probing
Minep [Tue, 28 Jun 2022 17:51:27 +0000 (18:51 +0100)]
feat: vmm_vmap/ioremap/iounmap to make MMIO more flexible and easy
fix: flush the screen when fault occurs.
chore: update the memory map accordingly.
Minep [Tue, 28 Jun 2022 12:08:18 +0000 (13:08 +0100)]
chore: corrections on readme and add disclaimer on copyrighted spec.
chore: add PCI material.
Minep [Tue, 28 Jun 2022 11:52:50 +0000 (12:52 +0100)]
feat: partial PCIe support (MCFG table parsing)
fix: stack overflow when performing PCI probing in QEMU Q35 machine type
chore: noting some emulator related issues.
chore: update readme.
Minep [Mon, 27 Jun 2022 22:13:10 +0000 (23:13 +0100)]
feat: BAR sizing and MSI configuration
refactor: Add some useful comments
Minep [Mon, 27 Jun 2022 18:09:49 +0000 (19:09 +0100)]
feat: MSI capability detection.
refactor: better interfacing and more compact pci device struct.
Minep [Mon, 27 Jun 2022 15:46:47 +0000 (16:46 +0100)]
update readme and pci material
Minep [Mon, 27 Jun 2022 14:35:27 +0000 (15:35 +0100)]
feat: PCI bus probing
fix: typo in ESC perfix for ANSI color code.
Minep [Mon, 27 Jun 2022 00:32:27 +0000 (01:32 +0100)]
update readme
Minep [Mon, 27 Jun 2022 00:24:40 +0000 (01:24 +0100)]
fix: race condition and partial state issue on injecting signal context into user stack
refactor: reduce the system timer frequency to 1024.
refactor: make the kprintf re-entrance and reduce the buffer size.
improve: better debugging experience with qemu.
improve: more information when debugging with iret.
Minep [Sun, 26 Jun 2022 19:23:18 +0000 (20:23 +0100)]
feat: new syscall: sigpending, sigsuspend
refactor: a dedicate process for handling console keystorke
refactor: better tracing on god-damned GP issue cause by iret
chore: cleaning and formatting.
Minep [Sat, 25 Jun 2022 21:52:08 +0000 (22:52 +0100)]
feat: a simple console that support scrolling.
Minep [Sat, 25 Jun 2022 20:46:23 +0000 (21:46 +0100)]
Merge branch 'console-dev'
Minep [Sat, 25 Jun 2022 15:31:57 +0000 (16:31 +0100)]
Merge branch 'master' of github.com:Minep/lunaix-os
Minep [Sat, 25 Jun 2022 15:28:16 +0000 (16:28 +0100)]
refactor: make the demos into dedicated files
fix: issues related to gcc optimization
fix: when kernel access user page that lead to pfault, it must not give up without checking the user space address.
chore: formatting
Minep [Fri, 24 Jun 2022 10:08:17 +0000 (11:08 +0100)]
feat: experimental tty console with scrollback buffer.
Lunaixsky [Wed, 22 Jun 2022 15:06:02 +0000 (16:06 +0100)]
Update README_en.md
Minep [Wed, 22 Jun 2022 15:04:57 +0000 (16:04 +0100)]
update readme
Minep [Tue, 21 Jun 2022 21:18:01 +0000 (22:18 +0100)]
slides for multitasking (ep10)
Minep [Tue, 21 Jun 2022 11:23:54 +0000 (12:23 +0100)]
feat: support for SIGALRM
feat: alarm(2) syscall
refactor: better sleep(3).
chore: rename the process state for compactness.
Minep [Mon, 20 Jun 2022 23:19:49 +0000 (00:19 +0100)]
feat: kill(2) implementation
feat: support more signal (SIGKILL, SIGSTOP, SIGCONT)
fix: [interrupt.S] change to callee-save register for safety
chore: formatting, renaming things
Minep [Mon, 20 Jun 2022 16:21:01 +0000 (17:21 +0100)]
Merge branch 'master' of github.com:Minep/lunaix-os
Minep [Mon, 20 Jun 2022 16:20:02 +0000 (17:20 +0100)]
Merge branch 'signal-dev'
Minep [Mon, 20 Jun 2022 16:19:11 +0000 (17:19 +0100)]
feat: pause(2) support
Lunaixsky [Sun, 19 Jun 2022 18:51:33 +0000 (19:51 +0100)]
Update README.md
Minep [Sun, 19 Jun 2022 17:56:28 +0000 (18:56 +0100)]
feat: signal support (tested!)
feat: signal demo.
Minep [Sun, 19 Jun 2022 12:00:12 +0000 (13:00 +0100)]
edit readme
Minep [Sun, 19 Jun 2022 10:49:56 +0000 (11:49 +0100)]
feat: User mode support.
feat: All physical page allocations are now on-demand and being managed by PF handler.
fix: Remove the 'garbage' mapping due to reserve area locking when initialize ACPI.
refactor: alloc_pid now change to alloc_process.
chore: annonation on issues that should be fixed
chore: formatting some code.
Minep [Sat, 18 Jun 2022 18:20:22 +0000 (19:20 +0100)]
refactor: re-structure the kernel address space for a more integral layout.
fix: spwan_proc0 invoking APIC functionality before it's initialization.
Minep [Sat, 18 Jun 2022 16:27:38 +0000 (17:27 +0100)]
chore: make things more general
refactor: put a limit on kernel heap.
refactor: reduce overhead on kernel stack creation when we fork into our first process.
Minep [Sat, 18 Jun 2022 10:16:23 +0000 (11:16 +0100)]
refactor: vmm_set_map has option to ignore existed mapping.
chore: optimize memcpy and memset with x86 feature.
Minep [Fri, 17 Jun 2022 23:04:09 +0000 (00:04 +0100)]
refactor: simplify the vmm design, single responsibility. But using it should with great attention!
refactor: some formatting on code style.
Minep [Fri, 17 Jun 2022 15:44:15 +0000 (16:44 +0100)]
refactor: keep in mind the stack layout is crucial. Move context switching & signal handling part into asm once for all.
Minep [Thu, 16 Jun 2022 16:20:38 +0000 (17:20 +0100)]
Merge branch 'master' into signal-dev
Minep [Thu, 16 Jun 2022 10:20:32 +0000 (11:20 +0100)]
fix: passing intr_ctx to soft_iret corrupts the stack of next proccess when performing context switching.
Minep [Wed, 15 Jun 2022 20:58:30 +0000 (21:58 +0100)]
refactor: formattings
fix: avoid setpgid on group leader
Minep [Wed, 15 Jun 2022 20:55:55 +0000 (21:55 +0100)]
Merge branch 'master' into signal-dev
Minep [Tue, 14 Jun 2022 10:05:14 +0000 (11:05 +0100)]
feat: pgid support
Minep [Mon, 13 Jun 2022 14:40:28 +0000 (15:40 +0100)]
feat: add signal handling support (not tested!)
Minep [Sat, 11 Jun 2022 23:25:28 +0000 (00:25 +0100)]
fix: The timer sequence stuck in infinite loop after series of delete operation
fix: To mitigate race condition, make the system call mask interrupt by default, and unmask when and only when needed.
improve: better debugging experience when GP happened due to the buggy iret!
Minep [Sat, 11 Jun 2022 17:12:37 +0000 (18:12 +0100)]
feat: The waitpid family!
feat: Ability to switch data segment
fix: Mitigated some race conditions
feat: Better way for process to yield current time slice.
Minep [Fri, 10 Jun 2022 21:43:01 +0000 (22:43 +0100)]
Merge branch 'master' of github.com:Minep/lunaix-os
Minep [Fri, 10 Jun 2022 21:37:05 +0000 (22:37 +0100)]
refactor: Move the kernel post init stage into proc0
refactor: Add a linter config. Resolved #1
refactor: Formatted some source files.
refactor: Shrink the process table size.
Lunaixsky [Tue, 7 Jun 2022 13:27:08 +0000 (14:27 +0100)]
Create LICENSE
Minep [Mon, 6 Jun 2022 12:08:54 +0000 (13:08 +0100)]
feat: No more kernel page table switching upon interrupt.
feat: 'wait' syscall implementation
feat: use linked list for chaining children process.
feat: Now the allocated memory can be recycled upon process destroy.
feat: Interruptible syscall.
refactor: correct the sbrk and brk naming.
refactor: process initialization.
fix: TLB caching stall the PTE rewrite which cause fork() fail randomly.
fix: Add new process state: CREATE to avoid race during process creation.
chores: annotations on future improvements & fixes.
Minep [Tue, 31 May 2022 20:43:35 +0000 (21:43 +0100)]
feat: added ability to identify process vm regions
feat: page fault handler for COW policy
refactor: improved system call declaration experience.
feat: more system call (sleep, _exit and other process related)
feat: add ability to detect orphan process.
Minep [Mon, 30 May 2022 23:23:05 +0000 (00:23 +0100)]
Kernel address space isolation and make the kernel heap global to all processes.
And featuring initd!
Minep [Mon, 30 May 2022 00:46:55 +0000 (01:46 +0100)]
basic process support and some syscalls
Minep [Thu, 19 May 2022 11:20:49 +0000 (12:20 +0100)]
add some references