Bananymous
c0029a2fa2
Kernel: Don't map kernel executable memory as writable
2023-07-21 11:17:39 +03:00
Bananymous
4e35b8b49d
Kernel: Syscalls now get the interrupt stack
2023-07-21 11:04:16 +03:00
Bananymous
21c6135ae2
BAN: Fix function call in Optional
2023-07-21 10:57:46 +03:00
Bananymous
b02c486ad0
Kernel: add NullDevice to /dev/null
2023-07-20 00:06:22 +03:00
Bananymous
08cd285ca6
Kernel: move Device.h to its own directory
2023-07-19 23:55:38 +03:00
Bananymous
94af856db0
Kernel: cleanup sys_exec()
...
We now scope everyting so desctructors get called
2023-07-19 23:20:39 +03:00
Bananymous
bf5d74b8bc
Kernel: fix memory leak in PageTable
...
PageTable used to leak 2 pages on creation and other two on deletion
2023-07-19 23:17:39 +03:00
Bananymous
fd9210ba9e
Kernel: FixedWidthAllocator creation can now fail
2023-07-19 18:07:24 +03:00
Bananymous
66d9260257
Kernel: VirtualRange creation can fail
2023-07-19 17:56:26 +03:00
Bananymous
5d2bfc858e
Kernel: SYS_FORK can now fail instead of panicing on error
2023-07-19 17:47:12 +03:00
Bananymous
8b34880064
Kernel: Fix bug which made bochs unbootable
...
We could not boot if ATABus did not have valid primary device.
2023-07-13 15:53:09 +03:00
Bananymous
98c698d9ec
Kernel: Enable global bit on kernel pages
2023-07-13 15:23:25 +03:00
Bananymous
9ea2c1d932
Kernel: Support execute disable bit
...
We will now map executable memory explicitly as executable.
2023-07-13 14:28:53 +03:00
Bananymous
297e65f19a
Kernel: CPUID can detect wether cpu supports nxe bit
2023-07-13 14:24:58 +03:00
Bananymous
65559a3e44
Kernel: Fix multiple bugs with terminal
2023-07-13 13:09:52 +03:00
Bananymous
c3a71e94a9
Kernel: Fix ATA disk and partition numbering
2023-07-13 12:12:47 +03:00
Bananymous
fb4b363a16
Init: Use the new pwd.h api for user parsing
2023-07-13 12:01:41 +03:00
Bananymous
4154f43b49
LibC: add getpwname() and getpwuid()
2023-07-13 12:01:16 +03:00
Bananymous
b1fcb0b58f
LibC: implement endpwent(), getpwent() and setpwent()
2023-07-13 11:22:09 +03:00
Bananymous
00409ffa60
Kernel: Ext2Inode::create_file actually sets the inode data
...
We used to just create inode without touching its memory.
2023-07-13 10:20:56 +03:00
Bananymous
16acd50559
BAN: Iterators are now single general type with CONST template
...
This allows us to use the same base class for iterator and
const_iterator which were practically the same code.
2023-07-12 13:35:21 +03:00
Bananymous
5df48804e1
BAN: add either_or and either_or_t
...
This allows you to select type depending on constexpr evaluatable
boolean
2023-07-12 13:34:31 +03:00
Bananymous
9eab6710ce
BAN: Implement ConstIteratorDouble and add it to HashMap
...
This is same as IteratorDouble except it uses const_iterator and does
not return non-const references.
2023-07-12 11:41:05 +03:00
Bananymous
65424a6769
BAN: Generalize HashMapIterator to IteratorDouble
...
This iterator should be able to iterate any container within container
with type iterator defined.
This also fixed bug if first entry in outer container is empty container.
2023-07-12 09:29:05 +03:00
Bananymous
12d53ac233
Base: add empty directories with .gitkeep to base/
2023-07-11 08:02:28 +03:00
Bananymous
9bcfb34524
Kernel: Rewrite whole device structure
...
We now have DevFileSystem which is derived from RamFileSystem. All
devices are RamInodes. We don't have separate DeviceManager anymore.
To iterate over devices, you can loop througn every inode in devfs.
2023-07-10 23:17:14 +03:00
Bananymous
f88b9ae4f2
BAN: Add iterators to HashMap
2023-07-10 23:16:41 +03:00
Bananymous
8cd91f5a6a
Userspace: add basic 'touch' command
2023-07-10 16:38:15 +03:00
Bananymous
f65e5f4190
tee: indent with tabs
2023-07-10 16:18:08 +03:00
Bananymous
f521a98157
Userspace: Add basic tee command
2023-07-10 16:07:53 +03:00
Bananymous
ee4ef6638c
Kenrel: RamInode now implements truncate()
2023-07-10 16:07:09 +03:00
Bananymous
0910958c04
Kernel: OpenFileDescriptors can now store more than 8 bits of flags
2023-07-10 16:06:36 +03:00
Bananymous
d6408bcf17
Kernel: add O_TRUNC
...
this is not supported by anything yet
2023-07-10 15:48:18 +03:00
Bananymous
178fc00905
Kernel: creat() mode now has to be access mode
...
We provide the S_IFREG in creat
2023-07-10 15:34:41 +03:00
Bananymous
89d4fa4d9b
Kernel: Ext2 fill now return ENOTSUP on write
...
We used to crash the kernel
2023-07-10 15:34:25 +03:00
Bananymous
46e1419e70
Kernel: O_APPEND is now supported
2023-07-10 15:11:27 +03:00
Bananymous
f7c4bc908e
Kernel: open() and openat() now take mode as parameter
...
O_CREAT now tries to create file if O_CREAT is specified
2023-07-10 15:08:54 +03:00
Bananymous
a0ecbed726
Kernel: You can now read/write to RamInodes
...
RamFS should be stored on physical pages and not in kmalloc, but
that will be implemented later :)
2023-07-10 14:09:35 +03:00
Bananymous
74fc0aa308
Kernel: Inode::create_file() now takes uid and gid as parameters
2023-07-10 13:32:10 +03:00
Bananymous
d5f0448e48
Kernel: start work on ram file system
2023-07-10 13:26:14 +03:00
Bananymous
51e4b11890
LibC: add NAME_MAX to limits.h
...
This is defined to 255 which is _XOPEN_NAME_MAX, smallest value
for XOPEN compliance
2023-07-10 11:48:11 +03:00
Bananymous
d713f252aa
Kenrel: Fix inode comparison
...
We should not compare rdevs
2023-07-10 11:48:11 +03:00
Bananymous
5ec2d85081
Kernel: Inode rename directory functions
2023-07-10 11:48:11 +03:00
Bananymous
0d132ee518
Kernel: Mark Ext2 classes final
2023-07-10 11:48:11 +03:00
Bananymous
fabbb9f531
BAN: RefPtr can be constructed from other types
2023-07-10 11:48:11 +03:00
Bananymous
80c8d52dc5
Kernel: add more functionality to PCI
2023-07-09 23:04:11 +03:00
Bananymous
b6c4a2dbf1
Kernel: Edit lock scopes and make string copy able to fail
2023-07-07 23:12:19 +03:00
Bananymous
a2f5ad7bed
Kernel: Move open file descriptors to their own class
...
This simplifies code a lot :)
2023-07-07 23:11:37 +03:00
Bananymous
a337f414fc
LibC: limits.h now defined OPEN_MAX
2023-07-07 23:08:49 +03:00
Bananymous
404b3dd44c
Shell: $(...) expansion works now :)
2023-07-06 23:22:57 +03:00
Bananymous
d04b031e30
Shell: you can call Shell -c ... to invoke the shell as interpreter
2023-07-06 23:22:49 +03:00
Bananymous
07fec6e211
Kernel/LibC: add basic dup2
2023-07-06 23:17:54 +03:00
Bananymous
4cd72992c8
Kernel/LibC: Add basic pipe() syscall and command
...
You can now create pipes :)
2023-07-06 22:16:26 +03:00
Bananymous
cdcb395640
LibC: add read() and write() to unistd
2023-07-06 22:15:55 +03:00
Bananymous
5a8eb51968
Kernel: TTY now unblocks semaphore after read
...
This allows concurrent reads not fully reading the buffer not block
indefinately.
2023-07-06 21:32:34 +03:00
Bananymous
a74422281f
Kernel: Add O_CLOEXEC
2023-07-06 20:00:33 +03:00
Bananymous
a45f9ee76b
Kernel: Remove spammy process/thread exit printing
2023-07-06 10:34:46 +03:00
Bananymous
f19dc114d6
Userspace: Shell now has 'env' for printing environment
2023-07-06 10:32:43 +03:00
Bananymous
d2aabb669b
Userspace: Shell imporove 'time' command
2023-07-06 09:45:04 +03:00
Bananymous
9c3f4039a5
Userspace: Shell now has time builtin
2023-07-06 00:39:04 +03:00
Bananymous
1fb305fa45
Kernel/LibC: add clock_gettime() for CLOCK_MONOTONIC
...
This gets the number of milliseconds since boot
2023-07-06 00:38:29 +03:00
Bananymous
4086d7c3be
Kernel: rework the whole PageTable structure
...
We now have page table structure for kernel memory which is shared
between all processes.
2023-07-05 23:41:35 +03:00
Bananymous
60fe5a656c
LibC: Fix syscall SYS_READ and SYS_WRITE arguments
2023-06-19 10:38:29 +03:00
Bananymous
7d254c26bc
Kernel: Rewrite and optimize DiskCache
...
DiskCache now consists of PageCaches which are caches of contiguous
sectors. This allows the disk cache to be ordered and faster traversal.
We seem to have a problem somewhere during reading. The stack gets
corrupted.
2023-06-19 10:31:47 +03:00
Bananymous
328d67f551
Userspace: u8sum fix error message
2023-06-19 10:31:23 +03:00
Bananymous
84ecf861cd
Userspace: Shell now processes $ arguments
2023-06-19 01:39:24 +03:00
Bananymous
46a6daccfe
Userspace: Shell argument parsing now appriciates quotes
2023-06-19 01:07:00 +03:00
Bananymous
3df3c37bad
Userspace: Shell argument parse now results in BAN::String
2023-06-19 00:34:44 +03:00
Bananymous
191a24110a
Userspace: Shell now sets SHELL environment variable
2023-06-18 23:35:51 +03:00
Bananymous
275a730485
LibELF: We use BAN::Vector<uint8_t> as elf storage
...
This is made possible by the dynamic kmalloc
2023-06-18 23:29:23 +03:00
Bananymous
9a7b2587af
Kernel: kmalloc has now somewhat dynamic storage
...
Allocations bigger than PAGE_SIZE and those not forced to be identity
mapped are now done on a GeneralAllocator. This allows us to use kmalloc
for big allocations; bigger than the fixed 1 MiB storage.
This is still a hack and the whole kmalloc will have to be rewritten at
some point, but for now this does the job :D
2023-06-18 23:27:00 +03:00
Bananymous
09c824b90e
Kernel: Add GeneralAllocator::paddr_of
...
Yoy can now query physical address of a virtual address for general
allocator allocation
2023-06-18 23:25:51 +03:00
Bananymous
57e59d998f
Kernel: Add enum for ISR name to number
2023-06-18 23:24:27 +03:00
Bananymous
44fb3945df
Kernel: General allocator takes first valid vaddr as parameter
2023-06-17 22:23:34 +03:00
Bananymous
95c4e608de
Kernel: Move print during boot
2023-06-12 23:45:36 +03:00
Bananymous
b9603d9d23
BAN: Optional can be constructed inplace
2023-06-12 23:45:36 +03:00
Bananymous
16e5f96b1d
BAN: Add operator-> and operator* to Optional
2023-06-12 22:25:14 +03:00
Bananymous
d0a0e3bdef
Userspace: Add u8sum
...
This program caluculates the sum of bytes in file mod 256
2023-06-12 20:36:16 +03:00
Bananymous
5dcc53bcf2
Kernel: Make disk IO blocking thread safe
...
This was causing a lot of deadlocks on vms without kvm accel
2023-06-12 18:57:47 +03:00
Bananymous
23543b15ca
Kernel: Rework syscall calling
...
I removed the intermediate function when calling syscalls. Now syscall
handler calls the current process automatically. Only exception is
sys_fork, since it needs a assembly trampoline for the new thread.
2023-06-12 14:16:48 +03:00
Bananymous
2253c45feb
Kernel: Remove Shell from kernel
...
This is now obsolete since we have a userspace Shell.
2023-06-12 02:04:52 +03:00
Bananymous
9f9a70713e
Base: add home directories for root and user
2023-06-12 02:03:13 +03:00
Bananymous
cd57adc856
BuildSystem: every file except /home/* is now owned by root
2023-06-12 02:03:13 +03:00
Bananymous
b4b892148c
Userspace: Shell processes PS1 '\~' as cwd and implement cd
2023-06-12 02:03:13 +03:00
Bananymous
048183ddb5
Userspace: init now sets HOME environment variable and cd's into HOME
2023-06-12 02:02:52 +03:00
Bananymous
f09b82c4b5
Kernel/LibC: add SYS_{SET,GET}_PWD and chdir, getpwd
2023-06-12 02:02:52 +03:00
Bananymous
7aeb8e4d36
Kernel: allocate thread stacks from 0x300000 onwards
...
I had a problem where thread stack was overlapping with elf loading
2023-06-12 01:02:19 +03:00
Bananymous
58ec4d6a31
Kernel: Fix bug in elf loading
...
We were allocating one extra page
2023-06-12 00:59:19 +03:00
Bananymous
25f8343269
Userspace: init now default logins as user
2023-06-12 00:46:07 +03:00
Bananymous
e9cb844c28
Userspace: Shell now uses PS1 as prompt if set
2023-06-12 00:45:47 +03:00
Bananymous
30ac046232
Userspace: Add color to ls
2023-06-11 23:00:19 +03:00
Bananymous
f67f8ccbe0
Userspace: init now sets user and group ids before running their shell
2023-06-11 22:37:00 +03:00
Bananymous
e9217b3484
Userspace: Add basic id that prints {,e}{uid,gid} of the current proc
2023-06-11 22:37:00 +03:00
Bananymous
11b68f6a53
Kernel: Add SYS_GET_{,E}{UID,GID}
2023-06-11 22:37:00 +03:00
Bananymous
3fe67e4882
Kernel: Add syscalls for set{,e,re}{uid,gid}
2023-06-11 22:37:00 +03:00
Bananymous
9288537949
LibC: gid_t and id_t are now signed types
...
I have no idea why I had made them unisigned
2023-06-11 22:37:00 +03:00
Bananymous
78536f9678
Kernel/Userspace: Add basic init process
...
This process parses /etc/passwd and promps login screen.
When an username is entered, it will launch that users shell
2023-06-11 22:37:00 +03:00
Bananymous
cce2f3e19a
BAN: Add basic Optional
2023-06-11 21:00:25 +03:00
Bananymous
297141f321
LibC: add strchrnul()
...
this is a gnu libc extension
2023-06-11 20:18:03 +03:00
Bananymous
c7ec19c25c
Kernel: Add basic Credentials for the system
...
Now filesystem access/open, etc confirm that you have access for rwxs
2023-06-11 20:06:06 +03:00