|
c2cdb861c9
|
kernel/ATA: Fix buffer overflow in ATADevice::read() with small sizes and unaligned offsets
|
2023-06-17 00:48:53 +02:00 |
|
|
27b26f389c
|
kernel: Lock ATADevice::read_lba() using ATA::Channel's KMutex
continuous-integration/drone/push Build is passing
|
2023-06-17 00:22:38 +02:00 |
|
|
32d2e0e6b7
|
kernel: Remove register_special_device()'s name parameter
continuous-integration/drone/push Build is passing
This is now duplicate information that can be queried using device->device_path().
|
2023-06-16 21:46:51 +02:00 |
|
|
ba46399bbd
|
kernel/ATA: Remove debug messages
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
|
2023-06-16 21:34:36 +02:00 |
|
|
738b218a49
|
kernel/ATA+MBR: Dynamically generate device names + create devices for MBR partitions
continuous-integration/drone/pr Build is passing
|
2023-06-16 21:30:50 +02:00 |
|
|
72b8ebe02c
|
kernel: Make the MBR code read from a device instead of an inode
continuous-integration/drone/pr Build is failing
|
2023-06-16 21:10:33 +02:00 |
|
|
72e798cedb
|
kernel: Do not automatically read the MBR partition table from /dev/cdrom
Since ff952cfe16 made /dev mounted from userspace, /dev/cdrom does not exist when ATA drives are scanned.
|
2023-06-16 21:10:33 +02:00 |
|
|
7593947c33
|
kernel/ATA: Route interrupts to the correct drive
|
2023-06-16 21:10:33 +02:00 |
|
|
93922932fa
|
kernel: Start reading the MBR partition table from the ATAPI drive
|
2023-06-16 21:10:33 +02:00 |
|
|
a3beaa4d53
|
ATA: Mark the CDROM as a block device
|
2023-06-16 21:10:33 +02:00 |
|
|
bb0db450b3
|
kernel/ATA: Pass extra information to DeviceRegistry
This is needed since merging e7d482e from main.
|
2023-06-16 21:10:33 +02:00 |
|
|
a0fa1f2cfd
|
kernel+init: Create a device node in /dev to access the CDROM from userspace!
Still using PIO, though.
|
2023-06-16 21:10:33 +02:00 |
|
|
2fa11a5ae3
|
kernel/ATA: Read the CDROM's first sector using ATAPI PIO!!
Sadly, for some reason, DMA is not working right now.
This is a problem, as PIO is inconvenient. But hey, it works for now!
|
2023-06-16 21:10:32 +02:00 |
|
|
cc8450751c
|
kernel/x86_64: Implement writing to PCI fields
|
2023-06-16 21:10:32 +02:00 |
|
|
3762d3f959
|
kernel/PCI: Add bit enum for the Command field
|
2023-06-16 21:10:32 +02:00 |
|
|
a99c5e325d
|
kernel: Actually register interrupt handlers properly
|
2023-06-16 21:10:32 +02:00 |
|
|
82db0e39ea
|
kernel/ATA: Calculate block sizes for ATA devices as well
|
2023-06-16 21:10:32 +02:00 |
|
|
46c45068e0
|
kernel/ATA: Send a READ CAPACITY packet to an ATA drive on initialization
|
2023-06-16 21:10:32 +02:00 |
|
|
cfcde5af55
|
kernel/ATA: Read the PCI Busmaster registers and start preparing for DMA
|
2023-06-16 21:10:31 +02:00 |
|
|
268252c89e
|
kernel/ATA: Read the Busmaster base port and verify it
|
2023-06-16 21:10:31 +02:00 |
|
|
5d16754632
|
kernel: Handle device BARs properly
|
2023-06-16 21:10:31 +02:00 |
|
|
6307b01689
|
kernel/ATA: Read ATA strings properly instead of backwards
Now we can see the model string. What does it say...
"QEMU DVD-ROM". Let's go!
|
2023-06-16 21:10:31 +02:00 |
|
|
e118c9ea0d
|
kernel/ATA: Implement enough to send an IDENTIFY command and read the model number :)
|
2023-06-16 21:10:31 +02:00 |
|
|
ee691bbb0f
|
kernel/ATA: Handle drive IRQs in compatibility mode
|
2023-06-16 21:10:31 +02:00 |
|
|
739950e8f0
|
kernel/CPU: Allow passing arbitrary data to interrupt handlers
|
2023-06-16 21:10:31 +02:00 |
|
|
3a84127fd6
|
kernel/ATA: Start reading/writing registers and detecting drives
|
2023-06-16 21:10:30 +02:00 |
|
|
e8507d23ee
|
kernel: Warn if no ATA controller is found
|
2023-06-16 21:10:30 +02:00 |
|
|
d9a1e8a980
|
kernel: Add a KMutex class and use that for ATA::Controller locking
|
2023-06-16 21:10:30 +02:00 |
|
|
7efc6dc985
|
kernel/x86_64: Add basic ATA controller and channel identification
|
2023-06-16 21:10:30 +02:00 |
|
|
beeafb73e6
|
kernel/PCI: Add more PCI field types
|
2023-06-16 21:10:30 +02:00 |
|
|
f0caf010bf
|
kernel/x86_64: Add a way to register IRQ handlers from other kernel subsystems
|
2023-06-16 21:10:26 +02:00 |
|
|
d0b65674e6
|
kernel: Fix 0-delay sleeps blocking the thread forever
|
2023-06-08 19:57:38 +02:00 |
|
|
3283991ec6
|
kernel: Keep the old Timer::ticks_ms() API.
continuous-integration/drone/push Build is passing
Removing this API broke the ATA branch.
|
2023-06-03 21:02:18 +02:00 |
|
|
8bcec00a9d
|
kernel: Change the timer subsystem to use timespecs natively
continuous-integration/drone/push Build is passing
|
2023-06-03 13:15:10 +02:00 |
|
|
1090815c8d
|
kernel: Honor the sticky bit
|
2023-06-03 11:55:10 +02:00 |
|
|
ff952cfe16
|
kernel+init: Let userspace control devfs mountpoints
continuous-integration/drone/push Build is passing
|
2023-06-02 21:45:31 +02:00 |
|
|
11a4f8cc90
|
kernel: Wake the parent process when a child exits because of a page fault
|
2023-05-28 21:50:13 +02:00 |
|
|
88d1da59e8
|
kernel+libc: Add access()
continuous-integration/drone/push Build is passing
|
2023-05-27 12:04:27 +02:00 |
|
|
bd8aaa917f
|
kernel+libc+ln: Add support for userspace hard link creation
continuous-integration/drone/push Build is passing
|
2023-05-27 11:32:40 +02:00 |
|
|
a98e9e8009
|
kernel: Add /dev/full
continuous-integration/drone/push Build is passing
|
2023-05-27 10:42:45 +02:00 |
|
|
b0506bf88f
|
kernel: Add umask
continuous-integration/drone/push Build is passing
|
2023-05-26 22:27:49 +02:00 |
|
|
d89a823924
|
kernel: Return EACCES when trying to chdir to an unaccessible directory
|
2023-05-26 20:49:13 +02:00 |
|
|
cba0a23db9
|
kernel: Make the framebuffer a block device
continuous-integration/drone/push Build is passing
|
2023-05-26 20:36:35 +02:00 |
|
|
7cdb967730
|
kernel: compilation fix
continuous-integration/drone/push Build is passing
|
2023-05-26 20:30:39 +02:00 |
|
|
62e14e7580
|
kernel+libos+apps: Support block devices and disallow seeking character devices or pipes
continuous-integration/drone/push Build is failing
|
2023-05-26 20:27:47 +02:00 |
|
|
3a51807fa6
|
kernel+stat: Handle pipes correctly in stat()
continuous-integration/drone/push Build is passing
|
2023-05-23 20:54:25 +02:00 |
|
|
9cdfdbc6f9
|
kernel: Handle unnamed pipes in stat()
continuous-integration/drone/push Build is failing
|
2023-05-23 20:49:26 +02:00 |
|
|
1094042a7d
|
kernel: Implement st_dev and st_rdev
continuous-integration/drone/push Build is failing
|
2023-05-23 20:45:24 +02:00 |
|
|
1a6ad11462
|
kernel+libc+libos+ls: Add readlink()
continuous-integration/drone/push Build is passing
|
2023-05-23 15:42:38 +02:00 |
|
|
67a9d130e2
|
kernel: Add initial support for symbolic links :D
|
2023-05-20 21:49:24 +02:00 |
|
|
01111442d3
|
kernel: Add the getrusage() system call
|
2023-05-20 12:48:07 +02:00 |
|
|
1506331872
|
kernel+libc: Add the pstat() system call
Luna-specific, but I like it.
|
2023-05-18 21:48:47 +02:00 |
|
|
84bed3ceb3
|
kernel+libc: Remove mknod()
continuous-integration/drone/push Build is passing
Now that we automatically create files in /dev, mknod() is not needed anymore.
|
2023-05-18 19:42:14 +02:00 |
|
|
d7c563aebd
|
kernel: Add reference counting for mounts
continuous-integration/drone/push Build is passing
This will make sure we cannot unmount a file system while there is another one mounted inside it.
|
2023-05-18 16:22:31 +02:00 |
|
|
3a73d49aa1
|
kernel: Remove a mount from the mountpoint list after unmounting it
|
2023-05-18 16:18:09 +02:00 |
|
|
8f6bd29da3
|
kernel: Make file system reference counting work for current directories
continuous-integration/drone/push Build is passing
Also, make pipes usable again.
|
2023-05-17 20:37:01 +02:00 |
|
|
1f4c4928cc
|
kernel+libc+apps: Add mount and umount syscalls, libc wrappers, and utilities
continuous-integration/drone/push Build is passing
|
2023-05-17 20:30:15 +02:00 |
|
|
29174ca228
|
kernel/VFS: Add a way to unmount file systems
|
2023-05-17 19:52:26 +02:00 |
|
|
e7d482e78a
|
kernel+init: Add a VFS mount system and auto-populate the devfs
|
2023-05-17 19:40:37 +02:00 |
|
|
64d0f30bd9
|
kernel: Disallow write-related flags when opening a directory, not only when the directory flag is set
continuous-integration/drone/push Build is passing
Also return EISDIR instead of EINVAL as that is what Dr. POSIX mandates.
|
2023-05-11 21:29:49 +02:00 |
|
|
411c6c40cd
|
kernel: Add the fchmodat() and fchownat() system calls
continuous-integration/drone/push Build is passing
|
2023-05-11 19:49:03 +02:00 |
|
|
efc6d03f23
|
kernel+libc: Add support for unnamed pipes
continuous-integration/drone/push Build is passing
|
2023-05-10 22:48:31 +02:00 |
|
|
1a2fce5316
|
kernel+libc: Add the O_TMPFILE open flag and the tmpfile() function
continuous-integration/drone/push Build is passing
|
2023-05-09 22:04:34 +02:00 |
|
|
4753e80583
|
kernel: Make DeviceRegistry store the created devices instead of creating them when requested
continuous-integration/drone/push Build is passing
|
2023-05-09 18:31:27 +02:00 |
|
|
916a73ca95
|
kernel: Rework the timer subsystem to count in microseconds
continuous-integration/drone/push Build is passing
|
2023-05-07 21:51:36 +02:00 |
|
|
9bab4c62a1
|
kernel: Compilation fixes
continuous-integration/drone/push Build is passing
|
2023-05-07 21:42:03 +02:00 |
|
|
72dadc6706
|
kernel: Define a constant to check for default memory access
continuous-integration/drone/push Build is failing
|
2023-05-07 21:38:38 +02:00 |
|
|
b25e212880
|
kernel: Make a generic function for checking memory flags
continuous-integration/drone/push Build is failing
|
2023-05-07 21:37:01 +02:00 |
|
|
77560bbc3e
|
kernel+tools: Allow loading files with different owners + add a more dynamic install script
continuous-integration/drone/push Build is passing
|
2023-05-06 12:11:35 +02:00 |
|
|
9184bbfef6
|
kernel: Disallow passing O_WRONLY and O_DIRECTORY at the same time
continuous-integration/drone/push Build is passing
|
2023-05-05 18:53:50 +02:00 |
|
|
d9d8f7cdc7
|
kernel: Remove unused headers from main.cpp
continuous-integration/drone/push Build is passing
|
2023-05-04 23:59:46 +02:00 |
|
|
293a992133
|
kernel: Add a kernel_wait_for_event() function to avoid weird calls to kernel_wait in kthreads
continuous-integration/drone/push Build is passing
|
2023-05-04 23:43:00 +02:00 |
|
|
4a7f68b989
|
kernel: Add a convenience wake_up() function
|
2023-05-04 23:35:54 +02:00 |
|
|
3a1c22bb93
|
kernel: Add keyboard combinations for debug information dumps
Ctrl+Alt+E: Dump threads
Ctrl+Alt+M: Dump memory usage
Ctrl+Alt+H: Dump heap state
|
2023-05-04 23:32:48 +02:00 |
|
|
3ed9e578c7
|
kernel/x86_64: Wake the IO thread up only when there is an IO event, instead of polling every 10 ms
|
2023-05-04 23:07:09 +02:00 |
|
|
96f3d29d37
|
kernel: Tell the reap thread to run when it's needed, instead of checking every 200 ms
|
2023-05-04 23:06:00 +02:00 |
|
|
42eb0a1d74
|
kernel: Freeze waitpid()'s calling thread until a child tells us it's done, instead of polling it every 10 ms
|
2023-05-04 23:03:31 +02:00 |
|
|
4616997f5b
|
kernel: Store a thread's parent directly instead of its parent's PID
|
2023-05-04 22:58:04 +02:00 |
|
|
44e4ca804a
|
kernel: Make sure argument vectors passed to execve() are not too big
|
2023-05-04 16:36:24 +02:00 |
|
|
abaf24d0da
|
kernel/CPU: Move some stuff to StringView
|
2023-05-03 17:35:46 +02:00 |
|
|
7058ec945a
|
libluna: Use a String for name and handle prefix correctly in TarStream
|
2023-05-02 10:51:53 +02:00 |
|
|
3e277b5d6f
|
libos: Introduce os::Directory
|
2023-04-28 21:16:43 +02:00 |
|
|
0c1d33f2ec
|
kernel: Move some files into subdirectories
continuous-integration/drone/push Build is passing
|
2023-04-28 15:55:06 +02:00 |
|
|
52ce4b28aa
|
Scheduler: Remove redundant check in for_each_child
continuous-integration/drone/push Build is passing
|
2023-04-28 15:22:16 +02:00 |
|
|
7b4cfd52cd
|
Scheduler: Don't search threads spawned before the current thread to find children
continuous-integration/drone/push Build is passing
Children will always be spawned later (and thus have a higher PID) than their parent.
|
2023-04-28 15:19:01 +02:00 |
|
|
bcdec62f51
|
kernel: Allow returning early from Scheduler::for_each_child
|
2023-04-28 15:13:53 +02:00 |
|
|
77dcfab5ef
|
kernel: Run the initialization process in a thread
continuous-integration/drone/push Build is passing
This way we can give it more stack and also reclaim it later!
|
2023-04-28 13:23:07 +02:00 |
|
|
24f4ce9669
|
kernel: Only allow Ctrl+D on an empty line
|
2023-04-26 20:42:26 +02:00 |
|
|
099f6131d1
|
kernel: Avoid printing control characters that we don't have a special meaning for
|
2023-04-26 20:42:08 +02:00 |
|
|
97e9fceaa4
|
kernel+libc: Add dup2()
continuous-integration/drone/push Build is passing
|
2023-04-25 20:37:30 +02:00 |
|
|
403b0f6b94
|
kernel+libc+init: Add a way to modify the system hostname
continuous-integration/drone/push Build is passing
|
2023-04-24 21:20:44 +02:00 |
|
|
9eab0886b6
|
kernel+libc: Add uname()
continuous-integration/drone/push Build is passing
|
2023-04-24 20:34:44 +02:00 |
|
|
5d56638851
|
kernel: Ignore all non-bootstrap processors
continuous-integration/drone/push Build is passing
|
2023-04-22 12:25:43 +02:00 |
|
|
60694f651f
|
kernel/ELF: Remove unused include
continuous-integration/drone/push Build is passing
|
2023-04-22 12:20:30 +02:00 |
|
|
2acd2ed75d
|
kernel/ELF: Avoid zeroing out memory twice
continuous-integration/drone/push Build is passing
|
2023-04-22 12:19:22 +02:00 |
|
|
4f6e020196
|
kernel+libc: Add framebuffer ioctls
continuous-integration/drone/push Build is passing
|
2023-04-21 18:25:53 +02:00 |
|
|
841fc25137
|
kernel+init: Add a framebuffer special device file
continuous-integration/drone/push Build is passing
|
2023-04-21 18:18:15 +02:00 |
|
|
02f8a50b9d
|
kernel: Replace unlink() with unlinkat()
continuous-integration/drone/push Build is passing
|
2023-04-18 19:36:29 +02:00 |
|
|
e466c51e9f
|
kernel: Also zero out mmap-ed pages
continuous-integration/drone/push Build is passing
|
2023-04-17 22:16:27 +02:00 |
|
|
95659639e5
|
kernel: Zero out allocated memory for userspace to avoid leaking sensitive data
continuous-integration/drone/push Build is passing
|
2023-04-17 20:11:07 +02:00 |
|