Minep [Sun, 23 Oct 2022 01:34:09 +0000 (02:34 +0100)]
Merge branch 'master' into iso-9660
Minep [Sun, 23 Oct 2022 01:16:07 +0000 (02:16 +0100)]
fix: temporary disable the cse optimizations that cause kernel misbehave.
Minep [Sun, 23 Oct 2022 00:23:11 +0000 (01:23 +0100)]
fix: bugs related to O2 optimization
fix: change default optimization level to O1 as temp workaround.
Minep [Sat, 22 Oct 2022 00:13:59 +0000 (01:13 +0100)]
refactor: isrm to centeralize interrupt/irq resources management.
Minep [Fri, 21 Oct 2022 21:52:08 +0000 (22:52 +0100)]
laying out the iso9660 structure definitions
fix: switch the order of hash mangling, as it gives higher empirical collision rarity.
refactor: own primitive type shadowing, will be good for future portability.
Minep [Wed, 19 Oct 2022 22:30:32 +0000 (23:30 +0100)]
fix: PS/2 keyboard initialization sequence
fix: TLB should be invalidated after L2 page table is hooked.
change readme
Minep [Tue, 18 Oct 2022 23:11:28 +0000 (00:11 +0100)]
feat: integrate gdb support over serial port for bare-metal debugging.
Minep [Mon, 3 Oct 2022 21:11:00 +0000 (22:11 +0100)]
fix: remove unnecessary backtracing in mnt_mkbusy/chillax
fix: no need to do subtree reposition after symlink is resolved (for now).
Minep [Fri, 23 Sep 2022 11:54:15 +0000 (12:54 +0100)]
fix: missing sudo in toolchain build tool
Minep [Sat, 17 Sep 2022 18:10:33 +0000 (19:10 +0100)]
fix: load x87 fpu default settings
fix: forked child should inherit parent's x87 and mmx state
Minep [Sat, 17 Sep 2022 17:25:59 +0000 (18:25 +0100)]
feat: add support for process to conduct Intel x87 and MMX related task.
Minep [Sat, 17 Sep 2022 13:08:47 +0000 (14:08 +0100)]
refactor: script to generate code for interrupt installation
Minep [Sat, 17 Sep 2022 11:30:46 +0000 (12:30 +0100)]
Merge branch 'device-sys'
Minep [Sat, 17 Sep 2022 11:30:24 +0000 (12:30 +0100)]
fix: dnode cache syncing for pseudo fs
Minep [Fri, 16 Sep 2022 09:48:46 +0000 (10:48 +0100)]
add code-topic mapping for better learning experience. close #5
Minep [Wed, 31 Aug 2022 13:50:03 +0000 (14:50 +0100)]
feat: simple read/write lock implementation
feat: mutex lock owenership checking
feat: mount points export
chore: cleanups and fixes
Minep [Tue, 30 Aug 2022 12:20:39 +0000 (13:20 +0100)]
feat: support ioctl() syscall for direct control to devices
feat: add ascii control code support to lunaix tty driver
feat: expose the syscall interface of getpgid() and setpgid()
fix: race condition when issuing SIGINT to process group.
fix: dead lock when a process get terminated while it is holding the inode lock
fix: double freeing the v_file object when terminating a process which it's fd is dup()ed from it's parent process.
todo: taskfs is still problematic..
chore: fixes and refactor.
Minep [Mon, 29 Aug 2022 12:53:49 +0000 (13:53 +0100)]
feat: taskfs for export process to filesystem
chore: refactor, fixes and cleanup
Minep [Sat, 27 Aug 2022 12:13:52 +0000 (13:13 +0100)]
refactor: clean up the virtual memory mappings
chores: other code clean up
Minep [Fri, 26 Aug 2022 16:43:06 +0000 (17:43 +0100)]
feat: (twimap) provide an easy way for mapping kernel objects into filesystem
feat: map pci, clock, cake allocator and block devices into filesystem.
chore: fixes and clean up
Minep [Thu, 25 Aug 2022 15:04:33 +0000 (16:04 +0100)]
feat: a file system mapping for pci devices
chore: some fixes around and cleanup.
Minep [Wed, 24 Aug 2022 16:18:24 +0000 (17:18 +0100)]
refactor: improve on scrolling experience in lunaix console
fix: handle the strange scan code sequence on Virtualbox's PS/2 keyboard.
fix: incompatible pointer type passing in devfs.
chore: refactoring and clean up.
Minep [Tue, 23 Aug 2022 11:55:38 +0000 (12:55 +0100)]
feat: a pseudo shell environment for basic interacting and testing purpose
chore: fixes and clean up
Minep [Mon, 22 Aug 2022 15:41:45 +0000 (16:41 +0100)]
refactor: add user space printf.
Minep [Mon, 22 Aug 2022 14:37:56 +0000 (15:37 +0100)]
feat: input device subsystem to resolve race condition on polling input
feat: simple wait queue implementation for efficient waiting.
fix: dead lock when invoking sched_yieldk() inside interrupt context.
chore: refactorings and clean up.
Minep [Sun, 21 Aug 2022 15:03:15 +0000 (16:03 +0100)]
feat: (devfs) a new filesystem for device exposure.
chore: fixes and refactorings.
Minep [Sat, 20 Aug 2022 18:48:37 +0000 (19:48 +0100)]
feat: mount point flags check
refactor: eliminate edge case when try to access parent of root.
chore: minor refactoring, clean-up and small fixes.
Minep [Sat, 20 Aug 2022 16:30:33 +0000 (17:30 +0100)]
feat: ability to manipulate extended attribute
chore: minor refactoring and fix.
Minep [Fri, 19 Aug 2022 19:14:02 +0000 (20:14 +0100)]
fix: symlink resolve.
refactor: add some invariants checks.
chore: minor refactors and clean up.
Minep [Fri, 19 Aug 2022 18:08:00 +0000 (19:08 +0100)]
refactor: add a simple ramfs for rootfs. Twifs should have more specific job in future.
refactor: inode creation, inode cache lookup and it's hashing are now separated.
refactor: reduce the v_inode and v_file size due to ops invariants.
chores: minor refactoring and fixings.
Minep [Thu, 18 Aug 2022 15:31:23 +0000 (16:31 +0100)]
refactor: send the command with retry and error detection
chore: other refactorings
Minep [Thu, 18 Aug 2022 11:34:03 +0000 (12:34 +0100)]
fix: READ_CAPACITY command for 12 bytes CDB SCSI device.
fix: PACKET command hangs in Virtualbox when try to write readonly drive.
fix: possible null pointer dereference in pcache_commit_all.
chore: attach cdrom into QEMU's IDE bus.
Minep [Wed, 17 Aug 2022 19:03:04 +0000 (20:03 +0100)]
refactor: mount system reworked
refactor: inode cache system reworked
chore: minor refactoring and fixes.
Minep [Tue, 16 Aug 2022 16:22:55 +0000 (17:22 +0100)]
feat: ability to evict dnode and inode cache
chore: minor fixes and refactoring
Minep [Tue, 16 Aug 2022 00:55:19 +0000 (01:55 +0100)]
refactor: inode hashing and reusing
fix: dnode referencing counter corrected
chore: minor fixes and refactoring
chore: todo-list for some essential fixes and improvments
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