#Orange

1 messages ยท Page 3 of 1

timid willow
#

Russian detected

#

or maybe ukrainian

#

idk

sharp coral
#

I know u very well man

onyx matrix
#

tell copilot to fuck off

timid willow
viral basalt
#

105.8% CPU?! Wtf

inner oak
#

i was lazyass all this time

#

lazy alloc is done 50%

#

also i want to make instead of mounting initrd copying initrd to tmpfs but doing some cow

#

for example instead of allocating memory and copying the entire file, I'll point file content pointer directly to the content in the initrd

#

but on write ill do this anyway and forget about initrd

inner oak
#

now my vmm finally have good unmap

inner oak
#

lazy alloc is done

#

now i can use more than 2 glxgears

#

and i need to implement disk driver and port something

inner oak
#

๐Ÿคซ

narrow mesa
#
  1. minecraft
onyx matrix
#

based

hollow raft
#

Aight bro

inner oak
#

xfwm is compiled i have some dbus issues

inner oak
#

i found what it requires getsockopt

#

for security stuff

#

so its time to implement it

inner oak
#

i fixed some bugs and dbus still dont want to start

#

now it tries to poll and stucks

inner oak
#

im going to sleep

#

tomorrow ill finally fix dbus

inner oak
#

maybe issue is i didnt implement any behaviour when process tries to write with zero count

#

like i saw in man pages what poll have some behaviour when there's zero message in stream

inner oak
#

so what i have
dbus have two threads
my test application fails on dbus_connection_send_with_reply_and_block
at end first thread reads socket and gets EAGAIN, second thread gets this too and both poll unix socket fd with which they are connected

inner oak
#

probably strace can help if i compare behaviour on linux and orange

inner oak
#

probably i found issue

#

it can be what my msg_send writes stuff one by one and suddenly after the some message scheduling interrupt occurs and other code which polls read this and ignores second message which msg_send need to send

#

i need to finally make msg_send syscall instead of just writing all iov in mlibc sysdep

inner oak
#

i compared linux strace and mine syscall logs and maybe issue can be what dbus dont like chmod stuff for service file

#

(it tries to stat every service in dbus service directory and on linux it stats all files but on orange it just stats one file and dont want to do anything)

inner oak
inner oak
#

actually it just requires fd passing

inner oak
#

so finally after 71 syscalls (~15 of them are not mlibc sysdeps) i implemented my first linux sysdep

inner oak
#

because of the holidays i can finally develop orange a lot of time

inner oak
#

passing fd support is half done

inner oak
#

fd passing is done and it requires ucred too nooo

inner oak
#

all is finally implemented and now i need to debug some eventfd related bug

inner oak
#

wtf (its linux strace)

[pid 70285] clone3({flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, child_tid=0x7f6491696990, parent_tid=0x7f6491696990, exit_signal=0, stack=0x7f6490e96000, stack_size=0x7ffe80, tls=0x7f64916966c0}strace: Process 70287 attached
 => {parent_tid=[70287]}, 88) = 70287
[pid 70287] rseq(0x7f6491696520, 0x20, 0, 0x53053053 <unfinished ...>
[pid 70285] rt_sigprocmask(SIG_SETMASK, [] <unfinished ...>
[pid 70287] <... rseq resumed>)         = 0
[pid 70285] <... rt_sigprocmask resumed>, NULL, 8) = 0
[pid 70287] set_robust_list(0x7f64916969a0, 24 <unfinished ...>
[pid 70285] futex(0x7f6493fa1ff8, FUTEX_WAKE_PRIVATE, 2147483647 <unfinished ...>
[pid 70287] <... set_robust_list resumed>) = 0
[pid 70285] <... futex resumed>)        = 0
[pid 70287] rt_sigprocmask(SIG_SETMASK, [] <unfinished ...>
[pid 70285] futex(0x7f6493fa1ff8, FUTEX_WAKE_PRIVATE, 2147483647 <unfinished ...>
[pid 70287] <... rt_sigprocmask resumed>, NULL, 8) = 0
[pid 70285] <... futex resumed>)        = 0
[pid 70287] prctl(PR_SET_NAME, "gdbus" <unfinished ...>
[pid 70285] eventfd2(0, EFD_CLOEXEC|EFD_NONBLOCK <unfinished ...>
[pid 70287] <... prctl resumed>)        = 0
[pid 70285] <... eventfd2 resumed>)     = 10

is this even possible to share fds after clone ??? (fd 10 eventfd is somehow shared and used after some time)
did i missed something

#

a

#

all this time i was ignoring what clone flags mean

#

so fd copying to child in clone() will be just removed

#

and i need to remove some race conditions because all fd related stuff was lockless just because i didnt care about shared fds

#

but now when dbus requires it i need

onyx matrix
#

working on this until the very end of the year is based

inner oak
#

i made it before the end of the year

onyx matrix
#

nice

#

I didn't :(

inner oak
onyx matrix
#

cause I'm stuck at a family home eating dinner

inner oak
#

because its required for xfconf

sharp coral
inner oak
#

but index is 5 so maybe it tries to dup2

inner oak
#

all this time it was failing to write this fd

inner oak
#

finally i fixed this

#

now at-spi can start create socket and etc.

#

but now gtk dont want to connect to it

#

and xfconfd dont work too

#

debugging gtk and dbus stuff is really pain

inner oak
inner oak
#

my futexes are broken

#

i need to fix them

inner oak
#

who came up with these names

inner oak
#

found some issue

#

process 34 didnt get unlocked

inner oak
#

tomorrow my target will be finally fix all bugs related to dbus

inner oak
#

oh

#

it requires kill()

#

and it means its time to implement signals nooo

inner oak
#

fortunately it tries to SIGKILL

onyx matrix
inner oak
onyx matrix
#

how did you get so far without them ๐Ÿ˜ญ

inner oak
inner oak
#

and now it requires shutdown()

#

(unix socket close)

#

but my unix socket closing logic is trash

#

i need to fix this

inner oak
#

๐Ÿ˜ญ

#

wait

#

i can implement it by just keeping some list with ids and memory addresses

inner oak
#

shmget and shmat are implemented

#

now shmctl waits for me

inner oak
#

so i ran xfwm4 but it dont want to draw window borders

#

probably it requires signals and setitimer

#

idk how but glxgears fps increased

thorny swallow
jaunty oxide
#

By knowing c++ and using that instead

inner oak
#

like rust or ada

thorny swallow
inner oak
#

if this is not unix signals then i need to look at xfwm src

thorny swallow
#

how did you learn cpp and os dev?

inner oak
thorny swallow
inner oak
#

like

#

if i remove something on linux it must broke

#

so ill try to removing some stuff until i got same result on orange and linux

#

and it will mean from where there's issue / which code can give me hint

inner oak
#

bruh

#

if i add more syscall to my syscall table it breaks

#

ig my global constructors are broken ?

inner oak
#

i moved syscall to asm and now all is fine

inner oak
#

im thinking how to implement signals

#

like how code can restore registers

inner oak
#

signals is 90% done

#

i need to implement some syscalls and setitimer

inner oak
#

tomorrow ill try to test xfwm again but with implemented timer stuff

#

at-spi doesnt works but ig it just requires inotify stuff

inner oak
#

bash dont want to work if i enable sigaction syscall

inner oak
#

finally signals are implemented

#

if xfwm will not work now then i give up on this

#

and ill start implementing nvme driver and ext2

inner oak
#

after ext2 ill do audio stuff

inner oak
#

holidays are over

#

๐Ÿ˜” ๐Ÿฅ€

inner oak
#

real

inner oak
#

idk why but dbus instead of passing pipe just passes /dev/null to dbus-daemon when doing exec

inner oak
#

it requires cloexec

inner oak
#

im dumb

#

instead of actual result (for example fd which was dup) i was giving just ret

#

and because of this dbus didnt want to work

#

finally i fixed at spi

jaunty oxide
inner oak
#

if i disable pmm free all is fine

inner oak
#

i fixed this

#

my memory unmap was unmapping some random memory

inner oak
#

im porting mate rn

#

marco is working mate-panel crashes on some error

white karma
inner oak
#

i have last weird bug

#

something is writes to already freed memory and my fds getting broken

inner oak
#

instead of if(used_counter == 0) idk why i used if(1) in fd freeing

inner oak
#

nproc black magic

inner oak
#

im trying to make some syscalls to lockless

inner oak
#

i ported roblox lua

#

why not

vast lake
inner oak
#

my no follow symlink stat is broken

white karma
#

How many hours per day do you work on Orange

inner oak
inner oak
#

no follow symlink stat is done

inner oak
#

after statx ill improve my tmpfs and ill implement cp, rm, mv and etc. syscalls

inner oak
#

why cp tries to do ioctl to normal file

inner oak
#

right now im adding directory support for rename

#

after this ill implement rmdir and unlink

inner oak
inner oak
#

my tmpfs lookup is trash

inner oak
#

initrd to tmpfs copy time is 90% decreased

inner oak
inner oak
inner oak
#

i have some weird bug on cpu with more than one core

#

futexes just dont want to work properly

sly sandal
inner oak
#

im abandoning the idea of userspace drivers

#

because im too lazy to implement fast disk access when there's userspace disk driver

inner oak
#

i need to implement fd closing properly

#

somehow it easily gets to 1k fds count

inner oak
#

so i got situation where st gets from 100 fd index to 200 after few syscalls

#

maybe if i debug it syscall by syscall i can see what's happening

quiet dome
#

oops wrong reply

quiet dome
inner oak
#

i forgot to remove fd from list when open fails

inner oak
#

so issue why mate-panel dont works is wnck-applet tries to use paths to my host gcc cross compiler instead of sysroot

onyx matrix
#

I've had similar issues before, there should be a compile option to change it to a proper path

#

It wasn't with mate obv but it was a similar issue

inner oak
#

im thinking about implementing futex table which will contain waking counter for each futex pointers

#

just because apps get stuck on futex wait when there's a lot of cpus

onyx matrix
inner oak
#

so i did some random shit and all smp issues fixed

#

i have no idea what but im very happy

#

and it means time to implement statx

inner oak
#

i have another race condition

inner oak
#

wait i got a hint

#

its race condition result so issue in vfs

inner oak
inner oak
#

issue was what strtok is thread unsafe

inner oak
#

im switching to linux compat

#

because why not

inner oak
#

right now im implementing some stuff which glibc requires to work

inner oak
#

why it requires so much stuff nooo

inner oak
#

compiling gcc rn

inner oak
#

im thinking about build system for linux compat userspace

#

maybe cross compiler would be good

inner oak
#

bruh im spending a lot of time just cuz gcc dont want to compile

white karma
#

The fate of osdevers

inner oak
#

now glibc dont want to go to /usr/lib instead of /lib64 ๐Ÿ˜ญ

inner oak
#

after glibc stuff ill implement evdev for x11

inner oak
#

these linux names are wild ๐Ÿ’€

white karma
#

Lmao

inner oak
#

i need to make some kind of stackframes for signal

#

like to make sigreturns a lot of times if there's signal in signal handler

inner oak
#

my elf loading is bit broken

#

glibc dont likes my argv

inner oak
#

dfsfckxkvnasdjkfdkm

#

i have no idea why it doesnt like my argv

#

it gets corrupted

#

maybe issue in mmap

#

issue was in MAP_FIXED

#

i just disable this

#

because im lazy to implement this in my vmm

sharp coral
#

Ez

sly sandal
#

idk

#

or maybee you don't pass env as third arg

inner oak
#

mmap MAP_FIXED was broken and it broke argv

inner oak
#

tf is clone3 nooo

last geyser
#

clone2 + 1

bleak ravine
inner oak
#

bash and my tty in userspace with linux compat works

onyx matrix
#

when job control

inner oak
onyx matrix
#

what?

inner oak
onyx matrix
#

why would it require systemd

inner oak
#

or maybe its just some another file

onyx matrix
#

no its a tty thing

inner oak
inner oak
#

tomorrow ill implement evdev and ill try to run xorg

inner oak
#

getdents64 is implemented

onyx matrix
#

And this is why I do my own syscalls lol

inner oak
#

freedesktop april fools

bleak ravine
inner oak
#

i cant compile evdev driver for xorg cuz of this ๐Ÿ™

inner oak
#

today i converted to linux ~50 syscalls

inner oak
#

time to implement alarm() and setitimer()

vast lake
inner oak
#

also setitimer and alarm done

vast lake
inner oak
#

(yes testcases written by ai dont hate me)

vast lake
#

Like it cant f up test cases right lol

inner oak
#

xorg requires abstract sockets for linux platforms nooo

#

time to implement it

#

maybe instead of implementing it i can not rely on strlen and just copy sockaddr

inner oak
#

interesting what if i try to use debian userspace which created with debootstrap

inner oak
#

why not

white karma
#

Cool

inner oak
#

right now im fixing some bash bugs (related to ioctl maybe)

inner oak
inner oak
#

wait bruh im dumb

#

i looked at wrong linux syscall table

#

for arm instead of x86_64

#

i dont want to implement pselect so time to use sigma pselect to poll converter from astral

inner oak
#

finally i fixed readline

#

and finally i booted to debian userspace

#

now i can use apt for some apps instead of building something (only from host with chroot for now cuz i dont have networking)

inner oak
#

i want to move my tty to kernel too

#

cuz i dont want to compile it again and again when doing debootstrap

#

time to say to my beautiful tty bye bye ๐Ÿฅ€ ๐Ÿ˜” ๐Ÿ˜ญ

white karma
#

Why

inner oak
white karma
#

Ah mb didnt read above

inner oak
#

xorg requires epoll gdtdoesnotwork

#

am i cooked

inner oak
sharp coral
inner oak
#

i have some issue

#

absolute elfs are broken

#

i didnt wanted to support them but debian have gcc cc1 absolute, not pie

inner oak
#

maybe if i try to allocate memory for each LOAD it will work

inner oak
#

i need to look to linux source

inner oak
#

dfcxvxklsdfjslfvncxdsh

#

fsvmxcnhkfgmbjfdsl;dk;ckl

#

i need to add parsing shared libraries in my elf loader and look what it tries to load

#

also tty is moved to kernel now

inner oak
inner oak
#

they are fine

#

i need to look to glibc source again nooo (death)

#

hmmmmmmm

#

it looks like glibc tries to mmap something to elf file

#

probably issue is what i dont support MAP_FIXED and my alloc for fixed address is shit

#

tomorrow ill fix this

inner oak
#

i need to move all process memory to virtual contiguous, i used buddy for process stack and elf but this is dumb

inner oak
#

added some progress bar to initrd loading

quiet dome
inner oak
quiet dome
#

imagine needing a progress bar for initrd loading cuz its that slow

#

couldn't be me

inner oak
#

why not

onyx matrix
inner oak
#

map_fixed is 90% done

#

im scared about audio cuz im doing linux compat

#

(i wanted to do it after linux compat full working userspace)

inner oak
#

๐Ÿ˜ญ

#

its not aligned

#

why

inner oak
#

jdjdhsbhuicfkeksk

#

im tired of debugging this

inner oak
#

and i got ub

#

๐Ÿ˜ญ

inner oak
#

wait its not ub

quiet dome
#

race condition?

inner oak
#

i have opinion that i just forgot to reload tlb after MAP_FIXED

#

in file mmap

#

(it just copies file to memory)

inner oak
#

at least because i running with one cpu and with disabled interrupts in syscalls

quiet dome
#

bru

inner oak
#

now gcc cant see who is child and parent ๐Ÿ˜ญ

good

[  INFO  ] [11430777] syscall_handler_c: sys 9 from 5 rdi 0x0, rsi 36864
[  INFO  ] [11431853] sys_mmap: trying to mmap 0x0-0x9000 sz 36864, prot 3, flags 131106 fd -1 off 0 from proc 5, is fixed 0
[  INFO  ] [11433491] sys_mmap: return 0x336000
[  INFO  ] [11434267] syscall_handler_c: sys 14 from 5 rdi 0x0, rsi 2053848
[  INFO  ] [11435360] syscall_handler_c: sys 435 from 5 rdi 0xd3b290, rsi 88
[  INFO  ] [11436494] sys_clone3: clone3 from proc 5, new proc 6 (new syscall_stack: 0xffff80021d8f2000) CLONEVM
[  INFO  ] [11438026] syscall_handler_c: sys 14 from 6 rdi 0x0, rsi 0
[  INFO  ] [11439045] syscall_handler_c: sys 14 from 6 rdi 0x2, rsi 13873904
[  INFO  ] [11440168] syscall_handler_c: sys 59 from 6 rdi 0x27c810, rsi 2606792
[  INFO  ] [11449806] __scheduling_load_elf: proc cr3 0x6df1000

bad

INFO  ] [23505879] syscall_handler_c: sys 21 from 5 rdi 0x27c810, rsi 1
[  INFO  ] [23507432] syscall_handler_c: sys 9 from 5 rdi 0x0, rsi 36864
[  INFO  ] [23508945] sys_mmap: trying to mmap 0x0-0x9000 sz 36864, prot 3, flags 131106 fd -1 off 0 from proc 5, is fixed 0
[  INFO  ] [23511298] sys_mmap: return 0x336000
[  INFO  ] [23512319] syscall_handler_c: sys 14 from 5 rdi 0x0, rsi 2053848
[  INFO  ] [23513840] syscall_handler_c: sys 435 from 5 rdi 0xd3b290, rsi 88
[  INFO  ] [23515367] sys_clone3: clone3 from proc 5, new proc 6 (new syscall_stack: 0xffff80021d912000) CLONEVM
[  INFO  ] [23517425] syscall_handler_c: sys 11 from 5 rdi 0x336000, rsi 36864
[  INFO  ] [23518913] syscall_handler_c: sys 14 from 5 rdi 0x2, rsi 13873904
[  INFO  ] [23520412] syscall_handler_c: sys 61 from 5 rdi 0x6, rsi 2607424
[  INFO  ] [23521885] syscall_handler_c: sys 14 from 6 rdi 0x0, rsi 0
#

maybe i need to implement this

inner oak
#

found issue

#

it requires vfork

inner oak
#

so fastfetch fails on gpu detect with some deadlock error (i have no idea) and aborts

#

anyway ill disable gpu detect with config cuz maybe it just requires sysfs

inner oak
#

to get more info from fastfetch for example

hollow raft
#

I'm assuming top uses procfs

#

But wait how does top work on unices without procfs

inner oak
#

black magic

hollow raft
#

Fair enough

inner oak
#

i need to debug why interp and dynamic section in elf created in orange is fucked (interp path is empty)

vast lake
inner oak
vast lake
inner oak
#

its debian userspace

vast lake
#

ohh you actually booted debian userspace????

#

congrats

inner oak
#

yes

#

created with debootstrap

vast lake
#

was it hard?

inner oak
#

a lot

inner oak
#

gcc works

sly sandal
inner oak
#

time to do epoll

sly sandal
#

and you're using debian userspace

inner oak
sly sandal
inner oak
#

yes

sly sandal
#

does dynamic linking work ?

inner oak
sly sandal
#

well done

narrow mesa
#

yeah thats very cool

inner oak
#

finally i understand how epoll works

inner oak
#

orange development is slow cuz im doing prism

white karma
#

Whats Prism

inner oak
inner oak
#

now im continuing work on orange

#

my todo is still evdev and epoll

#

yesterday i fixed some devfs bugs to make it more usable

#

also i want to have evdev as another mount

inner oak
#

need to rewrite my ps/2 driver

#

to make it more usable also add support for Z axis

inner oak
#

90% of evdev is done

#

only ioctls remained

inner oak
#

now when evdev is done time to make epoll and ps/2 driver which doesnt sucks

inner oak
#

ps2 is done

inner oak
#

nice epoll works

vast lake
solid hearth
#

bash

inner oak
inner oak
#

bruh

#

time to fix clone3/futex

#

but this is happens after futex so ig its futex fault

inner oak
#

i need to implement tid too

#

it was just pid but its wrong

inner oak
#

sdfsvcxvxc'v;xcsdfdsfsdmfksf;

#

sd'fdsvcx./vcxmv

#

its really pain to read glibc and bash src

rugged kelp
inner oak
rugged kelp
#

ah

inner oak
#

but i can chroot into sysroot folder and use it

#

from linux

rugged kelp
#

wow

inner oak
#

so i have two issues

#

bash deadlocks after creating new process if i add support for CLONE_CHILD_SETTID in clone3

#

and fastfetch/xorg returns EDEADLK too

inner oak
#

syscall log doesnt give any useful information

#

maybe its some tid/pid issue

inner oak
#

im starting orange rewrite

#

because i want to have support for aarch64 and riscv64 too

#

and i want to change some stuff which i used a lot too

inner oak
#

im thinking should i support loongarch64 too

onyx matrix
#

chinese mips

inner oak
onyx matrix
#

you can always add support for it later

inner oak
#

anyway i want to support 64 bit arches only

onyx matrix
inner oak
rugged kelp
#

well thats fair

inner oak
#

and i have raspberry pi so i want to launch orange on it too

rugged kelp
#

idk but i feel like a rewrite for it is not worth it

inner oak
#

first ill do pmm and after ill do paging for x86_64, aarch64, riscv64

#

ill support 5 level paging for x86_64 and 3 level paging for rv64 and 4 level paging for all of them

onyx matrix
#

being fancy lol

inner oak
rugged kelp
#

why do u want 5 levels of paging

inner oak
rugged kelp
#

doesnt 4 levels of paging gives you like 128 TB of virtual memory

quiet dome
#

what if I wanted more

#

5 level paging

solid hearth
#

rookie numbers

#

6 level paging

rugged kelp
#

well i think we should get 100 levels of paging

#

so we can have like 1 Googol of virtual memory

inner oak
#

from old kernel ill copy only buddy allocator and xhci in future

inner oak
#

buddy is done now i need to do paging for aarch64 and rv64 and i can start making heap and vma

inner oak
#

paging is done

#

btw for userspace in future ill use mlibc

#

because linux compat is not fun โŒ

inner oak
#

so

#

i need to make timer drivers for riscv64 and aarch64

#

for x86_64 ill use hpet and tsc

inner oak
#

doing uacpi kernel api optimizations rn

#

4,5 mln on my cpu

inner oak
#

how aarch64 and riscv64 interrupts are work

#

i want to do now interrupts and after disk drivers

#

for nvme ahci and virtio

#

or only nvme and ahci

#

nvme cuz why not

#

and ahci cuz i want to install orange later to my laptop

onyx matrix
inner oak
#

is this even good idea to use naked for interrupt handlers

inner oak
#

return of my old tty

#

on wide screen it looks better

inner oak
#

orange candy

solid hearth
#

orange os so popular they named a fruit after it

inner oak
#

time to do x2apic

inner oak
#

i want to do linux like files struct

#

like

#

having one file for one function for userspace for example

inner oak
solid hearth
#

there are hundreds of them

#

more than 400 iirc

inner oak
#

hmmmmm

#

should i have enabled preemption in kernel

quiet dome
#

yes

inner oak
#

aarch64 interrupts

inner oak
#

wait wtf

#

how did it not started to spam with page faults

#

when i forgot to change stack from uefi for exception handlers

#

maybe

#

maybe

#

my tlb flush is broken

onyx matrix
#

very probably

inner oak
#

also it was selecting uefi stack because i didnt setup sp_el1

#

time to do riscv64 interrupts

inner oak
#

actually riscv64 interrupts are the most simple

inner oak
#

im too lazy to do riscv64 stuff so ill port it later

#

for now my target is x86_64 and aarch64 cuz i have hw only for them

inner oak
#

x2apic

#

time to do disk drivers and vfs

onyx matrix
#

x3apic

solid hearth
#

64 bit lapic id

onyx matrix
#

yes

inner oak
#

i need to do scheduling before disk drivers because i want to always use poll way instead of interrupts

jaunty oxide
#

Why not interrupts? You will just sched_yield() on a loop?

inner oak
#

i like yields

jaunty oxide
# inner oak yes

[ ] I understand I will be wasting cpu cycles and electricity with this solution. The developer is not responsible for higher electricity bills neither for cpu overheating and related damages. Use at your own risk.

inner oak
#

but later

#

so my todo is:

  1. scheduling
  2. disk/vfs/ext2
  3. userspace and also working on networking
inner oak
#

im bald now

inner oak
#

after disk stuff im going to port my xhci driver from old kernel and ill try to run it with intel simics

onyx matrix
#

Intelยฎ Simicsยฎ

inner oak
#

cuz my xhci worked half on my friend pc and on ilobilo laptop it didn't work at all

inner oak
#

tbh its really scary to launch orange on my hw with nvme driver

inner oak
#

nvme identify is done

#

time to add rw and flush functions and do gpt/mbr support

inner oak
#

nvme works

#

(yes i just writed first lba with limine.conf)

#

now im going to sleep

#

tomorrow ill make it lockless

#

and ill add write and flush operations

onyx matrix
#

Volatile Memory Expressโ„ข

inner oak
#

it fails on identify

#

maybe my queues are cooked\

inner oak
#

maybe i forgot to enable bus mastering and memory access in pci

inner oak
#

๐Ÿ˜ญ

#

im going to rewrite nvme driver

#

cuz i have no idea why it doesnt work

inner oak
#

now im going to do step by step stuff on real hw and qemu not only in qemu

jaunty oxide
#

Qemu is very forgiving

solid hearth
#

yeah

#

I remember setting the queue type to some bogus value and it worked fine

inner oak
icy nova
#

virtualbox

solid hearth
#

vbox

#

but more forgiving than some (or most) real hardware

inner oak
icy nova
inner oak
#

so i got working nvme again

#

time to test it on real hw

#

i wish it will work

inner oak
inner oak
final pilot
#

epic

inner oak
#

should i target gpt only or mbr and gpt both

jaunty oxide
#

Both

#

Its not that complicated

inner oak
onyx matrix
inner oak
#

raw ?

onyx matrix
#

yup

#

I should port my old gpt module to my new kernel

#

should be easy

icy nova
#

chat gpt vs chat mbr

#

๐Ÿ˜” nooo

quiet dome
#

lol

inner oak
#

mbr and gpt parsing is done

#

my goals are now get ext2 and fat32 and also get ahci and virtio disk

inner oak
#

also i want to do sysfs and devfs after disk loading

#

sysfs because some stuff in linux requires it

inner oak
#

instead of path vfs ill do vfs with vnodes

#

like if some process will open some file filesystem should fill vnode struct in fd struct

final pilot
inner oak
#

like there's function in vfs for example read and i need to pass path to it

#

but this is terrible so i dont want to do it anymore

inner oak
#

time to do good mutex implementation

#

because i want to keep enabled interrupts in kernel and i need some yielding lock

inner oak
#

new uacpi score on my poor cpu

#

also doing ext2 getting inode rn

inner oak
inner oak
inner oak
#

fuck arch linux

#

today i wanted to upgrade gcc and i have no idea why but libstdc and libgcc were removed

#

now i am xubuntu user

narrow mesa
#

yeah in my experience arch linux always fucks itself up after a few updates

#

or if u dont update it for a few weeks and try updating it again it just explodes

inner oak
#

ext2 get inode works nice

inner oak
#

getting blocks from ext2 node is done

#

time to do ext2 lookup

inner oak
#

maybe it will be good to add support for 64 bit

inner oak
#

what if i try to support ext4 too

quiet dome
inner oak
#

extents are bit pita

quiet dome
#

extents seem cool idk

narrow mesa
inner oak
jaunty oxide
#

files don't reference the directory

narrow mesa
#

^

quiet dome
#

inode 2

#

is the root directory

narrow mesa
#

And

quiet dome
#

the inode2 has four links

quiet dome
narrow mesa
quiet dome
#

. .. and the two files

narrow mesa
#

Lol

quiet dome
#

huh wait

#

only the . and .. entries reference the directory

#

I just did a test on a clean directory

inner oak
#

then why links count is 4

#

mode is fine, i can dump directory content and its fine too

quiet dome
#

but creating a subdirectory references the parent directory

#

interesting, makes sense

inner oak
narrow mesa
jaunty oxide
#

oh lost+found might be referencing it as well

narrow mesa
#

.. Inside lost and found yeah

#

Lmao

#

But wait that explains only 3 links

inner oak
#

i forgot about it

quiet dome
jaunty oxide
inner oak
#

test1 is directory too

quiet dome
#

why doesnt he just ls the root of the thing lol

inner oak
#

dont blame me

quiet dome
narrow mesa
#

So u have two directories in root or what

jaunty oxide
#

yeah

inner oak
#

yes

narrow mesa
#

Oh

inner oak
#

hard*

#

or so it seems to me

inner oak
final pilot
#

meow meo wew ewmeow meow meow

inner oak
#

time to connect ext2 to vfs and do extent support

#

i wish write wont be hard

inner oak
#

ls and write is done

#

for ls im using getdents way

#

because its more optimized and cool

inner oak
#

i need to change my block allocator to more contiguous

#

cuz i need contigious blocks for extents

#

journaling looks to me bit useless so i will not support it

inner oak
#

ext4 read letsgo

inner oak
#

okay so im bit lazy to do write

#

so ill left this for future

#

when ill want to do self hosting

#

for now read is done so i can do disk loading now

#

time to do ustar

#

tmpfs, devfs with sysfs

#

also now ill start fixing gpt

#

all this time i was testing with mbr

inner oak
rugged kelp
#

what the hell does lost+found evne do tho

jaunty oxide
#

orphaned inodes get put in there by fsck

inner oak
#

gpt works

#

soon my pain with disk stuff will end

inner oak
#

im sick but i need to end vfs

#

and i still thinking about userspace

#

should i do linux compat or mlibc idk

solid hearth
#

linux compat

#

everyone is doing it now anyway :P

final pilot
#

i dont want competition

sharp coral
inner oak
jaunty oxide
inner oak
inner oak
#

not be userspace slave

inner oak
#

best bg

hollow raft
inner oak
#

in my userspace i want to implement everything that userspace requires

#

without stubbing

inner oak
#

uhhhh

#

today i fell very hard

#

my knees are bleeding so no orange today

#

cuz of pain

#

so ill play ultrakil

quiet dome
#

ibuprofen

narrow mesa
#

hospial

inner oak
#

tmpfs is done

#

time to evdev and tty stuff

inner oak
#

yesterday i did evdev but today i cant do devfs with tty stuff

#

cuz no electricity

white bramble
inner oak
#

finally devfs is done

#

time to tty and fbdev

onyx matrix
inner oak
#

my old old xhci driver is ported

#

time to run it on some hw accurate vms

inner oak
#

vbox doesnt works

#

time to fix it

inner oak
#

bruh all this time i was trying to init ghost port on vbox ๐Ÿ’€

#

like

#

there's 0-13 ports

#

i was trying to init port 14

velvet nebula
#

XD

#

error in the code?

inner oak
#

usb transaction error

velvet nebula
#

no i meant, did you make an oopsise?

inner oak
#

a yes

#

i was doing <= instead of <

#

bruh its so stupid

velvet nebula
#

f

inner oak
#

i understood this when i typed info xhci in vbox debugger and saw this

#

there's no port 0

velvet nebula
#

bruh

inner oak
#

i have no idea why i cant get descriptors from usb device in vbox

#

set addr is successful

#

ill look to other xhci drivers

#

seabios have nice src

inner oak
#

bruh i dont want to debug xhci on vbox anymore

#

im debugging this shit 7 hours

inner oak
#

ddjjddnsnxjxuxuxjxjdjdjdjdn

#

i need a psychotherapist

quiet dome
#

who doesnt

inner oak
#

maybe issue is in speed

inner oak
#

scheduling is done

#

now i can do tty

inner oak
#

i want glibc so much

inner oak
#

got some progress in xhci in vbox

#

now it can properly get device name from usb device

onyx matrix
#

what a background

narrow mesa
#

Lol

inner oak
onyx matrix
#

yes

inner oak
onyx matrix
#

perfect

inner oak
#

finally

#

my xhci driver works on vbox !!!

inner oak
#

time to sysfs

inner oak
#

fbdev in sysfs is done

#

it should work (xorg requires it for detecting)

rugged kelp
#

wait are you already gonna run xorg wtf

inner oak
#

now im doing elf loading

inner oak
#

idk should i build own userspace or just use something like debootstrap

narrow mesa
#

Linux compat

inner oak
#

im doing linux compat

narrow mesa
#

Why would you build it then

jaunty oxide
#

Void linux

inner oak
#

okay im going to use fedora

inner oak
#

time to do syscalls

#

i hate that linux have arch specific syscall tables

#

i wrote some cmdline parser

#

for example for hw where acpi is broken

#

at least elf loading works

#

my target is implement everything

#

even rseq or brk...

inner oak
#

how does brk works

#

why this even exists

narrow mesa
#

bootstrap allocator for userspace

inner oak
#

finally

#

my reddit account now is not under shadow ban

#

it means i can post to r/osdev now

#

and get a lot of github stars ๐Ÿค‘

#

๐Ÿค‘๐Ÿค‘๐Ÿค‘

inner oak
#

something is broken in elf loading

#

they are not broken

#

ig issue in auxv

#

i accidentally put stack to elf file

inner oak
#

doing signals rn

#

bash requires it for job control so

inner oak
#

i ported bash again

#

with linux compat it was pain cuz of pselect (i used astral converter to poll)

narrow mesa
#

Now unport it and then report

narrow mesa
inner oak
#

time to do clone3

inner oak
#

my eyes hurt on this bf

#

bg

#

im returning this jojo wallpaper

inner oak
#

fedora is cancer

#

im switching to debian for orange userspace

inner oak
#

my honest reaction when

#

cr3 is zero

solid hearth
#

paging is for the weak

inner oak
#

time to fix some race conditions

#

spamton means panic

#

and it triple faults

#

with >1 cpu

#

bruh ๐Ÿ’€

inner oak
#

okay uhhhhhh

#

i spent this day

#

on fixing some dumb bug

#

glibc deadlocked somewhere and issue was that i forgot to return current tid in set_tid_address

inner oak
#

time to do waitpid and unix sockets

#

and exec

inner oak
#

bash works on real hw

inner oak
#

oh yes i have fucking ub which i can get only with 0,0001% chance

#

or its my usb stick corruption

inner oak
#

i got first stack overflow in my life

#

my syscall stack is 32kb

#

and when there's some path operation really bad things happen

#

(i had ~12 path buffers when my poor stack can contain only 7)

#

also i got 1k karma on reddit ๐Ÿ’€

inner oak
#

my vfs is really requires fat stack

#

should i keep 128 kb kernel stack

quiet dome
#

just make it uh

#

use less stack space?

inner oak
vast lake
#

love ''''''

inner oak
vast lake
#

where is ls located if not usr/bin

#

cuz theres no usr

inner oak
#

bruh im dumb

vast lake
#

๐Ÿ™

inner oak
#

i was doing byte offset to uint64_t* array

vast lake
inner oak
#

ls requires statx

#

time to do it

vast lake
#

ahh ls

#

im blind

inner oak
#

for xorg i need to finish unix sockets

inner oak
#

nano works

#

now my target is unlink and get working gcc

inner oak
#

nvm about gcc my target is get some init

#

maybe systemd

#

it requires sys_mount so time for sys_mount

inner oak
#

i forgot that i still dont have unix sockets

inner oak
#

wtf

#

something zero my syscall stack after child thread exit

inner oak
#

it looks like stack is not changed after yield

#

found issue

#

i used bottom of scheduling stack instead of top

inner oak
#

gcc works

narrow mesa
#

cool

#

linux abi?

quiet dome
#

why tf is everyone doing linux abi now

#

so unoriginal

narrow mesa
solid hearth
#

I might do a fishix for that

#

I don't want to build the whole userspace and maintain it

jaunty oxide
#

I feel like having to put in effort in usespace ports gives you a bigger incentive to work on the kernel believe it or not

inner oak
inner oak
#

after getting userspace working maybe ill switch to mlibc or write own libc because linux compat is boring

inner oak
#

guess what

#

chicken butt

#

i already got some kind of working userspace so time for mlibc ig

inner oak
#

im gonna use jinx

inner oak
#

doing mlibc port rn

#

i want to fill all sysdeps for syscalls which i have now

narrow mesa
#

Just use the Linux sysdeps? Lol

inner oak
#

but im no longer linux compat and i want to have my syscall table

inner oak
solid hearth
#

nah

#

you don't have to do distro dev and can focus on the kernel

quiet dome
#

what i like about having to do distro dev is that u can procrastinate it until kernel dev gets so annoying it gives u a complex partial seizure

#

so u do distro dev

#

and then when that gets so annoying u start having a mental breakdown

#

u go back to kernel dev

#

(and the cycle of agony repeats)

solid hearth
#

lol

inner oak
#

im wrtiing own python build system instead of jinx

inner oak
#

its done

#

time to build mlibc and cross compilers

inner oak
#

finally i built toolchain

#

i had some issues with automake so i was updating binutils build stuff manually with libtoolize and autoconf

inner oak
#

mlibc port

#

time to port fastfetch

inner oak
#

me when i forgot that i had other arches too gdtdoesnotwork

#

ill do them after i3wm port

inner oak
#

my honest reaction when local variable turns into trash cuz of stack corruption

inner oak
#

im fixing signals rn

inner oak
#

i wasted 2 hours of my life because i forgot about stack alignment

inner oak
#

time to port xorg

inner oak
#

now im using evalyn's gz decompressor to load initrd

solid hearth
#

why not the one in limine

inner oak
#

i can not worry about fat asf initrd anymore

inner oak
#

fd pass and ucred pass in recvmsg is done

#

im doing them now to not care about them in future

inner oak
#

unix sockets done

#

time to suffer with xorg building

#

๐Ÿ˜ญ

inner oak
#

im thinking what to do after xorg porting

#

i can do networking or audio with oss

inner oak
#

link() is done

final pilot
#

nice

inner oak
#

unlink is implemented properly now too

jaunty oxide
#

@inner oak since you're doing evdev you might be interested in my xorg-server patches for evdev bullshit

#

basically it just adds a new evdev backend that allows it to automatically enumerate all /dev/input/event* devices and pass it to the evdev driver

#

I think it'll be upstream to the astral repo by tomorrow

#

not sure

jaunty oxide
inner oak
inner oak
#

guess what

#

chicken butt

#

i hate autotools

#

tf they cant make one thing work on other versions too

#

why i must doing autoreconf and after get some dumb errors

inner oak
#

my honest reaction when

#

oh yes i forgot that libz have shit when cross compiling

inner oak
#

finally i built xorg

#

ill build fbdev and evdev later

inner oak
#

meow meow meow meow

inner oak
#

time to port xeyes and implement some sysdeps

#

im going to use libudev-zero

#

for xf86 input evdev

inner oak
#

im implementing some evdev ioctls rn

#

that is required by xorg

inner oak
#

i have some issue

#

my rel y is broken

#

i have no idea how to fix

#

anyway im going to use own input stuff instead of evdev

#

i dont want to waste time on this

inner oak
#

i want to port glxgears xeyes and some terminal

#

im thinking about some gtk terminal

velvet nebula
#

nah, port steam

inner oak
#

uh nuh

velvet nebula
#

XD

inner oak
#

with it i can make orange more driveable

inner oak
#

i want to port unix bench to orange

#

and compare with other oses

jaunty oxide
#

os-test:

inner oak
#

๐Ÿ‘€ ๐Ÿ‘€ ๐Ÿ‘€

inner oak
#

wtf

#

how did my nvme driver broke on real hw

#

anyway ill rewrite all my disk stuff cuz it bit sucks

inner oak
#

gtk is half ported

#

i built glib and cairo

vast lake
inner oak
#

i love that gnome have mirrors on github

inner oak
#

also i need to port mesa

#

gtk requires it and why not

inner oak
#

nooooo

#

im forced to build llvm

#

๐Ÿ˜ญ

inner oak
#

i have 3 issues rn

#

my page table destroy is trash

#

vmm unmap doesnt free some stuff allocated with kheap

#

glxgears output is lagging (but it shows 900 fps without optimizations)

inner oak
#

issue was that heap didnt used freed memory

inner oak
inner oak
#

mesa works

#

im getting 800 fps with llvmpipe

#

without optimizations

solid hearth
#

better than kmanagarm

#

year of the orange desktop

inner oak
#

real

#

i need to rewrite my heap and fix pte destroy func

inner oak
#

and i fixed some race condition with futexes

inner oak
#

and after ill rewrite my heap

inner oak
#

i was freeing kernel page tables instead of user

#

for heap maybe ill port some

inner oak
#

orange gtk tomorrow

#

i want to have i3wm as primary wm

turbid bridge
#

are you using the zap light16 font?

inner oak
inner oak
#

my honest reaction when libpng is broken and gtk cant run cuz of it

inner oak
#

i ran gtk but it dont getting any input from mouse

#

when twm works