<kof673>
mjg: not related to fred, but just as a general "conway's law" :D not arguing for or against : > Strategic Partners of WEF 2009 AMD [no idea currently] when you say "AMD" (or thousands of other entities) ...."stakeholder" stuff is involved, atop the usual corporate veil
<kof673>
just meant as "like webdev...there are x other "stakeholders" "
<kof673>
i doubt that directly affects such a micro decision, but macro level more perhaps
xenos1984 has quit [Read error: Connection reset by peer]
xenos1984 has joined #osdev
<kof673>
this is meant in the spirit of "what will amd do?" excuse me sir, i think you mean amd/stakeholders
netbsduser has joined #osdev
eddof13 has joined #osdev
eddof13 has quit [Client Quit]
eddof13 has joined #osdev
eddof13 has quit [Quit: eddof13]
eddof13 has joined #osdev
Matt|home has joined #osdev
netbsduser has quit [Ping timeout: 272 seconds]
<Matt|home>
apologies for the off topic question: does anyone know if management software exists for multi platform LANs, or if it's just not practical? example: something that allows me to make one setting change on one computer reflect across the entire network, like adding a new user to a mac locally will update to adding a new user across every machine regardless of OS
<Matt|home>
or would that be a hugely stupid security flaw? i assume this is why most industry sticks to one OS on their networks
<CompanionCube>
which OSes, specifically?
<Matt|home>
uhhh well ideally software that could support as many platforms as possible so everything from android to ios to windows, but if that's completely infeasible (which i assume it is) then at least soemthing that can operate across linux and windows would suffice
<CompanionCube>
well, android/ios aren't really multi-user operating systems, but for Linux and Windows the relevant thing to look at would be Active Directory
<Matt|home>
yeah im still unclear on the difference between something like active directory and SMB or whatever, but if my assumption that it's basically a fancy UI for network and system management and it works on linux as well i'll look into setting it up
<Matt|home>
thanks CompanionCube
<CompanionCube>
SMB is a network filesystem
<CompanionCube>
Active Directory is Microsoft's branding for their solution to this, which involves a few different elements
<Matt|home>
yeah something to do with domains or some such, i don't know anything about windows management yet
<Matt|home>
ty <3
<CompanionCube>
probably it's very overkill for you but oh well
<Matt|home>
maybe, if it's a ridiculous amount of effort i won't bother
<Matt|home>
for me in terms of level of "not worth it" it was when i was setting up a BIND server for fun. that was my upper limit on effort for a project i didn't have _that_ much interest in
<Matt|home>
never set up a BIND server ;_; just don't do it.. boycott..
gog has quit [Ping timeout: 255 seconds]
<CompanionCube>
for linux the thing you want to look up is 'Samba'
<Matt|home>
yeah i know how samba works thankfully :D
<CompanionCube>
well if you want you can use that to run the thing, it has support for that
<Matt|home>
CompanionCube , just out of curiosity can i ask what your preferred work environment is for computer stuff? just a personal preference i don't care about specifics
<CompanionCube>
Matt|home: this was the result of me asking a similar question, but no i don't really have opinions
<geist>
yah Kerberos, which relates to AD somehow nowadays
<geist>
but basically the gist is you get user management into a central database
<geist>
i have never set any of this up so i have no idea
<CompanionCube>
kerberos is the auth bit of the puzzle, like on unix
edr has quit [Quit: Leaving]
TuxHub has joined #osdev
TuxHub has quit [Client Quit]
Arthuria has quit [Ping timeout: 268 seconds]
Arthuria has joined #osdev
netbsduser has joined #osdev
nanobot567 has quit [Quit: Into the abyss I go!]
eddof13 has quit [Quit: eddof13]
heat has quit [Ping timeout: 268 seconds]
Gooberpatrol66 has quit [Remote host closed the connection]
netbsduser has quit [Ping timeout: 264 seconds]
Arthuria has quit [Ping timeout: 260 seconds]
eddof13 has joined #osdev
neo has joined #osdev
smeso has quit [Quit: smeso]
neo has quit [Ping timeout: 268 seconds]
smeso has joined #osdev
eddof13 has quit [Quit: eddof13]
stolen has joined #osdev
netbsduser has joined #osdev
<kof673>
Matt|home, i don't now modern stuff but ancient "yellow pages" stuff for various unix...it depends on what platforms/versions.
<kof673>
i mean, in unixland you can ghetto just sort of synchronize groups/passwd files across machines, but that is assuming they are identical on all osen, etc.
<kof673>
but IIRC i believe that is more less all that "yellow pages" did lol
<kof673>
*more or less
<kof673>
there were "netgroups" too but not sure anyone uses them...nfs does i think, 1+ machines can be added to a "netgroup" and that can be used in various configuration files
<kof673>
point being: ancient stuff certainly did exist, but not sure anyone uses them. stuff like novell netware, the os would either include a client and/or it cost extra
<kof673>
*the other os that had to interface, for file server/login i believe, maybe some more things, printing...
<kof673>
*know
<kof673>
there are much simpler DNS servers, it is nice for a LAN to have .internal local names but some people don't like "split DNS" if you had to later expose this :D
<kof673>
and if you only use ssh keys to reach other machines...then remote machines e.g. headless might even be fine with password login totally disabled :D
<kof673>
UNIXland i think generally you can do diskless stuff, /home and other things over NFS, but yeah, not sure if this is still "modern" :D
<kof673>
and then....let's say firefox...can it handle a shared /home directory, if you run firefox on two different machines, two different cpus, or will that crash and burn if you don't point them at separate directories/profiles :D
<kof673>
depends on the program if it will like you sharing configuration files across cpus/osen, for example :D
netbsduser has quit [Ping timeout: 245 seconds]
<kof673>
many years ago, i use to have a window manager set up, so that the menu options would find the "least loaded machine" and remote X display the selected program...but it depends on the program how well that works :D
<kof673>
IIRC i believe like DNS you can say "search local files first, then go out to the network" and pick the ordering of lookups for users and groups
<kof673>
for 'manual' "synchronization of files across machines/whatever" isn't that what puppet and other stuff is for? i don't follow these things :D
netbsduser has joined #osdev
asarandi has quit [Quit: WeeChat 4.2.2]
valshaped7424880 has quit [Ping timeout: 240 seconds]
GreaseMonkey has quit [Read error: Connection reset by peer]
gbowne1 has quit [Quit: Leaving]
netbsduser has joined #osdev
neo has joined #osdev
neo has quit [Ping timeout: 264 seconds]
neo has joined #osdev
goliath has joined #osdev
stolen has quit [Quit: Connection closed for inactivity]
netbsduser has quit [Ping timeout: 256 seconds]
eddof13 has quit [Quit: eddof13]
netbsduser has joined #osdev
zetef has joined #osdev
zetef has quit [Remote host closed the connection]
eddof13 has joined #osdev
netbsduser has quit [Ping timeout: 256 seconds]
night_ has joined #osdev
night has quit [Quit: No Ping reply in 180 seconds.]
Beato has quit [Read error: Connection reset by peer]
eddof13 has quit [Ping timeout: 260 seconds]
Beato has joined #osdev
GeDaMo has joined #osdev
mavhq has quit [Ping timeout: 245 seconds]
mavhq has joined #osdev
<dostoyevsky>
kof673: how about a distributed file system?
GreaseMonkey has joined #osdev
<GreaseMonkey>
how fiddly does IDE get in practice? using raw IDE in QEMU with nothing but RBIL and guesswork seems to take about as much code space as using the INT 13h LBA stuff, but, well, QEMU can be quite generous in this regard
<GreaseMonkey>
using one of the guides on the osdev wiki actually worked when using the freedos live cd
op has joined #osdev
<Mutabah>
IDE is pretty simple iirc, although I've only worked with emulators
manawyrm has quit [Quit: Read error: 2.99792458 x 10^8 meters/second (Excessive speed of light)]
manawyrm has joined #osdev
valshaped7424880 has quit [Quit: Gone]
valshaped7424880 has joined #osdev
neo has quit [Read error: Connection reset by peer]
<zid>
godbolt didn't even used to have C on its dropdown
<zid>
so I had to use C++ and -x c
<leg7>
All arithmetic instructions (except the DIV and IDIV instructions) allow the source operand to be an immediate value. The maximum value allowed for an immediate operand varies among instructions, but can never be greater than the maximum value of an unsigned doubleword integer (232).
<leg7>
Is this true even in long mode?
<zid>
yes
<leg7>
ok that's a bit odd
<zid>
there's a single mov reg imm64 encoding and that's it
<zid>
why?
<zid>
You almost exclusively never load 64bit constants
<zid>
from .text
<leg7>
don't you mean mov reg imm32?
<heat>
no
<zid>
no?
<zid>
You asked if the 32bit limit applied only to pmode
<leg7>
yeah
<zid>
I said long mode has a singular 64bit immediate instruction, but is otherwise true
<zid>
even the 32bit versions are barely used in practice
<heat>
64-bit imm instructions for everything would possibly make some of the encodings unencodeable in 15 bytes
<heat>
and that would be fun
<zid>
I'd say 80% of the time you're dealing with values like "divide by 8", and 19.99% of the time it'd fit in say, a short if that encoding existed
<leg7>
so how does something like mov eax, 2^33 work?
<leg7>
I mean rax
<zid>
You typically don't, let's start with that, but you could either form it mathematically, or with a non-immediate load.
<zid>
mov eax, [someval]
<leg7>
ok
<zid>
when was the last time you wrote 'long long' into a C program
<GeDaMo>
The research that lead to RISC found that most immediate values were small
<zid>
then passed 2^33 to that function
<zid>
that's how often you need that
<zid>
yea it's like, zipf's law or whatever I imagine GeDaMo
<zid>
50% are 1 digit, 25% are 2, 12.5% are 3, etc
<GeDaMo>
I think the research was by Andrew Tanenbaum
<zid>
It's n ice to quantify, but it's fairly obvious
<zid>
I've *never* used a 128bit number, but I use '1' constantly. QED.
<heat>
mov rax, 2^33 Just Works
<heat>
mov r64, imm64
<zid>
oh cus of the movsx
<zid>
err movabs
<zid>
yea, that's the one encoding that DOES exist, lol
<GeDaMo>
"Another finding, not fully explored at the time, was Tanenbaum's note that 81% of the constants were either 0, 1, or 2." https://en.wikipedia.org/wiki/Berkeley_RISC
<zid>
You meant to say "How does one do add rax, 2^33-7" or whatever
<zid>
GeDaMo: I am a geniarse
<zid>
if you rub it you get a wish!
<GeDaMo>
Er, no thanks :|
<leg7>
Well according to the intel manual an immediate value can never be greater than 2^32
<leg7>
So it shouldn't work
<zid>
you don't listen do you
<zid>
There are *zero arithmetic ops that have an immediate bigger than 2^32*
<heat>
mov isn't an arithmetic instruction
<zid>
there is a *single mov* encoding
<leg7>
"The maximum value allowed for an immediate operand varies among instructions, but can never be greater than the maximum value of an unsigned doubleword integer (232)."
<leg7>
So the manual is wrong
<zid>
are you reading the ia-32e manual
<zid>
or the ia-32
<heat>
>All arithmetic instructions
<heat>
ARITHMETIC INSTRUCTION
<heat>
MOV DOES NO ARITHMETIC
<zid>
ergh he pasted that last one out of context?
<heat>
full quote above
<leg7>
The second sentence is independent of the first one
<GeDaMo>
mov rax, 0x1234567812345678 can be encoded; add rax, 0x1234567812345678 cannot
<zid>
oh ffs yea it's just that one cut in half
<zid>
It fucking is not.
<leg7>
All arithmetic instructions (except the DIV and IDIV instructions) allow the source operand to be an immediate value. The maximum value allowed for an immediate operand varies among instructions, but can never be greater than the maximum value of an unsigned doubleword integer (232).
<zid>
That's not how language works
<heat>
ok the answer is
<zid>
The thing we told him 8 times
<zid>
already
<heat>
you're apparently reading an old ass document
<zid>
I even asked if he had the ia-32 or ia-32e manual
<leg7>
it says it varies among instructions not that it varies among arithmetic instructions. I understand what you're saying it's just that the manual is ambigous here
<leg7>
Intel® 64 and IA-32 ArchitecturesSoftware Developer’s Manual
<leg7>
Order Number: 325462-082USDecember 2023
<zid>
Okay so then maybe you could suggest they tighten that wording up very slightly
<leg7>
yes
<zid>
but it's not exactly hard to understand
<leg7>
It's not hard for you when you know all the instruction encodings
<leg7>
I'm reading the manual and it contradicts what you say and you treat me like an idiot when I bring it up
<zid>
If I was in a chapter called "Art history of the 1700s" and then the sentence "The predominant technique for painting is sticking brushes up your nose"
<zid>
that *still* doesn't say anything about 1900s painting technique
<heat>
wow okay this is truly fucking bizarre
spareproject has joined #osdev
<heat>
they haven't touched this section since the fucking pentium or something
<leg7>
I asked the question in the first place because when you read 3.7.1 it looks like this only applies to 32bit
<zid>
it also just used the mmx nomenclature anyway
<zid>
it does
<zid>
but it doesn't say anything about 64bit, so you just don't know, which is why you asked
<zid>
it doesn't make any *false* claims in that regard
<leg7>
yes
<zid>
It also happens to still be true
<zid>
you just can't *tell*
<zid>
But we answered you, 8 times
<zid>
and you just argued
<leg7>
Yes because the manual says otherwise so I wanted to know which is right.
<zid>
You just acknowledged that it only applied to 32bit
<zid>
now you're saying it says otherwise
<zid>
pick
<GeDaMo>
There is one instruction which allows a 64 bit immediate, mov to 64 bit register
vdamewood has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<zid>
Either you're saying the rax register doesn't exist
<zid>
or you're saying that limitation only applies in 32bit
<zid>
you can't have *both*
<leg7>
I feel like you are always misunderstanding me on purpose to make me look stupid
<zid>
If you actually read what the manual says in that chapter, it says 64bit code *does not exist* and that *immediates are limited to 32bit*
<zid>
You can't then claim it says 64bit code's immediates are mentioned
<zid>
leg7: Maybe don't argue about answers to your questions then?
<zid>
Be cooperative instead of combatitive
<zid>
and you'll find us more cooperative
<heat>
linix kernel
<heat>
leg7, you just found a really shitty part of the manual, that's all
<zid>
There was no "Oh, weird, the manual here confused me *link*" and we'd have gone "haha yea funny manual is old, it hasn't been updated with rax look, so clearly this can't apply to 64bit"
<heat>
it's almost verbatim the same as the ppro manual
<heat>
pog, bazel
<pog>
msbuild
<leg7>
How am I supposed to know the manual hasn't been updated in 10 years jeez
<zid>
We got a badly cropped quote designed to de-contextify it to make it look bad with "manual is wrong", looked like it was designed to trick *us*
<zid>
10? oh dear
<zid>
You wish
<zid>
also, arguing again
<zid>
pentium pro was 1995
<heat>
hey stop arguing everyone
<zid>
my calculator says that was -1771 years ago
<zid>
I think I fucked up
<heat>
whats your favourite build system
<zid>
29 years ago, nice
<heat>
BUILD SYSTEM WAR
<zid>
If you have a favourite you care more about wanking than you do about code or software
<zid>
qed
<zid>
It's like having a favourite serial killer
<heat>
wanking tends to be better than software
<heat>
no tech debt at least
<zid>
computers were a mistake
<pog>
software is bad anyway and we should stop building it
<zid>
factorio is the only useful pieceof software
<pog>
balatro
<pog>
zid i won blue deck on black stake
<zid>
balatro is love2d, so technically it's not software
<GeDaMo>
Let's see you write an OS in Factorio :P
<zid>
nice, ur not super shit anymore, that's pretty good
<leg7>
Bro you really have to relax. I never tried attacking you, I just ask for clarification and quote the manual and you make me out to be this idiot who is conspiring against you or something. I'm just here for help and information, When I tell you the manual contradicts you it's not to be an asshole it's just because it did.
<pog>
factorio circuits are turing-complete
<zid>
I didn't say you attacked me
<zid>
I said you were arguing
<zid>
which you are
<heat>
hey everyone chill the fuck out
* GeDaMo
grates cheese over everyone
<heat>
as samuel l jackson once said
<heat>
tell your bitch to be cool
<zid>
GeDaMo: I actually suggested to nik yesterday we should make a z80 in factorio
<heat>
bitch be cool
<zid>
idk how to do it though, best way would be to just write a compiler that spat out the map
<zid>
but idk how to do the routing part
<zid>
like, if you compiled it to a netlist of factorio parts, you need to turn that into a laid-out PCB with all the wires, and that sounds hard
<zid>
I think it's Np hard, too
<GeDaMo>
Maybe a Verilo / VHDL to Factorio compiler :P
<GeDaMo>
Er, Verilog
<zid>
factorio doesn't have point to point wire connections
<GeDaMo>
Conveyor belts?
<zid>
else it'd be easy
<leg7>
zid you made me really sad
<leg7>
goodbye
<pog>
there are a bunch of youtube videos about making cpus in factorio
leg7 has quit [Remote host closed the connection]
<zid>
yea someone posted a megabyte of dram yesterday
<zid>
I'd care more if bots could handle wire betters tbh :P
<pog>
deploying a local redis docker was the best idea i've had today. my testing flow is about 3x faster
<zid>
they're annoying, but I think a few of the dev logs have shown imprpovements to that are coming
<heat>
redis mongo docker
<heat>
the tech people expect us to think this is real
<zid>
GeDaMo: sort of p2p but the latency would be insane, and you can't cross them, so it doesn't really help
<zid>
wires can cross but the range is tiny
<zid>
If gog says "on rails" at any point in the next 20 minutes, can I shoot her?
<zid>
It's a mercy
<GeDaMo>
Can you put conveyor belts underground or is that just pipes?
<zid>
you can but that grants you one crossing
<GeDaMo>
(I haven't played much Factorio :P )
<zid>
so it's still constrainted
<zid>
which means you need a constraint solver still
<zid>
so you may as well use wires again
<zid>
GeDaMo teach me how to adapt REGISTER COLOURING for eletricity pole colouring I guess :P
LittleFox has quit [Quit: ZNC 1.8.2+deb3.1 - https://znc.in]
<nikolapdp>
another constraint, underground belts can only be so long
<Ermine>
i wonder why android doesn't use ncm for usb tethering
<heat>
ddevault, how do you allocate without a slab allocator?
<heat>
or allocator in general i'd guess
<ddevault>
helios only has a page allocator
<ddevault>
the memory manager is in userspace
<heat>
oh
<heat>
not many objects then?
<ddevault>
somewhat north of a dozen
<ddevault>
but all of them are at or rounded up to the page size
<ddevault>
plus stack and some globals of course
<heat>
yeah i guess it works if they're page-size-ish
chiselfuse has quit [Remote host closed the connection]
<ddevault>
yeah, it's stuff like a PML4 or thread state
<ddevault>
it's a microkernel after all
chiselfuse has joined #osdev
frkazoid333 has quit [Ping timeout: 268 seconds]
<netbsduser>
that's very micro
<zid>
nikolapdp they're talking about you again
<netbsduser>
mach and spring have comprehensive and complete virtual memory implemented in the kernel with an external pager interface for backing objects
<nikolar>
:(
<ddevault>
well, to be fair I am considering having a fatter microkernel, particularly with a more sophisticated memory manager
xenos1984 has quit [Ping timeout: 268 seconds]
<ddevault>
the monolithic project is giving me a lot of ideas for improving the microkernel
divine has joined #osdev
<ddevault>
both in userspace and kernel space
<ddevault>
though I imagine most of the memory manager could still be in userspace, but improved nonetheless with some of what I've learned
<nortti>
< mjg> yo, did 8086 have rings? ← nope, only one mode of execution, and segments were all 64K in size, read/write/exec, and located at segment_reg * 16 physical
<mjg>
nortti: ye that's what i'm reading so far
<heat>
yeah weren't rings apart of the 286 protected mode stuff?
<mjg>
looks like they came with 285
<nortti>
aye
<mjg>
i have to oficially shit on dos a little less
<mjg>
i always assumed they *could* have used rings, but just did not. in contrast to unix which started with kernel/user separation
<GeDaMo>
There were multi-user, multi-tasking systems on 8086
<mjg>
with actual protection?
<nortti>
no
<mjg>
right
<mjg>
cooperative multi-tasking is what dos is known for
<mjg>
and what was fucking with windows before the nt switch
<nortti>
no there were preëmptive systems, they just relied on the user processes not to stomp on each other / the kernel
<mjg>
preemptive?
<heat>
no, preëmptive, the european version of preemptive
<mjg>
you mean something else than cooperative multi-tasking?
<mjg>
i only know of tsr's or whatever the acronym
<nortti>
yeah, for example xenix ran on 8088 PCs
<GeDaMo>
Terminate and Stay Resident
<GeDaMo>
Also Concurrent CP/M
<mjg>
huh
<mjg>
TIL
<heat>
xenix? you sure?
<GeDaMo>
Yes
<nortti>
yeah
<mjg>
so how much can i legally shit on dos
<heat>
8088 sounds too small for xenix
<nortti>
why?
<GeDaMo>
"The first 8086 port was for the Altos Computer Systems' non-PC-compatible 8600-series computers (first customer ship date Q1 1982)." https://en.wikipedia.org/wiki/Xenix
<heat>
it.. just does
<heat>
maybe my mental map of xenix history is slightly off
<heat>
but they ditched 16 bit fairly quickly
<heat>
they = unix in general
<nortti>
mjg: you can shit on it for having too limited of a hardware abstraction layer, leading to software poking the hardware directly, and also for having no affordances for multitasking in its design
<mjg>
heh, so chatgpt correctly claims 8086 did not have rings, i'm impressed
<heat>
did you know it does not scale
<heat>
actually, no, it scales perfectly
<heat>
no locks
<mjg>
wrong
<heat>
LOCKLESS
<mjg>
intel docs for 8086 already talk about the LOCK prefix
<mjg>
:s
<mjg>
so
<heat>
i bet you wont find a single LOCK in dos
<nortti>
lemme see…
<mjg>
this reminded me of a fucker who claimed some algo is not lockless
<mjg>
cause there was a lock-prefixed instruction in generated asm
<mjg>
:d
<heat>
i agree
<nortti>
yeah, no lock prefix in dos 1.25 at least
<heat>
you'll need a lock somewhere
<mjg>
dozzZ
<mjg>
lemme tell ya, norton commander was my emacs
<mjg>
for the uninitiated, emacs users do eerything in the fucking editor
<mjg>
in dos times it was common to just run nc
<heat>
oh yes
<heat>
the very common linux irc user that never heard of emacs
<nortti>
I would not expect much locking in any case, as even up to windows 3.11 you had "the critical section", as in, one single synchronization object for the entire system
<mjg>
it even had shit like ncedit, which is how mcedit came to be
<heat>
minecraft edit??
<mjg>
hm... did 3.x even support smp?
<mjg>
i know nt kernel did, while running the same "shell" or whatever they call it as win 3.x
<acidx>
3.11 in enhanced mode used virtual8086 for every app
<acidx>
but the system itself was running in protected mode
<mjg>
so presumably as far as source code went, some understanding of multicore had tobe there
xenos1984 has joined #osdev
<heat>
but the nt kernel was good
<nortti>
dos 2.0 has LockOper, syscall number 92
<acidx>
but, no, win3.11 didn't support smp IIRC. it wasn't that common on desktops back then.
<nortti>
aye
<Bitweasil>
Far as I know, only the NT series supported SMP. None of the consumer Windows did, until XP.
<Bitweasil>
(... and call 2000 what you will, it wasn't really aimed as a consumer OS, though it did a fine enough job at it)
<mjg>
hey i had a 2000 on my desktop in high school]
<mjg>
rock solid until blaster showed up
<Bitweasil>
Blaster? I ran 2k on my box in college for a few years.
<mjg>
xp series was shutting down after a minute, 2000 was losing networking
<geist>
correct everyone has said here. SMP was very exotic on consumer stuff util late 90s
<mjg>
the exploit was causing some process to crash and it was taking networking down with it
<GeDaMo>
There were a few asymmetric systems in the 80s :P
<Bitweasil>
The Pentium Pros could do it, but were certainly "exotic workstation chips." I believe there were some SMP 486s, but with bizarre glue.
zetef has quit [Remote host closed the connection]
<nortti>
geist: how big of a flex was bebox being dual CPU, actually?
<Bitweasil>
nortti, you were a god among men if you had one of those. :p
<geist>
it was kinda a flex yeah
<geist>
also macs had some MP machines, but they weren't properly SMP
<acidx>
the LEDs in the case were a flex, probably
<Bitweasil>
... "probably"? :p
<geist>
and yeah the LEDs being up front was a major flex
<Bitweasil>
BeBox said "I appreciate the weird architectures, and I have money."
<acidx>
I've never seen a real working bebox before
<geist>
i have a pair of them
<acidx>
I saw one at one of the brazilian google offices a while back
<kazinsal>
you could probably build some exotic bespoke SMP 8088 system but you'd need a lot of glue logic
<Bitweasil>
I'm pretty sure the SMP 486s were "a lot of custom glue."
<acidx>
I think that bebox was Bruno Albuquerque's box
<Bitweasil>
PPro and following had it natively, more or less.
<nortti>
kazinsal: would you? there's no caching, and DMA is already something supported, so presumably bus arbitration is not too hard
<Bitweasil>
My first "modern" computer after the 486 was a SMP Pentium 3 board, and I've owned a bunch of P6 based SMP boxes over the years - quad PPro, quad P3 Xeon, etc.
<acidx>
I worked at a PC repair shop in the 90s and I remember a SMP Pentium Pro rolling in one day. it was running NT 4 IIRC. I was amazed by the idea
<Bitweasil>
Probably had, like, 128 meg RAM too! :D
<Bitweasil>
I still think the single fastest system I've ever used in my life was a SMP P3 866 box, Rambus, and a U320 SCSI 15k drive, running XP.
<acidx>
right. I had a 486 with 8 megs of ram back then
<Bitweasil>
The NVMe stuff is a lot faster, but everything is *so* much more massive these days...
vdamewood has joined #osdev
freakazoid332 has joined #osdev
goliath has joined #osdev
helene has quit [Remote host closed the connection]
randm has quit [Remote host closed the connection]
randm has joined #osdev
gbowne1 has joined #osdev
helene has joined #osdev
Nixkernal_ has joined #osdev
Nixkernal has quit [Ping timeout: 255 seconds]
<netbsduser>
who even likes rings
<netbsduser>
no one
stolen has quit [Quit: Connection closed for inactivity]
<netbsduser>
needless junk, i have no idea why they put it in the vax instead of a traditional user/supervisor mode, but it's aged like milk
<mjg>
what filesystem is now being shipped with windows and does it data checksumming?
<mjg>
does it do*
<mjg>
i know they had something other than ntfs, but i don't know if it ships
<friedy>
Rustaceans say "This is the future!! It's gonna replace C!!! Embedded Rust!!!" Me "Okay bro"
<heat>
okay bro, let me get back to you once i finish my fortran program
<sham1>
Somehow, somewhere, a pacemaker stops working because in one of the 2^64 transient dependencies of the Rust-based firmware, you get a panic
<sham1>
Although I'll be fair to Rust people for once and say that they probably wouldn't do that, but you never know. They managed to smuggle the `alloc` crate into Linux
<sham1>
The significance being of course that `alloc` doesn't let you detect allocation problems other than by panics
<Ermine>
oxidized world won?
<sham1>
Seemingly
<sham1>
I'm surprised that Linus gave it the green light
<Ermine>
you didn't get the joke
<sham1>
Many of his objections against C++ are also applicable in Rust, after all
<sham1>
Clearly not
<nikolar>
That's not wrong
<sham1>
I didn't see a joke
<nikolar>
They just wore him down
<Ermine>
It was a reference to "the plastic world has won" punk rock song
<sham1>
Ah
<heat>
kernel rust alloc can fail
<Ermine>
actually it's named the other way, but it contains that song
<Ermine>
s/song/line
<Ermine>
i'm kinda fucked these days
<kof673>
songs within songs, lines within lines, plastic world without end
<heat>
part of the reason why i'm moving back to C interfaces for my kernel is if i ever want to add rust, i can just do it
<nikolapdp>
why would you want that
<heat>
it's safer
<Ermine>
btw rust produces too big code which is unsuitable for embedded targets
<nikolapdp>
FEARLESS CONCURRENCY
<nikolapdp>
SAFETY
<heat>
rust should produce more or less what llvm produces
<hunta987>
I don't understand why they'd make panic a default macro in Rust, why encourage programs to fail? Maybe it was intended to be a release build version of assert(false)
<heat>
i don't understand why they'd make abort() a default function in C, why encourage programs to fail?
<Ermine>
heat: that's what my friend which works with such hw said. And he likes rust
<heat>
Ermine, yes, but language runtime aside the codegen should be similar, unless rustc really sucks ass at generating llvm IR
<Ermine>
probably
<heat>
rust however really depends on LTO which is its own set of problems
<nikolapdp>
i mean abort() isn't encouraged as the default error handling mechanism in c
<nikolapdp>
unlike with panic!() in rust
<heat>
okay so what you're thinking is that what tutorials do is automatically great
<mjg>
i don't think panic! is encouraged per se
<nikolapdp>
no, that's what rust people think
<heat>
they .unwrap(), sometimes the .unwrap() goes sideways and it panics
<mjg>
unless you mean de facto encouraged as a consequence of unwrap
<nikolapdp>
that too
<mjg>
which does seem to be common
<heat>
you should not unwrap unless you're not ready to deal with the fuck up
<heat>
it's like
<heat>
int *ptr = malloc(sizeof(int)); *ptr = 10; /* error checking is for wankers */
<Ermine>
otoh armclang does wonders when it comes to binary sizes
<Ermine>
(also it probably cheats and compresses stuff)
<mjg>
concuRustency
<nikolapdp>
lol
<heat>
conculinuxkernel
<heat>
top 10 smp_mb() uses
<Ermine>
concix
<heat>
hey ermine what memory barrier are you?
<heat>
i'm a dma_wmb()
<zid>
error checking is infact, for wankers
<zid>
all it does it make it harder to debug
<mjg>
your girlfriend is smp_rmb() on amd64
<mjg>
compiles to nothing LOL
<heat>
:(
<heat>
you're a big ol meanie aren't you
<sham1>
mjg: I thought that the joke would have been about her being shared around
<mjg>
i'm not fat
<mjg>
otherwise ye
<sham1>
But I guess that also works
<mjg>
sham1: that's your gf
<heat>
this LOSER doesn't know the x86 memory model lol
<heat>
get OWNED son
<Ermine>
gotta study those barriers
<zid>
heat: I'd rather have a crash than have MessageBox("Write error"); return 1;
<zid>
returned from main too so I have no fuckin idea
<bslsk05>
heatd/Onyx - UNIX-like operating system written in C and C++ (10 forks/76 stargazers/NOASSERTION)
<Ermine>
heat: they stole your os name! We must sue them!
<heat>
childlikempress, basically i think they keep track of N writes and reads inside a single function and reorders it
xenos1984 has quit [Read error: Connection reset by peer]
<childlikempress>
is it just static reordering? or do they maintain a software write queue?
<mjg>
i would expect compiler support to reorder things arbitrarily, while respecting all the fences ofc
<nikolar>
heat do you just shuffle the writes :P
<mjg>
most notably do stores before loads if possible
<nikolar>
yeah that too
<childlikempress>
mjg: if you don't maintain a software write queue then 1) there will be certain reorderings you can't perform and 2) you always get the same order
<childlikempress>
vs being able to do a random order every time you run the code
<mjg>
i was thinking you quickly compile a bunch of kernels and crashtest them in qemu
<mjg>
while only mucking with the code you are changing, so the cycle should be faster
<bslsk05>
docs.kernel.org: Kernel Concurrency Sanitizer (KCSAN) — The Linux Kernel documentation
<mjg>
but now that i said it, perhaps an emulated qemu cpu could fuck with it?
<mjg>
it could pretend to be ppc or something on that front
<childlikempress>
ohh cool
<heat>
it turns the google people
<childlikempress>
so basically it is a queue but only one element
raphaelsc has quit [Remote host closed the connection]
<heat>
they know some stuff eh
<heat>
turns out*
<heat>
ktsan is the superior option but hard to pull off in a kernel setting
<heat>
much less a kernel with a custom memory model
<heat>
ktsan could find you all of the problems
<netbsduser>
i could use one of these so-called "sanitisers"
<childlikempress>
just one?
<heat>
i'm collecting them all
<heat>
Ermine, WRITE A KMSAN IMPLEMENTATION NOW
<heat>
THE ONYX PROJECT NEEDS YOUR HELP!
<netbsduser>
have just integrated some pleasant work to partially free up certain parts of the sync/waiting interfaces from locking, and it would be helpful if one of these "sanitisers" could help assure me of no raciness
<dostoyevsky2>
netbsduser: OpenBSD might have them all activated by default
<netbsduser>
dostoyevsky2: impossible
<heat>
that would be funny but the compiler can only activate a very small subset at a time
<netbsduser>
i tried one of the "sanitisers" in userland, i think it was address-san or memory-san - i forgot which, stupid names - and it adds a massive performance penalty
<heat>
not that massive
<Ermine>
heat: I gotta defend my diploma on Thursday
<netbsduser>
i've also used the kaddress-san once, i didn't do a proper implementation, i just got it to help me out with looking at certain addresses
<heat>
ASAN (particularly inlined!) is usable
<heat>
2x slower maybe, but still usable
<netbsduser>
oh, that's nothing
<netbsduser>
i get a worse penalty from an O0 build and without that you can't debug at all
<heat>
sure i can
<heat>
i debug with -O2 on
<Ermine>
after that I'll do something on onyx
zetef has quit [Remote host closed the connection]
<netbsduser>
i like to be able to see my variables not gdb whining "{optimised out}"
<heat>
that is annoying but most of them are okay
<nikolapdp>
Ermine good luck
<Ermine>
thx
<nikolapdp>
how do you defend your diploma
<heat>
good luck!
<netbsduser>
sometimes you can identify where you want to find out about the contents of a variable and insert a printf there so you can see it despite gdb's pretensions but it's a bit of a time sink
<netbsduser>
yes good luck Ermine
<dostoyevsky2>
netbsduser: Or maybe write the OS in Rust? I think that should cover a lot of sanitation
<Ermine>
thank you heat and netbsduser
<netbsduser>
nikolapdp: by a viva, you have to hold your ground in front of a panel of experts grilling you
<netbsduser>
dostoyevsky2: rust cannot even capture half of the tricks i employ
<netbsduser>
and i have more in the pipeline
zetef has joined #osdev
<nikolapdp>
what do they grill you about
<nikolapdp>
rust is really overrated
<netbsduser>
for example i will be depending on certain objects which have reached their end-of-life but are still accessible in certain cases maintaining type stability for a grace period (this will be an RCU use)
<Ermine>
nikolapdp: about literally everything
<nikolapdp>
kek
<Ermine>
"Your title page is shite"
<Ermine>
"Your references list is shite"
<dostoyevsky2>
nikolapdp: I guess if you wanted to use Rust for an OS without unsafe, you'd have to copy data a lot... or invent some phantom pointers for avoiding circular data structures
<Ermine>
"Your topic is off-topic in our department"
<netbsduser>
rust is very good at enforcing the conventional but in a kernel (and i imagine this applies to other software which has to employ every trick in the book, like database engines) you aren't dealing in the conventional anymore
<heat>
rcu is hard to express in rust's type system yeah
<heat>
we'll see how that unfolds
xenos1984 has joined #osdev
<heat>
worst case unsafe {} with a large big comment
<heat>
whts up with me and large big today
<nikolapdp>
might as well use c then
<heat>
what
<nikolapdp>
> worst case unsafe {} with a large big comment
<heat>
"rust gets you wins but sometimes it doesn't fit the bill and you need to go manual"
<heat>
"might as well use C then!"
<nikolapdp>
indeed
<dostoyevsky2>
just make your fn main() unsafe... then you have one localized unsafe :)
<heat>
does it need to solve all the problems for you to use it?
<heat>
because C solves none of them
<kof673>
nikolapdp, https://0x0.st/s/viVQXnwb0PZ-KeaVUV7ZdA/Hd-h.jpg there is *a* green frog in the middle, both wet and dry...then it turns to dry land supposedly so you may cross at the equinox lol
<kof673>
(they might use another frog earlier)
zetef has quit [Remote host closed the connection]
<dostoyevsky2>
kof673: is that the loading screen of your OS?
Fingel has quit [Quit: Fingel]
<gog>
hi
<heat>
woah gog hi
<heat>
you just missed a heated conversation about zig
<nikolapdp>
hello gog
<gog>
i'm over zig
<nikolapdp>
zig??
<nikolapdp>
i missed that discussion too
<heat>
oh you're over zig?
<heat>
are you a hare stan now?
<nikolapdp>
yes, we stan hare here
<heat>
i stan nim
<hunta987>
im a nimwit
<kof673>
dostoyevsky, i thought about an ouroborus lol
<dostoyevsky2>
kof673: like an infinite loading screen
<bslsk05>
'All Your Base Are Belong To Us' by zuchini (00:04:21)
<Ermine>
embed this video, write a decoder, and get frames on the screen with GOP's BitBlt
<kof673>
well i want something like synthesis but c89...jitty
<kof673>
*synthesis os was
<nikolapdp>
tcc
<dostoyevsky2>
Ermine: I guess I could just embed an existing video decoder + the video data... but not sure how to play the sound...
<nikolapdp>
pcspkr :)
<hunta987>
with a fast timer you can get "good" sound from the pc speaker
<hunta987>
clockrate
<dostoyevsky2>
could an OS just ask the bios for some hardware address (dma or the like) where one could draw graphics and play sound?
<childlikempress>
tcc is awful codegen
<Ermine>
yes, use VESA and you get framebuffer
<gog>
isn't it connected directly to channel 2 of the PIT?
<gog>
on ibm compat ig
<nikolapdp>
childlikempress: but it can jit :)
<gog>
you're PWMing pretty hard and it's cpu-bound
<Ermine>
or GOP on EFI systems, and you can get framebuffer
<childlikempress>
nikolapdp: luajit a nice ~pareto-optimal point with actually decent codegen
<geist>
driving the PC speaker to simulate some sort of DAC style playback is tricky but i assume it's a solved problem
<geist>
though it may take a lot of cpu time
<acidx>
it's not that hard!
<Ermine>
for anything better than pc speaker you need to drive a sound card
<acidx>
have to jig the PIT to drive the speaker
<Ermine>
(hda driver would suffice I guess)
<clever>
geist: i lost it decades ago, but i had a win95 driver, that would bit-bang the speaker to play wave files, and it had an option to improve quality, by turning IRQ's off, lol
<acidx>
last time I did this I had a ring buffer that would be consumed in an ISR
<gog>
the pit is running at like 1.4mhz or something right
<geist>
yah but to constantly reprogram it to play back a PCM sound file i assume involves some sort of transformation
<clever>
windows saw it as a pcm based sound card, so you could then play audio in any app
<nikolapdp>
childlikempress: you've just remineded me that i should look into it
<geist>
or di you just whack the PIT to tick it once?
<dostoyevsky2>
Ermine: I guess one could let qemu simualte a sound card where you can just stream some wav the same way one could stream the video via framebuffer?
<zid>
are you talking about people's windows again nikolapdp
<nikolapdp>
no zid
<zid>
pokémon yellow does this btw
<Ermine>
dostoyevsky2: tbh i don't know how audio hardware works
<bslsk05>
github.com: [MS-DOS] Preliminary audio support using PC-Speaker · lpereira/Mines@089dc8e · GitHub
<zid>
it bit bangs 1bit audio into one of the channels with interrupts off to make pikachu say "Pikachu" in horrible aliased noise :D
<clever>
:D
<gog>
there's no small amount of psychoacoustics to make it work
<acidx>
(the code that's there will just play some white noise, I didn't push the finished MOD player to github)
<gog>
like whats the minimum interval before it doesn't sound like a tone of x Hz anymore
<geist>
hmm ` outb(0x42, sample >> 1);` is that the trick?
<dostoyevsky2>
Ermine: I guess the easiest audio APIs where like: just beeping for a given length, then they added pitch and volume... but they didn't have streaming yet, so then came synthesizers, where you can model a waveform... and eventually you play full samples, like wav files
<geist>
loading 7 bits of the sample as some sort of counter or whatnot?
navi has quit [Ping timeout: 268 seconds]
<geist>
acidx: so i see it setting up the counter at 16khz and then feeding noise into it, what's the mechanism for the data getting fed in on that line?
<geist>
does the timer shift it out?
<acidx>
geist: the code that's there doesn't do it, it was just the initial commit. I didn't push the new code as it was crashing somewhere and I didn't have time to fix it. but the idea was essentially a ring buffer that was consumed by the ISR and populated by code outside the ISR
<acidx>
all the mixing and whatnot happened outside the ISR
<geist>
yeah but the key is that 'play sample' routine. it loads it into a register
<geist>
what is the mechamism by which that twiddles the speaker?
<geist>
(i'd read the comments on what you're programming the timer as but you didn't write any :)