<kaichiuchi>
class = typename std::enable_if<std::is_integral<Type>::value>::type>
<kaichiuchi>
I think that's how you say "I want this template to only accept integrals"
<bnchs>
that looks like shit
<kaichiuchi>
welcome to C++
smach has quit []
<kaichiuchi>
C++20 does make this much nicer
<kaichiuchi>
std::integral
<bnchs>
no different than RUUUUUUUUUUUUUUUUST
<kaichiuchi>
where I can just say
<kaichiuchi>
void f(std::integral auto x)
<bnchs>
ohhhh intel god
<bnchs>
please give us more registers!!!
<bnchs>
NO
<heat>
concepts mate
<heat>
just use them
FreeFull has quit []
<kaichiuchi>
fun fact
<kaichiuchi>
when I worked in the semiconductor industry, no surprise but Intel was by far our largest customer
<kaichiuchi>
they're kinda nutty.
<bnchs>
bro x86 was meant for graphing calculators
<bnchs>
not actual computer
<bnchs>
it was a mistake to choose them
<heat>
kaichiuchi, intel is fucking massive
<kaichiuchi>
yes
<kaichiuchi>
there's a lot I still cannot say
<kaichiuchi>
but I can say some of the brightest people I've ever seen came from Intel
<heat>
top contributors in kernel stuff, firmware stuff, graphics stuff, etc
<kaichiuchi>
I am but a little cockroach
<heat>
i mean, i've seen plenty of shit intel code
<kaichiuchi>
of course
<heat>
just github.com/tianocore/edk2 and pick your favourite line
<bslsk05>
tianocore/edk2 - EDK II (1951 forks/3329 stargazers/NOASSERTION)
vdamewood has joined #osdev
<kaichiuchi>
I'm not at all saying they're godly
<kaichiuchi>
heh
<kaichiuchi>
just that some of the people I talked to there are a step above
<bnchs>
i would say IBM should have chosen m68k
<bnchs>
it seemed much more powerful compared to the still-16-bit intel 8088
smach has joined #osdev
<zid>
what about price
<zid>
availability
<bnchs>
i guess you could look at amiga
<bnchs>
and mac
<epony>
and then donate your eyes
<epony>
it's not should, it's never in a frozen hell never
smach has quit []
<epony>
the mistake is to believe CISC and X86 are a coincidende and a "choice of one person that was mostly in disagreement with you"
<geist>
heat: oh hey, forgot to mention
<bnchs>
epony: you proved me wrong congrats
<bnchs>
i shall now give you my eyes
<bnchs>
i didn't even need them anyway
<epony>
the point is, there is some brain-damage virus affecting people into false alternate history beliefs
<epony>
so they talk without knowledge and understanding of the spectacular qualities of some failed architectures and commercial disasters and terminated product lines as the "forgone computer second coming"
<geist>
bnchs: re: 68k and IBM. it wasn't ready when the PC was getting designed. too early
<geist>
supposedly missed the window by like 6 months
<epony>
with no idea about quantities, prices and times and compatibility vs efficiency and production competition between chip producing and computer selling companies
<bnchs>
geist: ooooooh
<bnchs>
OOOOOOH
<kazinsal>
per-unit price in 1980 of a 68000 was also something like four times that of an 8088
<kazinsal>
the 68k was a pretty pricey chip when it came out
<bslsk05>
en.wikipedia.org: Instructions per second - Wikipedia
<bslsk05>
en.wikipedia.org: Transistor count - Wikipedia
<epony>
the price per unit and units produced is for homework
<zid>
They wrote the compiler, they're using compiler builtins to 'fix the frame' etc.. surely they could have just made a builtin for 'do sysvabi _start entry'..?
<bnchs>
bro all i want for christmas
<bnchs>
is more CPU registers
<heat>
zid, llvm libc is the lowest effort libc I've seen
<epony>
get them from Knuth, his MMIX has 256
<heat>
that whole file is lifted from musl but sneaky-relicensed
<zid>
ah
<moon-child>
they use rlibm at least
<moon-child>
instead of msun like all the other libcs
<moon-child>
which is kinda cool
<heat>
anyway find the bug in set_thread_ptr
<heat>
and the genius ?: expression too
<moon-child>
yeah I noticed that :P
<klange>
`?:` is one of those things I keep thinking I'd find useful but then never do.
<zid>
what's the bug?
<moon-child>
I find it very useful, but here ... ... ...
<heat>
linux system calls don't return -1, they return negative errnos
<klange>
oh this isn't a ?: this is just a normal ternary with a silly expression pair
<zid>
?: is a ternary though?
<moon-child>
klange meant x ?: y
<moon-child>
the gnu ext
<zid>
oh never heard of it
<moon-child>
it means x ? x : y (but without double-eval of x)
<zid>
weirdly this is kind of easy on 32bit, with some limitations
<moon-child>
zid: basically the idea is to be able to hide cookies, so that an attacker with a read primitive can't find them out
heat has quit [Remote host closed the connection]
<zid>
you want to.. execute cookies? :o
<moon-child>
I mean like
heat has joined #osdev
<moon-child>
mov rax, cookie
xenos1984 has quit [Read error: Connection reset by peer]
xenos1984 has joined #osdev
Andrew has quit [Quit: Leaving]
MuonNeutrino has quit [Quit: Leaving]
<geist>
heh hanging out at this brewery and the wifi has suuuucked until this family with a bunch of kids just left. i guess they were all streaming vids
<bslsk05>
github.com: acpica: Update to the latest acpica · heatd/Onyx@b065a15 · GitHub
Andrew has joined #osdev
MuonNeutrino has joined #osdev
<geist>
by updating it?
<geist>
or the problem was updating it?
<kazinsal>
geist: nice. it hit us real hard, almost a foot. currently -10C, supposed to be -14C with wind chill of -21C tomorrow morning. not lookin forward to it
<geist>
yeah it's going to be colder here the next few days but not really suggesting any more snow, guess the moisture isn't here
* geist
curses the Fraiser River Valley
* geist
raises fist
<geist>
Fraser even
<kazinsal>
mmyep, curse the Mighty Muddy Fraser
<zid>
It's nearly boiling here after a week of sub-zero, 6C
<heat>
geist, you need to run acpisrc -ldqy <acpica-src-dir> <new-acpica-src-dir>
<zid>
ah yes the classic ldqy fix
<heat>
you get something like how linux's acpica is formatted (with the underscore_names) and all
<heat>
if you REALLY want to you could run something like clang-format on top for the extra crispyness
<bslsk05>
github.com: GitHub - heatd/acpica at acpisrc-linux-fix
<heat>
because of course, fixing up STATIC VOID code is my life goal
[itchyjunk] has quit [Remote host closed the connection]
dude12312414 has joined #osdev
<heat>
i guess this is not useful for Fuchsia's coding style but it should be for lk if you want to take a stab at a c p i sometime
dude12312414 has quit [Client Quit]
terrorjack has quit [Ping timeout: 252 seconds]
terrorjack has joined #osdev
heat has quit [Remote host closed the connection]
heat has joined #osdev
gog has quit [Ping timeout: 272 seconds]
<geist>
oh interesting, what does the acpisrc do?
<geist>
reformat it to what you want?
<geist>
ah interesting. didn't know this
<geist>
usually i've just used it stock
<heat>
yes acpisrc does various transformations to the acpica source
<geist>
in general porting to fuchsia either in the kernel (at first) and later in user space wasn't too hard
<geist>
mostly just filling in some routines you needed to provide
<heat>
yeah acpica is super portable but also very yucky
Burgundy has joined #osdev
heat has quit [Read error: Connection reset by peer]
heat has joined #osdev
heat has quit [Ping timeout: 256 seconds]
invalidopcode has joined #osdev
bgs has joined #osdev
vdamewood has quit [Read error: Connection reset by peer]
vdamewood has joined #osdev
vai has joined #osdev
<vai>
dear #osdev still looking for a standard dynamic loader in pure C code ?
<vai>
I know osdev.org has an example, but though someone else might have done this already by now in C + kmalloc
<klange>
I find the way you phrased your inquiry a bit peculiar so I'd like to ask a few questions about what exactly you're looking for.
<klange>
You say 'kmalloc', which suggests you want to load things in a kernel, but I would caution that most implementations of dynamic loading happen in userspace and employ interfaces like mmap to achieve their goals.
<klange>
You call out "pure C" but I'll also note there's not really anything I can think of that you'd want to do in a dynamic loader that wouldn't be 'pure C' by my interpretation, so some clarity on what you consider 'pure C' might be helpful.
invalidopcode has quit [Remote host closed the connection]
<klange>
Knowing what you want to load would also be helpful. ELF? DLL? Mach-o? Dynamic binaries for userspace, or do you want to dynamically load modules for a kernel?
invalidopcode has joined #osdev
* geist
seconds what klange said
Burgundy has quit [Ping timeout: 255 seconds]
invalidopcode has quit [Remote host closed the connection]
invalidopcode has joined #osdev
<Mutabah>
vai: Any response? There are many things we could link you to... but that may not be the right decision
gog has joined #osdev
gog has quit [Client Quit]
<mrvn>
A (32bit) stub to load and start the kernel in (64bit) higher half?
<ddevault>
dunno if the kernel actually comes up because I don't have a working serial cable atm so once EFI goes away I can't log
<ddevault>
but the bootloader works :D
<j`ey>
ah, i though you were using uefi print services
<ddevault>
I am, until I exit EFI services, of course
<ddevault>
the bootloader kills EFI before jumping to the kernel
<zid>
have you considered using a PC instead, then you can use text mode
<ddevault>
nothing wrong with serial my friend
<zid>
except requiring a cable :P
<ddevault>
anyway my kernel already runs on x86_64
<zid>
oh so you're done, phew
<zid>
this is just for show, documenting how awful it is to do non x86
<ddevault>
I'm doing an aarch64 port for stupid reasons
<ddevault>
like, yes, eventually I want aarch64 support
<ddevault>
the reason I want it /now/ is because I'm giving a talk in february and it will be easier to port to aarch64 and write a driver for the rpi gpu than to get an external projector working on my x86_64 laptop
<j`ey>
ddevault: oh that text is yours already, duh
<ddevault>
heh, yeah
<ddevault>
there's more text after "Booting kernel" but it's written to serial, not EFI
<zid>
Yea that's both a very dumb, and a very understandable reason
<zid>
It'd be easier to get remote X working over the network than actually get display cloning going to enable the vga port, I imagine :p
Turn_Left has joined #osdev
rwxr-xr-x has joined #osdev
Left_Turn has quit [Ping timeout: 252 seconds]
bauen1 has joined #osdev
[itchyjunk] has joined #osdev
lkurusa has joined #osdev
<Mutabah>
ddevault: Does UEFI on that machine provide a framebuffer?
<ddevault>
dunno
<ddevault>
it's edk2
<Mutabah>
probably will
<Mutabah>
hack up a simple bitmap font renderer, and you can get text without the serial port :)
<ddevault>
rigging up a framebuffer from scratch is easy enough
<ddevault>
I don't intend to make much use of EFI post boot
<ddevault>
it looks like it does support GOP though
<Mutabah>
GOP to get a flat framebuffer set up, then blit to that after exiting boot services
<ddevault>
I mean you really don't need it on this platform
<ddevault>
you can set up a framebuffer on this GPU in like 50 lines of code
<ddevault>
VideoCore is the simplest GPU I've ever seen
lkurusa has quit [Ping timeout: 246 seconds]
<zid>
82810 for life
<ddevault>
although
<ddevault>
anyone know how to get a vblank interrupt out of it?
<zid>
haha imagine
<ddevault>
found it
<clever>
ddevault: there are 2 ways to get a vblank irq out of the rpi, and several ipc ways
rwxr-xr-x has quit [Remote host closed the connection]
dude12312414 has joined #osdev
<ddevault>
so how does device memory work on arm anyway
<ddevault>
EFI gives me an MMIO range on qemu of 4000000-8000000
<ddevault>
but the uart is at 9000000?
<ddevault>
am confusion
Starfoxxes has quit [Ping timeout: 265 seconds]
heat has joined #osdev
<ddevault>
also, seems that on the rpi4 the UART is supposed to be at 0xFE201000, but the device tree has it at 0x7E201000
<heat>
>EFI gives me an MMIO range
<heat>
what is that?
<ddevault>
MEMORY_TYPE::MEMORY_MAPPED_IO in a MEMORY_DESCRIPTOR
<heat>
ah ok
<heat>
you don't need to fully describe the system memory in the EFI memory map
<heat>
and many don't
<heat>
basically you can't go off of MEMORY_MAPPED_IO
<ddevault>
ack
<heat>
you need to read the device tree OR the ACPI tables for that
<ddevault>
aye
<heat>
also on that address thing, I think it's a quirk on the rpi where they have multiple modes and one of them is to put peripherials lower down for compat? something like that, but don't quote me
<heat>
in any case for the EFI memory map you can assume things are correct but there may be gaps in the memory map and those gaps may have things in them
<heat>
soo when are you writing the AML interpreter? :v
<ddevault>
ah I was misreading this device tree
<ddevault>
the parent specifies an address range which corrects the serial port address to the expected value
<ddevault>
every time
<ddevault>
for MMIO is it... reasonable to identity map physical memory with the device MAIR attribute
<ddevault>
at least for a start
Starfoxxes has joined #osdev
Turn_Left has quit [Ping timeout: 264 seconds]
<ddevault>
well, maybe, but after more reading I understand the trade-offs well enough to find out for myself
k0valski18891 has joined #osdev
<kaichiuchi>
hi kids
Burgundy has quit [Ping timeout: 246 seconds]
<Ermine>
Would be cool to see helios on m1/m2
<heat>
ddevault, ah yes
<heat>
you need to go up the tree to find out what the addresses really mean
<heat>
you also need to do that for DMA btw
gildasio has quit [Ping timeout: 255 seconds]
gildasio has joined #osdev
<ddevault>
aye
<heat>
it's another one of the Great Device Tree Moves
<Ermine>
heat: s/Great/Outstanding/
<Ermine>
(to fit meme template)
<heat>
you know what I hate? my life, which is why I'm standing here and implementing C23
<Ermine>
uhh
<heat>
c = c<<6 | *s++-0x80; n--;
<heat>
loop:
<heat>
outstanding
<ddevault>
spaces around operators bro
<ddevault>
infix operators*
<heat>
this is taken straight from musl
<Ermine>
this wouldn't help
<ddevault>
yeah musl can be questionable in some places
<ddevault>
but at least it's not fucking glibc
<Ermine>
heat: where did you find this?
heat_ has joined #osdev
<heat_>
<heat> mbrtowc
<heat_>
<heat> src/multibyte/...
<heat_>
i would appreciate 1) comments 2) less HACKERMAN code
heat has quit [Read error: Connection reset by peer]
heat_ is now known as heat
<kaichiuchi>
hopefully we get to go home early
<heat>
mbstate_t is a fully undocumented struct that has two opaque uints in its definition
<zid>
Looks like utf conversion code
<heat>
musl touches this structure by casting to an unsigned int * and touching that
<heat>
???
<Ermine>
return !!(*wc = *s);
<bnchs>
hi osdevelopers
<zid>
grep "\!\!" cpu.c | wc -l
<zid>
36
<zid>
I am a big fan of !!
<Ermine>
It's 2011 code, didn't dalias stop do like this?
<Ermine>
s/do/doing/
<heat>
no
<Ermine>
:(
<heat>
mallocng is full of smartass code like this
<heat>
((unsigned char *)p)[-3] = 255;
<clever>
2022-12-21 12:03:51 < ddevault> also, seems that on the rpi4 the UART is supposed to be at 0xFE201000, but the device tree has it at 0x7E201000
<clever>
ddevault: you forgot to look at the ranges property
<clever>
ranges tells you to map 7e to fe
<heat>
clever, yeah he got that after
<clever>
ah
ephemer0l has joined #osdev
<Ermine>
At this point I regret that I failed to clear January from exams
invalidopcode has quit [Remote host closed the connection]
invalidopcode has joined #osdev
<kaichiuchi>
C++ streams get worse every time I look at them
<bnchs>
why are you using it
<kaichiuchi>
i’m not
<kaichiuchi>
work is
<heat>
int bs = "\0\1\2\4\7\3\6\5"[(0x17*base)>>5&7];
<heat>
ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
<heat>
what the fuck
<kaichiuchi>
but they don’t want to use libfmt for some reason
<kaichiuchi>
and it’s like a multi line stream manipulation because they don’t want to use printf either.
<heat>
C++20 has <format> if you're lucky
<Ermine>
heat: variable name represents this code
<kaichiuchi>
yes
<kaichiuchi>
and we are not
<kaichiuchi>
<format> as far as I know isn’t even supported on anywhere other than microsoft’s STL
<heat>
gcc and/or clang do
<Ermine>
heat are you going to refactor this?
<heat>
Ermine, depends. if it were just for my OS, probably. if not, probably not
<heat>
I don't want to deal with the fierce resistence of "omg this is so minimal and so much better than glibc"
<bnchs>
heat: bro wtf
gog` has joined #osdev
gog has quit [Read error: Connection reset by peer]
<heat>
C23 mallocs now explicitly say that allocations can have lower alignments if the size is smaller than alignof(max_align_t)
knusbaum has quit [Ping timeout: 268 seconds]
<kaichiuchi>
oh std::format works now
<kaichiuchi>
very nice
<heat>
inb4 you realize you need to do std::cout << std::format(...);
<kaichiuchi>
that’s still better than before
<heat>
disagree
<heat>
you get a std::string from std::format and THEN copy it into cout's buffers AND ONLY THEN do you output
<heat>
it's silly
<heat>
also, dynamic memory when printing yay!
<kaichiuchi>
if you wanted efficiency
<clever>
i had trouble with qPrintable on QT a few weeks ago, to my surprise, its not returning a pointer to the data backing a QString, but rather, a shared buffer
<kaichiuchi>
the STL isn’t it.
<clever>
so if you use qPrintable twice in the same statement, it breaks horribly
<heat>
kaichiuchi, plenty of STL algos are efficient
<kaichiuchi>
and I really think C++‘s STL just likes to allocate all over the place
<heat>
std::string itself is as efficient as possible within the constraints
<kaichiuchi>
that’s all well and good
<kaichiuchi>
but that doesn’t change “there’s a metric fuckton of dynamic memory allocation”
<kaichiuchi>
and for many applications it’s not efficient to have it shit out a malloc call every 2 seconds
knusbaum has joined #osdev
xenos1984 has quit [Ping timeout: 252 seconds]
xenos1984 has joined #osdev
sortie has joined #osdev
<epony>
the important part is that it's metric, the other details are, why are you doing it and not the operating system
<epony>
now ask that question to the big applications that believe they are "opearating environments" themselves
<bnchs>
kaichiuchi: have a memory pool?
<kaichiuchi>
yes, memory pools are cool
<epony>
as lard
<epony>
get you pretty heated quickly
<epony>
and slow
<epony>
in UNIX, large memory and large process is the most common fault making everything defective that relies on such a model
<epony>
that's the WINDOS model
<epony>
has the same effects as scattering storage over large portions of the disk
<epony>
cache operations take 1-3 clock cycles
<bnchs>
in this OS i'm reimplementating, the required memory size is stored in the program, so that the OS can allocate the required memory when it's loading the executable
<epony>
memory operations take 20-200 cycles
<bnchs>
and not after
<bnchs>
is stored in the executable file*
<bnchs>
the OS stores the pointer to the allocated space in one of the program's CPU registers
heat_ has joined #osdev
heat has quit [Read error: Connection reset by peer]
<bnchs>
in that way, it seems efficient if you're using a memory pool in your program
<kaichiuchi>
epony: honestly i have no idea if you’re for or against memory pools based on that
epony has quit [Quit: QUIT]
<kaichiuchi>
I do everything I can to avoid dynamic memory allocation unless there is quite literally no way to know “x” beforehand or if “x” is too large to be stored on the stack
<kaichiuchi>
if reasonable upper bounds can be set, that is ideal
<kaichiuchi>
consider an IRC server, I don’t know how many users are on one server (one) these days, but let’s say an average 2,500 users on one server and I’m really just pulling a number out of my ass
<kaichiuchi>
it is better to allocate 2500 User structs or something, rather than allocate in the critical path
<kaichiuchi>
(allocate a chunk of memory with malloc up front, and then grab slices of that)
wootehfoot has joined #osdev
elastic_dog has quit [Ping timeout: 260 seconds]
elastic_dog has joined #osdev
gog` is now known as gog
heat_ is now known as heat
xenos1984 has quit [Ping timeout: 256 seconds]
bauen1 has quit [Ping timeout: 272 seconds]
<heat>
kaichiuchi, tiny little allocations is a horrible C++ anti-pattern
<kaichiuchi>
why?
<heat>
because you malloc a lot more
<heat>
more internal fragmentation, more malloc overhead, a good probability malloc starts showing up in your profile a lot more
<kaichiuchi>
i don’t understand unless I’m missing something here
<kaichiuchi>
you use malloc once
<kaichiuchi>
that’s it
<heat>
I said tiny little allocations
<heat>
you use malloc 20 times for 10 objects
<kaichiuchi>
oh, yes
xenos1984 has joined #osdev
_73 has joined #osdev
<heat>
i find it most annoying that C++ doesn't have a realloc equivalent
<zid>
renew[]
<heat>
std::vector when expanding needs to keep the old buffer and the new buffer just so it can move objects from the old to the new
<heat>
realloc literally doesn't work because if it grows in-place, great, if not you can't move your objects anymore
<kaichiuchi>
i am so tired and i want to go home and sleep(INT_MAX);
gildasio has quit [Ping timeout: 255 seconds]
gildasio has joined #osdev
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
Vercas has quit [Remote host closed the connection]
_73 has quit [Remote host closed the connection]
Vercas has joined #osdev
Bonstra has quit [Quit: Pouf c'est tout !]
TkTech has quit [Ping timeout: 272 seconds]
GeDaMo has quit [Quit: That's it, you people have stood in my way long enough! I'm going to clown college!]
<geist>
yeah i guess now with move constructors or whatnot you could hypothetically do some sort of renew[] style thing
Burgundy has joined #osdev
SGautam has joined #osdev
bauen1 has joined #osdev
spikeheron has quit [Quit: WeeChat 3.7]
spikeheron has joined #osdev
terminalpusher has joined #osdev
epony has joined #osdev
Bonstra has joined #osdev
heat has quit [Read error: Connection reset by peer]
heat has joined #osdev
wootehfoot has quit [Quit: Leaving]
dude12312414 has joined #osdev
wootehfoot has joined #osdev
terminalpusher has quit [Remote host closed the connection]
heat_ has joined #osdev
heat has quit [Read error: Connection reset by peer]
_73 has joined #osdev
heat_ has quit [Ping timeout: 246 seconds]
<kaichiuchi>
so
<kaichiuchi>
i'm getting a bonus, which I was not expecting since I just started
<kaichiuchi>
how am I going to stop myself from buying another packard bell
heat has joined #osdev
bgs has quit [Remote host closed the connection]
<zid>
by buying me one, ofc
SGautam has quit [Quit: Connection closed for inactivity]
Beato has quit [Remote host closed the connection]
Beato has joined #osdev
<kaichiuchi>
ok
<kaichiuchi>
but you're paying the likely $200-$350 shipping
<zid>
can't you just buy a local one
<kaichiuchi>
a packard bell?
<zid>
and direct ship
<kaichiuchi>
i mean, I just use ebay
<kaichiuchi>
because I've tried to find older shit to buy on craigslist but no one cares enough to keep it
<zid>
what kinda packard bells are you into
<zid>
I take it not this i5 4460
<kaichiuchi>
the ones that say “America grew up listening to us. It still does.” on the POST self test
<kaichiuchi>
the lovely ones from early 2000s-mid 90s
<zid>
There's two 'club desk top' here for £41 and £55 respectively
<heat>
geist, move constructors can't work though, they need 2 valid memory locations
<geist>
well inside the renew[] compiler implementation basically
<geist>
ie seems like it'd be possible to have some sort of realloc style builtin implementation thingy in the compiler now that move constructors are a thing
<heat>
something cool would be like a relocate() or whatever you could implement to relocate your object elsewhere
xenos1984 has quit [Read error: Connection reset by peer]
<heat>
cuz i don't see how move constructors could help you out here
<geist>
but yeah it'd be highly integrated with the heap to work
<bslsk05>
www.ebay.co.uk: Sony Trinitron PVM-2053MD Video Colour Monitor in near mint condition. | eBay
<geist>
ie, renew[](ptr) { if can extend { construct new objects off the end } else if cant extent { move construct old bits in new space; construct new ones } free old addr; }
<zid>
It even has bad convergence judging from the picture
<geist>
or whatever
<heat>
oh yeah totally
<geist>
but yeah temporarily it needs both pointers
<heat>
the annoying bit is that realloc just can't work as-is
<zid>
ah no I think that's just fringing on the camera
<heat>
you need to have the two buffers allocated at once
<heat>
in any case it's probably not a big deal considering vectors grow with amortized O(1)
<geist>
those are weasel words!
<heat>
they only keep 2^n in capacity so you're (probably?) unlikely to be able expand
<heat>
oh yeah did you see my malloc comment thing? In C23 malloc has been clarified to not need max_align_t alignment
<heat>
you do not need to return 16-byte aligned objects
<heat>
in fact, several implementations already did so
<heat>
basically AIUI it allows smaller alignment if your object is < 16 bytes
<bslsk05>
open-std.org: N2293: Alignment requirements for memory management functions
<geist>
zid: even if it was good and cheap, i'm basically afraid to ever order a CRT on ebay
<geist>
so many horror stories of broken shit showing up everywhere
<geist>
really even old computers too, but at least metal PCs usually are sturdy enough to survive without too many bumps
<geist>
it's happening a lot to 8 bit machines and whatnot where c64s and amigas and whatnot show up completely destroyed, old macintoshes too
<geist>
folsk just toss them in cardboard boxes without any real padding
<geist>
you're almost doing the world a disservice by getting old hardware like that shipped, since the's a fairly high chance it'll get destroyed and thus taken out of the global pool of it
<zid>
service*
<zid>
geist: it's not bad if it stays in the UK, and tbh.. they got here from japan fine at one point!
<zid>
people actually over-pack CRTs a lot
<zid>
"it's glass, ergo fragile"
<zid>
when actually it's 20kg of leaded reinforced glass, more like shipping a bowling ball
<zid>
They used to come in cardboard boxes with 1cm of polystyrene
<geist>
possible delivery here is even more destructive to boxes then there
<zid>
wouldn't be surprised
<zid>
it's a big place with lots of terrain and air-freight
<geist>
i think the problem, at least in some cases, is some of the collectables have turned into a real industry
<geist>
ie, lots of old retro computers are getting really expensive
<zid>
pvms certainly have
<geist>
because jackasses just grab and resell at markup, have no idea what they're dealing with
xenos1984 has joined #osdev
<geist>
and thus use the absolute minimum amount of effort to get it done
<zid>
There's random 'VINTAGE PACKARD BELL' £350 listings here
<geist>
yah
<zid>
it has £18 of hardware in it if you buy it in parts
<zid>
so it's £330 for the case, effectively
<zid>
type-x is the only case I care about, I'd pay £20 for one
<geist>
yeah i have zero good memories of packard bells. in high school folks figured out that i knew how to 'fix' computers
<geist>
so i'd end up debugging broken windows 3.1 installs on their shitty packard bell
<heat>
was it windows 3.11?
<heat>
because those only work for workgroups
<zid>
we never used to fix installs
<zid>
Your option was a full format and reinstall or nothing
<heat>
it blows up if you work but are not in a group
<geist>
heh, actually good question, though *i* had 3.11 i'm not sure actual real computers came with them