<klange>
oops, was calculating the width of a label with the wrong font metrics, that explains why it was misaligned...
pretty_dumm_guy has quit [Quit: WeeChat 3.2]
<rebedin>
but kingoffrance is right on the first part, well well, security and performance can be authored together , yes, it's when there is one master who does not deal with memory addresses and one say network dma master slave. OoO is fine to implement that type of out of phase security for half duplex in terms of uplinks downlinks, in order CPU is fine too, with loop buffers available or pipeline register based inst. windows, those admittedly are small though
<rebedin>
work one has a way to secure things a bit.
<rebedin>
:). I am pretty sure only drain terminal is used on the out of phase interconnect master arbitration logic. it's dma channel i.e line on the motherboard, parallel but behind interconnect input bus latches. on fast pipeline those units would operate almost completly parallel two dma masters that is and bus logic is queued for writebacks, as you understand that allows TCP protocol hacker to compromise the cpu which is downside of it. so for very important
rebedin has quit [Quit: Leaving]
theruran has quit [Ping timeout: 250 seconds]
dmj` has quit [Ping timeout: 276 seconds]
jakesyl has quit [Ping timeout: 258 seconds]
theruran has joined #osdev
dmj` has joined #osdev
jakesyl has joined #osdev
kingoffrance has joined #osdev
AssKoala has quit [Read error: Connection reset by peer]
<bslsk05>
lkml.org: LKML: Richard Weinberger: [PATCH] Implement leftpad syscall
paulbarker has quit [Read error: Connection reset by peer]
theruran has quit [Write error: Connection reset by peer]
SanchayanMaity has quit [Read error: Connection reset by peer]
dmj` has quit [Write error: Connection reset by peer]
jakesyl has quit [Ping timeout: 250 seconds]
<jamestmartin>
how much of an impact would there be on the startup time of large programs if prelinking and lazy loading were not used?
<moon-child>
why don't you make a benchmark and find out?
<klange>
I don't lazy load and heavily abuse dynamic objects, and things are... just fine, actually.
<klange>
But then I'm sitting on mostly C, and things are still at least linked to those shared objects and executables. If you were doing heavy C++, or linking lots of a single-compilation-unit objects statically, or wanted to do full LTO at runtime...
<jamestmartin>
because I don't have a loader to benchmark. unless I tried to modify ld.so or something?
SanchayanMaity has joined #osdev
jakesyl has joined #osdev
<klange>
You can pretty quickly/easily force Linux's ld.so to always NOW-load.
paulbarker has joined #osdev
sts-q has joined #osdev
dmj` has joined #osdev
theruran has joined #osdev
<klange>
moon-child: yawn, there were already 3 release of PonyOS by then, that's just lazy as far as April Fools jokes go; though props to David for actually doing it and not just writing a blog post pretending to have done it...
<jamestmartin>
ah, that's good. I'll try to figure out how to disable pre-linking too.
<klange>
What exactly do you mean by "pre-linking" anyway?
<klange>
If you mean linking together relocatable object files at runtime, that's not a thing you'd be able to do with Linux's ld.so [though the kernel can do it... for itself...]
<jamestmartin>
it's when you map and re-locate shared objects in advance, which is apparently something that Linux does
<klange>
I think only old Fedora setups do that.
<klange>
And not for PIE binaries, which is everything.
<jamestmartin>
as far as I can tell, that's the main reason shared libraries need to be PIC (as opposed to PIE)
<klange>
prelink was DOA because of ASLR.
<jamestmartin>
ah, so that functionality is more-or-less obsolete?
<jamestmartin>
is there any other reason I'd care about PIC (as opposed to PIE), other than just generally reducing the number of relocations that need to be done?
<klange>
PIC isn't about reducing the number, it's about centralizing them to reduce the number of pages they occur over.
<jamestmartin>
ahh, that would make sense. but it's still an optimization rather than something which would affect what you're able to use an object for?
devcpu has joined #osdev
<jamestmartin>
anyway, thank you for the info
AssKoala has quit [Ping timeout: 248 seconds]
freakazoid333 has quit [Ping timeout: 250 seconds]
AssKoala has joined #osdev
<klange>
Old iso9660 and pcspkr modules recovered... nothing to mount with the former yet, but I never actually removed my `beep` utility and have been including the beeper hardware in my qemu config this whole time, so nice to have that back I guess...
bradd has quit [Remote host closed the connection]
<klange>
kept them both as modules and neither is loaded by default; might integrate the iso9660 driver, and not sure if I have a good way to check for existence of the beeper and/or if I should just always try to load it
_whitelogger has joined #osdev
kazinsal has joined #osdev
jimbzy has joined #osdev
Beato has joined #osdev
nohit has joined #osdev
ecs has joined #osdev
pieguy128 has joined #osdev
andrewrk has joined #osdev
hl has quit [*.net *.split]
awth13 has quit [*.net *.split]
j00ru has quit [*.net *.split]
alexander has quit [*.net *.split]
mavhq has quit [*.net *.split]
Patater has quit [*.net *.split]
puck has quit [*.net *.split]
warlock has quit [*.net *.split]
nanovad has quit [*.net *.split]
night has quit [*.net *.split]
sm2n has quit [*.net *.split]
LambdaComplex has quit [*.net *.split]
HeTo has quit [*.net *.split]
sham1 has quit [*.net *.split]
remexre has quit [*.net *.split]
janemba has quit [*.net *.split]
clever has quit [*.net *.split]
HeTo has joined #osdev
night has joined #osdev
puck has joined #osdev
awth13 has joined #osdev
Patater has joined #osdev
alexander has joined #osdev
hl has joined #osdev
remexre has joined #osdev
sham1 has joined #osdev
nanovad has joined #osdev
LambdaComplex has joined #osdev
ZombieChicken has joined #osdev
j00ru has joined #osdev
klys has joined #osdev
froggey has quit [Ping timeout: 240 seconds]
froggey has joined #osdev
diamondbond has joined #osdev
AssKoala has quit [Ping timeout: 248 seconds]
clever has joined #osdev
bradd has joined #osdev
gareppa has joined #osdev
gareppa has quit [Remote host closed the connection]
johnjay has quit [Ping timeout: 248 seconds]
diamondbond has quit [Quit: Leaving]
sortie has joined #osdev
ZombieChicken has quit [Quit: WeeChat 3.2]
mavhq has joined #osdev
regreg has joined #osdev
Belxjander has joined #osdev
buffet has joined #osdev
meloneis has joined #osdev
GeDaMo has joined #osdev
dh` has joined #osdev
meloneis has quit [Ping timeout: 252 seconds]
Mach has joined #osdev
ephemer0l has joined #osdev
regreg has quit [Ping timeout: 252 seconds]
<klange>
spot what's wrong with this code: for (size_t i = 0; i < (aLen < bLen) ? aLen : bLen; i++) { ...
AssKoala has joined #osdev
<Mutabah>
Oof
<GeDaMo>
More parentheses! :P
<GeDaMo>
Or use min
<Mutabah>
Interesting, no warnings
<klange>
The bug was also quiet because the loop body handles most cases on its own - it's part of a macro to implement lexical string comparisons
<klange>
Turns out in the several months I've been using it I haven't tried to compare a string to itself... until I replaced my libc qsort's bubble sort with a Wikipedia quicksort that doesn't elide the self-comparison.
<klange>
In retrospect, it was super easy to reproduce with `'a' < 'a'`. Since my interpreter interns strings, that will just keep trucking comparing the same memory to itself until it walks off the end.
<sham1>
I'd precalculate the lengths
<klange>
It does. It just doesn't check them correctly because ternary doesn't bind that way.
<klange>
The condition of the loop is becoming "aLen" or "bLen", rather "i < aLen" or "i < bLen". That's the gotcha.
isaacwoods has joined #osdev
<sham1>
Well if you had `size_t len = (aLen < bLen) ? aLen : bLen;` that wouldn't be a problem now would it
<clever>
they had to drop the _, because it wouldnt have all fit!
<clever>
sham1: that and other things, is why i'm skipping right to ext4 support, lol
<sham1>
Well ext2 would also work, but I suppose ext4 is nicer even with this
<clever>
ext2 support already works in LK
<clever>
but then you need 3 FS's, fat32 for the maskrom loader, ext2 for the open firmware /boot, and ext4 for the / and os
<clever>
with a pinch of new code, you can merge the 2 ext's
Mids_IRC has joined #osdev
<clever>
sham1: so far, the only real difference ive run into, is extents vs indirect blocks, and the field fields that ensure you actually support features
<clever>
i need to implement a sha256 --check, and then write some testcases
dennis95 has quit [Quit: Leaving]
elastic_dog has quit [Ping timeout: 250 seconds]
elastic_dog has joined #osdev
freakazoid343 has quit [Ping timeout: 256 seconds]
<Bitweasil>
I was just going to ask about that, can't a basic ext2 reader read an ext4 fs? Or is that only 2/3 that are compatible like that?
<clever>
Bitweasil: the only actual problem ive run into so far, after disabling the safeties, was extents
<clever>
ext2/3, has an array of block#'s in a block, and then a tree of the same, one layer up
<clever>
but ext4, instead has a file-block#, length, and disk-block# extent, in an array
<Bitweasil>
Ah, ok.
<clever>
so each slot, can refer to multiple on-disk clocks
<clever>
and the next layer up, refers to the whole range covered by a block worth of those records
<Bitweasil>
So it's not backwards compatible with ext2. Ok.
<clever>
you can disable extent support, when formatting
<clever>
the wikipedia page for ext4, lists what features you can disable, to make it compatible with ext3
<clever>
journaling is likely the main thing blocking ext2
<bslsk05>
github.com: initial code to support ext4 by cleverca22 · Pull Request #303 · littlekernel/lk · GitHub
<klange>
well, this was not how i expected to spend my morning, but... it is what it is
<clever>
Bitweasil: line 140 of ext2.c, modifies the feature testing, so it assumes it has support for all ext4 features
<clever>
Bitweasil: 131 of io.c, will detect if an inode is using extents, and handle it correctly
<Bitweasil>
ok
AssKoala has quit [Ping timeout: 244 seconds]
Mids_IRC has quit [Quit: Mids_IRC]
freakazoid12345 has joined #osdev
crm has joined #osdev
orthoplex64 has quit [Ping timeout: 248 seconds]
GeDaMo has quit [Quit: Leaving.]
CryptoDavid has joined #osdev
raggi_ is now known as raggi
warlock has joined #osdev
regreg has quit [Ping timeout: 250 seconds]
AssKoala has joined #osdev
Arthuria has joined #osdev
regreg has joined #osdev
Arthuria has quit [Ping timeout: 250 seconds]
ahalaney has quit [Quit: Leaving]
crmur__ has joined #osdev
crm has quit [Ping timeout: 250 seconds]
onelegend has joined #osdev
onelegend has left #osdev [#osdev]
onelegend has joined #osdev
onelegend has left #osdev [#osdev]
Izem has joined #osdev
Izem has quit [Quit: Going offline, see ya! (www.adiirc.com)]
dutch has quit [Quit: WeeChat 3.2]
ZombieChicken has joined #osdev
dutch has joined #osdev
AssKoala has quit [Ping timeout: 250 seconds]
mahmutov has quit [Ping timeout: 244 seconds]
freakazoid12345 has quit [Ping timeout: 245 seconds]
Terlisimo has quit [Quit: Connection reset by beer]
Terlisimo has joined #osdev
sm2n_ has joined #osdev
sm2n has quit [Ping timeout: 244 seconds]
tacco has quit []
AssKoala has joined #osdev
ZombieChicken has quit [Quit: WeeChat 3.2]
<geist>
yah i forget precisely what makes ext4 ext4 (vs ext3 or 2)
<geist>
if it's mostly a series of features it may be that the individual names are mostly for a feature set on top of the core design
<geist>
not sure there's any hard incompatible superblock structure or something changes
<clever>
geist: the wikipedia page for ext4 mentioned that mounting ext2/3 with the new ext4 driver can still give performance improvements, in the block allocation area