<Killaship34>
right now I'm in a random discord call while trying to implement a heap
<heat>
fine
<Killaship34>
that's nice
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
<heat>
you know wht im not doing rn
<heat>
implementing a heap while in a random discord call
<heat>
and i feel great because of that
elastic_dog has joined #osdev
<Killaship34>
and gues what I'm doing
<Killaship34>
not that
<Killaship34>
and I feel like shit
<Killaship34>
and I need sleep ;-;
<Killaship34>
oh yeah, I'm trying to figure out which files I need to commit on git
<Killaship34>
because I forgot that I even made any changes
<klange>
hate to be neck deep in uncommited changes scrambling to figure out what's safe to push now
<Killaship34>
well that's my life
<Killaship34>
commit message: "please don't break, I forgot what was safe to commit"
<Killaship34>
wish me luck
<Mutabah>
That seems like a recipe for a hasty second-commit labelled "f___"
<Killaship34>
yup
<moon-child>
I've started using branches much more heavily for this reason
<moon-child>
you may not know what's safe to push, but you can divide the changes into manageable independent chunks
<moon-child>
(unless you can't, of course, because they are mutually interdependent. Then--tough luck)
<Killaship34>
I should try that
<Killaship34>
I'll look into it, ig
heat has quit [Remote host closed the connection]
Killaship34 has quit [Quit: Lost terminal]
Ram-Z has quit [Ping timeout: 246 seconds]
<geist>
oh hmm, gcc 11.3 got released a few days ago
<geist>
that and qemu 7.0 means i got a lot of recompiling to do soon
<Mutabah>
At least qemu is a quick-ish build
<geist>
yah, though there's a new annoyance with meson and make install
<geist>
but i eventually just gave up and run ninja install
<geist>
but its unclear if you're supposed to use make or ninja directly now. the make file it generates seems to *mostly* be a wrapper around ninja, but it seems to try to do a little more
<geist>
but then has problems with how to get more perms with make install
<geist>
all the docs i've found online is totally out of date with the switch to meson
gog has quit [Ping timeout: 256 seconds]
jhagborg has joined #osdev
srjek has joined #osdev
sonny has joined #osdev
frkzoid has joined #osdev
zaquest has quit [Remote host closed the connection]
jhagborg has quit [Read error: Connection reset by peer]
<bslsk05>
tenor.com: Raccoon Not Eat My Grapes GIF - Raccoon Not Eat My Grapes Cute - Discover & Share GIFs
nyah has joined #osdev
<vdamewood>
μιαυ
gog has quit [Ping timeout: 246 seconds]
Mutabah has quit [Ping timeout: 256 seconds]
Mutabah has joined #osdev
_xor has joined #osdev
xenos1984 has quit [Read error: Connection reset by peer]
Mutabah has quit [Ping timeout: 256 seconds]
Mutabah has joined #osdev
Mutabah has quit [Ping timeout: 276 seconds]
xenos1984 has joined #osdev
Mutabah has joined #osdev
Mutabah has quit [Ping timeout: 256 seconds]
Mutabah has joined #osdev
heat has joined #osdev
Burgundy has quit [Ping timeout: 240 seconds]
Likorn has joined #osdev
gog has joined #osdev
eschaton has quit [Quit: ZNC 1.8.x-git-34-0db5c235 - https://znc.in]
eschaton has joined #osdev
dennis95 has joined #osdev
ahlk has joined #osdev
ahlk has left #osdev [#osdev]
Teukka has quit [Read error: Connection reset by peer]
Teukka has joined #osdev
dude12312414 has joined #osdev
Mutabah has quit [Ping timeout: 256 seconds]
Mutabah has joined #osdev
dude12312414 has quit [Remote host closed the connection]
freakazoid333 has joined #osdev
stephe has joined #osdev
Mutabah has quit [Ping timeout: 256 seconds]
Mutabah has joined #osdev
gog has quit [Quit: byee]
gog has joined #osdev
gog has quit [Client Quit]
gog has joined #osdev
Mutabah has quit [Ping timeout: 246 seconds]
sonny has joined #osdev
Mutabah has joined #osdev
Mutabah has quit [Ping timeout: 272 seconds]
Mutabah has joined #osdev
SikkiLadho has joined #osdev
sonny has quit [Ping timeout: 252 seconds]
gog has quit [Quit: byee]
gog has joined #osdev
heat_ has joined #osdev
heat has quit [Read error: Connection reset by peer]
heat_ is now known as heat
gog has quit [Quit: byee]
Killaship34 has joined #osdev
<Killaship34>
hello
gog has joined #osdev
<GeDaMo>
Hi Killaship34 :)
<Killaship34>
I'm trying to make a very basic memory allocator, not really one that's too smart or anything, just something that expands a heap and returns a pointer.
<Killaship34>
also hi
<Killaship34>
Would an sbrk() function work as a malloc?
<gog>
no, sbrk just moves the program break
<gog>
it works with malloc
<gog>
at least, the old way
<Killaship34>
what do you mean by program break
<Killaship34>
is it the end of the program
<gog>
it's the end of the program's data segment
<Killaship34>
ah
<Killaship34>
that makes sense
SikkiLadho has quit [Quit: Connection closed]
<Killaship34>
I'm in school, so I'm just gonna go ig
Killaship34 has quit [Quit: Lost terminal]
* vdamewood
gives gog a fishy
* gog
chomps fishy
<j`ey>
hypervisors are tricky to get your head around
<vdamewood>
At work I have a supervisor. My supervisor has a hypervisor. That's how it work, right?
<j`ey>
yes!
<j`ey>
if youre the user, supervisor is the kernel and hypervisor is the.. hypervisor!
sonny has joined #osdev
<GeDaMo>
Does the hypervisor have an ultravisor? :|
<heat>
don't forget that the hypervisor can have a supervisor
<bslsk05>
www.evilmadscientist.com: How to Build a Working Digital Computer… out of paperclips | Evil Mad Scientist Laboratories
<Ermine>
- Years of OS R&D yet no real use found for having more than one program
<heat>
no memory, no "CPU" (whatever the hell that means), no "net" "working"
<heat>
just 10 + 10 = 20
<gog>
notworking
<gog>
amirite
<gog>
decentral processing unit pls
<gog>
go back to minicomputers
<heat>
decentralized processing unit????
<heat>
bitprocessor?
<heat>
brb patenting this
<Ermine>
- "We need to abstract system resources", "Memory protection" - statements dreamed up by utterly Deranged
mahmutov has joined #osdev
the_lanetly_052_ has joined #osdev
the_lanetly_052 has quit [Ping timeout: 246 seconds]
<gog>
abstract? no thanks i'm full
<FatalNIX>
memory protection? Why? First come first serve man
<gog>
memory protection is only for people with something to hide
<sonny>
lol
<FatalNIX>
int* pack_your_shit = (int*)0xDEADBEEF // Leave me alone
<heat>
boys and girls, new fs
<heat>
ethfs
<heat>
you literally pay money to store data
<FatalNIX>
Is it just sqlite aligned to the spinning disk?
<FatalNIX>
somebody did that here
<sonny>
nice
<heat>
no
<heat>
it's data on the blockchain
<FatalNIX>
apparently SQLite has a 512 byte chunk format that interestingly aligns well with most spinning disk sector sizes
<heat>
you'll literally store your p...homework on the blockchain
<heat>
it's genius
<heat>
and you pay for each block you store
<heat>
otoh, unlimited storage
<FatalNIX>
I have actually thought of this but not in the sense of mining but smart contracts
<FatalNIX>
Making a really simple blockchain from scratch is incredibly trivial
<gog>
no thanks
* gog
unsubscribes
sonny has quit [Ping timeout: 252 seconds]
<FatalNIX>
ha
<FatalNIX>
I am yelling at cmake
<gog>
cmake deserves to be yelled at
<FatalNIX>
Namely I am yelling at clangd integration with cmake + vscode
<heat>
that's very easy
<heat>
install the clangd plugin, cmake CMAKE_EXPORT_COMPILE_COMMANDS=on, profit
<FatalNIX>
I did that! And then...
<FatalNIX>
holy shit include_directories isn't working everywhere Xd
<FatalNIX>
I was impressed by the export compile commands though
<FatalNIX>
I am extremely new to cmake so this has been interesting.
* geist
gives a very late yawn
psykose has joined #osdev
<heat>
FatalNIX, modern build systems can all export compile commands
<FatalNIX>
So far I'm not unimpressed at least
<heat>
meson, cmake, gn at least
<heat>
and everything else through bear
<heat>
bear -- build.sh interceps all calls to the compiler and generates a compile_commands.json
<FatalNIX>
Like, I thought maybe I would make a custom build setup system, like some projects do to ensure sanity but- cmake has shown to remove a lot of headaches for my buds who have been testing things and such
<FatalNIX>
It seems to be favoring ninja atm
<heat>
ninja is better yes
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
<heat>
sortie, is it correct to set LD=cc?
<sortie>
heat, yes kinda yeah, although generally I don't think $LD or ld should ever be invoked directly
<sortie>
$CC is enough for everyone
<FatalNIX>
Now it's complaining with GCC errors when I don't even use GCC
<FatalNIX>
and clang compiles it fine
<FatalNIX>
XD
<FatalNIX>
ugh
<heat>
my package build env does LD=$(blahblah)/ld but then I'm afraid of setting LDFLAGS
<FatalNIX>
I was kind of mad though that cmake doesn'
<FatalNIX>
doesn't pass environment variables into the build it creates
<heat>
turns out makefile's implicit rule just uses LDFLAGS when linking, but uses CC
<FatalNIX>
I was angry that I needed to create a fasmg-wrapper.sh file in order to use fasmg
<FatalNIX>
just because the include directory is passed as an environment variable only
<heat>
i was thinking that setting LDFLAGS meant you'd use them with $LD
vancz has quit []
pie_ has quit []
gog has quit [Ping timeout: 272 seconds]
pie_ has joined #osdev
vancz has joined #osdev
xenos1984 has quit [Read error: Connection reset by peer]
Likorn has quit [Quit: WeeChat 3.4.1]
GeDaMo has quit [Remote host closed the connection]
sonny has joined #osdev
xenos1984 has joined #osdev
hbag has quit [Ping timeout: 248 seconds]
kingoffrance has quit [Ping timeout: 250 seconds]
<mrvn>
When lining gcc/g++ add some extra flags as needed that you have to add yourself if you link with LD.
<mrvn>
And you can use FASM = INCLUDE=foo fasm
<mrvn>
s/with LD/with LD=ld/
<heat>
mrvn, i know
<heat>
the issue is that some build systems may assume LD=cc and others may assume LD=ld
<mrvn>
does FatalNIX
<mrvn>
?
<heat>
idk that has nothing to do with FatalNIX
<heat>
I brought up LD
<klys>
LC=cc since forever
<klys>
LD=cc since forever
<mrvn>
and FatalNIX brought up fasm. :)
<mrvn>
The big problem is that ld and cc need different LDFLAGS syntax. :(
<heat>
exactly
<mrvn>
the generl consens is that you should always link with the compiler nowadays because of those extra flags, linker script, plugins, ... the compiler may need.
Mutabah has quit [Ping timeout: 246 seconds]
sonny has left #osdev [#osdev]
nur has quit [Ping timeout: 240 seconds]
mahmutov has quit [Ping timeout: 240 seconds]
Mutabah has joined #osdev
gog has joined #osdev
kingoffrance has joined #osdev
wolfshappen has quit [Quit: later]
wolfshappen has joined #osdev
Likorn has joined #osdev
<heat>
how do I know how many spaces I need to delete when deleting a tab under tty echo?
<heat>
considering the tty doesn't know where it is
<heat>
(in terms of column/row)
<mrvn>
you remove tabs till you hit a tab stop or non tab
<heat>
the input buffer only has a single \t for each tab
<mrvn>
and your display buffer?
<heat>
not important
<heat>
the tty does not know what a display is
<mrvn>
it's where you are deleting stuff. In the input you just delete one \t
<heat>
no, the tty does an echo, it needs to know how many \x7f to echo, that's the hard part
<mrvn>
can't do that unless it knows what the display does with a tab
<heat>
it does know what the display does with a tab
<mrvn>
then undo that
<heat>
you can't
<mrvn>
if it knows the display turns the tab into 3 spaces then undo 3 spaces.
<heat>
that's not how tabs work
<heat>
tabs align to tabstops (usually 8 spaces)
<mrvn>
yes, but that is irrelevant. important is how many spaces to the next tab stop
<mrvn>
if it is 3 then you need to undo 3
<heat>
that's the problem
<heat>
how do I know how many spaces I advanced
<mrvn>
hence: you need to know what the display does with tabs
<heat>
no.
<heat>
that's not how tty's work
<heat>
there's no sort of introspection
<mrvn>
But the problem you presented requires it
<heat>
how would I know that, if you're running a tty over ssh over serial that's connected to a terminal emulator?
<mrvn>
You want the display to turn tabs into spaces but the tty to delete those spaces on backspace.
<heat>
yup
<mrvn>
Your serial does not delete the spaces, it deletes the tab
<mrvn>
or at least it should
<heat>
no
<heat>
tabs are just a vt->x = ALIGN_TO(x + 1, 8) for instance
<heat>
you don't actually write anything to the vt cells
<mrvn>
Note that you have support libraries for the display introspection like termcap.
<heat>
same as deleting a \t, you're not actually deleting anything
<heat>
you're just going back x spaces, where x can be between 8 and 1
<heat>
i've tried recounting the input's length but that doesn't work since I can have written stuff to the terminal before getting input (therefore, calculated_column != vt->x)
<mrvn>
yes, another thing that can only work if you inspect the display
<mrvn>
at least till you hit the first \t, \r or \n.
<heat>
this has to work without inspecting the display
<mrvn>
Then change your data. Send a \t to the display and have IT remember how many spaces it skipped.
<heat>
the display is dumb
<mrvn>
The way curses works is that curses converts tabs to spaces before sending it to the display and it starts by resetting the display to a fixed coordinate. That is the other direction you can go.
<mrvn>
anything between those two and you are screwed as you noticed.
<heat>
no, curses works on top of the tty
<heat>
there has to be a way
<heat>
I just don't know how
<heat>
i see freebsd and linux do some counting of columns sometimes
<mrvn>
think it through. It simply can't work.
heat_ has joined #osdev
<heat_>
listen, whatever they're doing, it works
heat has quit [Read error: Connection reset by peer]
<heat_>
there's no "think it through", i need to emulate what they're doing
<mrvn>
Then your assumption must be wrong. The model you presented at the start can't work.
<heat_>
ok. try it then
<heat_>
go to your terminal, run a program with cooked input
<heat_>
watch it work
heat_ is now known as heat
<mrvn>
That's not running your model
<heat>
i'm literally looking at the code that's running your tty's at this moment in time
<mrvn>
and I'm saying that if that works then your model you started from can't be what the code does.
<heat>
i didn't start from nowhere
<heat>
i'm just reading code and trying to figure this thing out
<mrvn>
is that code using libtermcap?
<heat>
the base model of this whole thing is that the tty and terminal are separate and the tty doesn't know much about it
<heat>
this is the kernel
<heat>
there's no libtermcap
<mrvn>
and you send "a\tb\tc^H^H" to it and the cursor ends up after b?
<heat>
yes
<mrvn>
So the display sees the second ^H and deletes 7 spaces.
<heat>
the display isn't handling this
<heat>
it's the tty
<mrvn>
s/and you send/and the tty sends/
<heat>
the tty does "hmmm, lets go back 7 spaces" and then send \b\b\b\b\b\b\b
<mrvn>
Ok. Now do the same with TERM=dumb
<heat>
this is kernel code
<heat>
there's no TERM=dumb
<heat>
there's no TERM, there's no termcap
<mrvn>
$ echo -e "a\tb\tc\b\bd"
<mrvn>
ab dc
<mrvn>
my tty does only go back 1 space at a time at \b
<heat>
\b != delete
<heat>
i'm talking about input
<heat>
run dash and try it
<mrvn>
can't figuure out how to echo a ^H
<heat>
\b means "go back one space"
<heat>
mrvn, ^H is \b
<mrvn>
can't figure out how to echo a "delete"
<heat>
run dash and try it
<mrvn>
try what?
<heat>
a<tab>b<tab>c<backspace><backspace>
<mrvn>
and how do I see what it sends to the display?
<heat>
what's sending what to the display?
<mrvn>
dash to the tty and tty to the terminal
<heat>
you don't need to see it
<mrvn>
For all I know when I hit "delete" in dash it sends "\b \ra b" to the terminal
<heat>
well, it doesn't
<heat>
do you believe?
<heat>
it sends DEL (\x7f)
<heat>
which is essentially \b \b for simple one-celled-chars, and more complex sequences of \b for other chars
<mrvn>
heat: In my case it actually doesn't send anything because dash never ever sees what you type until you hit return.
<heat>
exactly, that's the point of using dash here
<mrvn>
The display handles the tabs and deletes all before it ever gets to dash.
<heat>
you're seeing what the tty and kernel see
<heat>
that's not the display, that's the tty
<heat>
the display is just a fancy cell array with a cursor
<mrvn>
No. that's the terminal app running on my desktop
<heat>
yes, that's the display
<heat>
what handles deletes of tabs is the tty, in the kernel
<mrvn>
The terminal app doesn't send anything to the pty dash listens on until you hit return
<heat>
yes it does
<mrvn>
nope, strace it
<heat>
it's buffered in the kernel
* j`ey
confirms heat's result with dash, a<tab>b<tab>c<backspace><backspace>, cursosr is just after b
<mrvn>
j`ey: That isnt actually in question. The question is where that magic happens.
<bslsk05>
github.com: toaruos/tty.c at master · klange/toaruos · GitHub
<mrvn>
heat: Point is that it is keeping a buffer of the editable text and handling both increasing the column on tab and removing that on erase.
jhagborg has joined #osdev
<mrvn>
As you notice it will still fail when you output something to the final display device before (or mid stream) the counting columns start.
<mrvn>
noticed even
<heat>
that's definitely not your point, you literally told me n_tty was a device
hbag has joined #osdev
<heat>
it's a line discipline and it only takes a look at what you're sending or getting
<heat>
it does not know what a display is
<mrvn>
it knows a tab will increment the column to the next multiple of 8. Which might be wrong and then it goes wrong.
<mrvn>
s/knows/assumes/
<heat>
klange, yeah but it's kind of a usability problem no?
srjek has quit [Ping timeout: 250 seconds]
<nomagno>
Tab stop separation should be 8 in any reasonable system
* kingoffrance
has a nightmare about .oO( clippony, the helpful terminal assistant ) . night mare, get it?
<nomagno>
Coding conventions is a different matter, but the raw tab character is just meant to snap to the next multiple of 8
<mrvn>
nomagno: but take a serial device for example. You don't know what column you start at
<nomagno>
mrvn: that's fair...
<mrvn>
The n_tty assumes col=0 and tabs are spaces 8 columns and outputs accordingly. Both of which can be false.
<mrvn>
Mostly the former.
pretty_dumm_guy has quit [Quit: WeeChat 3.5]
<mrvn>
s/sapces/spaced/
<mrvn>
It mostly works and definetly good enough.
jhagborg has quit [Remote host closed the connection]
jhagborg has joined #osdev
hodbogi has joined #osdev
Burgundy has quit [Ping timeout: 240 seconds]
jhagborg has quit [Remote host closed the connection]
jhagborg has joined #osdev
heat has quit [Read error: Connection reset by peer]
heat_ has joined #osdev
<heat_>
i'll do it like freebsd does
<heat_>
feels sane
heat_ is now known as heat
<heat>
i don't understand how linux's is supposed to work though
<heat>
but it does, that's a fact (and works better than freebsd's)
zid has quit [Ping timeout: 256 seconds]
<mrvn>
heat: I assume linux does the same just in a more convoluted way.
Likorn has quit [Quit: WeeChat 3.4.1]
<heat>
freebsd is mindlessly incrementing the column until it either finds a newline or \r
<heat>
independently of it overflowing the actual terminal's columns or not
<mrvn>
but traditional terminals are 80 chars so that works fine.
<klange>
heat: I have a fancy line editor available for repls like kuroko or my shell (and also python back in the day, had a binding for it), so the functionality of my integrated TTY line buffer is less important to me
<klange>
it _is_ nice to have good functionality there, and there's technically no reason you couldn't support rich editing like a moving cursor, beyond an increasing number of things you need to assume about the terminal on the other end
<klange>
Linux's does UTF-8 _but_ doesn't understand wide characters, so it can backspace through a few bytes for a single character, but still assumes that character is one cell wide
Mutabah has quit [Ping timeout: 256 seconds]
<mrvn>
klange: But I want to have my female astronaut with brown skin tone.
<klange>
you can but you can't backspace through them correctly ;)
<klange>
maybe use readline!
<mrvn>
what about "o instead of ö?
Mutabah has joined #osdev
<mrvn>
The compositions for emojies is just insane. Note: female astronaut is rocket ship + woman
<mrvn>
Is " + rocketship + man a alien astronaut with antennas?
<mrvn>
.oO(need more emojis 8-)
* kingoffrance
.oO( what about MVC? )
* kingoffrance
.oO( don't cross the streams )
<mrvn>
model-view-controller?
<kingoffrance>
yes, i'm half-serious, half not. it's only emojis to my knowledge
<mrvn>
not sure how mvc and emojies intersect
<kingoffrance>
its a q of whether color is part of a "character" or a style/format of a "character"
<mrvn>
that depends on your model and view. E.g. QT has a display string, a font, a color, ...
<mrvn>
Not sure emojis care much about color attribute
<mrvn>
As in setting the foreground to red won't make your smiley face red.
<mrvn>
Similar what does "bold" mean for an emoji?
<mrvn>
More line with around the smiley? A larger smile?
<mrvn>
:-) vs. 8-)?
<mrvn>
hmm, I should check if I can actually use emojis in QT in our app at work.
<gog>
ö
* mrvn
goes and registers 'white female astronaut'.de