Discussion:
Wiki Edits: ascii art on the anatomy of a hurd system page
Joshua Branson
2018-11-02 16:39:05 UTC
Permalink
I guess I'm a visual learner. I hope some might find this graphic
helpful. I'm making it it's own patch, because I'm not certain how
accurate this "image" is.

Thanks,

Joshua
Samuel Thibault
2018-11-02 19:45:21 UTC
Permalink
Hello,
Post by Joshua Branson
I guess I'm a visual learner. I hope some might find this graphic
helpful. I'm making it it's own patch, because I'm not certain how
accurate this "image" is.
It's correct, but could be improved: I'd say rather take the example of
glibc's send(), which is an RPC handled by pfinet, which uses a
device_write RPC to actually emit an Ethernet frame, which is handled by
netdde, which pushes the hardware, and gets an interrupt from GNU Mach
when that's done.

Samuel
Joshua Branson
2018-11-03 15:05:38 UTC
Permalink
Post by Samuel Thibault
Hello,
Post by Joshua Branson
I guess I'm a visual learner. I hope some might find this graphic
helpful. I'm making it it's own patch, because I'm not certain how
accurate this "image" is.
It's correct, but could be improved: I'd say rather take the example of
glibc's send(), which is an RPC handled by pfinet, which uses a
device_write RPC to actually emit an Ethernet frame, which is handled by
netdde, which pushes the hardware, and gets an interrupt from GNU Mach
when that's done.
Ok, I'll try to tweak it for you in a few days.
Post by Samuel Thibault
Samuel
Joshua Branson
2018-11-09 16:59:31 UTC
Permalink
Post by Samuel Thibault
Hello,
Post by Joshua Branson
I guess I'm a visual learner. I hope some might find this graphic
helpful. I'm making it it's own patch, because I'm not certain how
accurate this "image" is.
It's correct, but could be improved: I'd say rather take the example of
glibc's send(), which is an RPC handled by pfinet, which uses a
device_write RPC to actually emit an Ethernet frame, which is handled by
netdde, which pushes the hardware, and gets an interrupt from GNU Mach
when that's done.
I think the new attached patch shows that, but I'm not an expert.
Samuel Thibault
2018-11-09 19:09:56 UTC
Permalink
Post by Joshua Branson
Post by Samuel Thibault
It's correct, but could be improved: I'd say rather take the example of
glibc's send(), which is an RPC handled by pfinet, which uses a
device_write RPC to actually emit an Ethernet frame, which is handled by
netdde, which pushes the hardware, and gets an interrupt from GNU Mach
when that's done.
I think the new attached patch shows that, but I'm not an expert.
It's more interesting, yet not as good as it could :)
Post by Joshua Branson
+ ---------------------------------------
+ | \ Hurd Servers |
+ | | |
+ | | auth and other servers|
+ | | |
+ | pfinet -> device_write RPC |
+ | \ | |
+ | \ | |
+ | \ | |
+ --------------------------------------
+ \ /
+ \ netdde
netdde is actually one of the hurd servers. I'd say either drop the Hurd
Servers frame and use frames around pfinet and netdde, or keep the Hurd
Servers frame, but put frames around pfinet and netdde. Otherwise it's
misguiding, the reader could think that the "Hurd Servers" is just one
process.

pfinet itself doesn't talk with GNU Mach, it really only uses
device_write implemented by netdde, which pushes to the hardware (after
asking GNU Mach for permission)

Samuel
Joshua Branson
2018-11-10 15:32:15 UTC
Permalink
Post by Samuel Thibault
Post by Joshua Branson
Post by Samuel Thibault
It's correct, but could be improved: I'd say rather take the example of
glibc's send(), which is an RPC handled by pfinet, which uses a
device_write RPC to actually emit an Ethernet frame, which is handled by
netdde, which pushes the hardware, and gets an interrupt from GNU Mach
when that's done.
I think the new attached patch shows that, but I'm not an expert.
It's more interesting, yet not as good as it could :)
Thanks for the awesome info! I went ahead and make an inkscape image.
I think it looks much better as an svg image! Maybe at some point I
could add an emacs -> fopen -> ext2fs -> libdiskfs to the svg image as
well. Let me know what you think.

Thanks,

Joshua
Samuel Thibault
2018-11-10 19:01:28 UTC
Permalink
Post by Joshua Branson
Post by Samuel Thibault
Post by Joshua Branson
Post by Samuel Thibault
It's correct, but could be improved: I'd say rather take the example of
glibc's send(), which is an RPC handled by pfinet, which uses a
device_write RPC to actually emit an Ethernet frame, which is handled by
netdde, which pushes the hardware, and gets an interrupt from GNU Mach
when that's done.
I think the new attached patch shows that, but I'm not an expert.
It's more interesting, yet not as good as it could :)
Thanks for the awesome info! I went ahead and make an inkscape image.
The arrows are correct, but the framing is misleading. I believe you
really need to have proper frame conventions for processes boundaries
and for components: applications run along glibc within the same
process, and hurd translators run as different processes. If that's not
represented it will be misleading.

Samuel
Samuel Thibault
2018-11-10 19:02:04 UTC
Permalink
Also, please base your future patches on the head of the git, not on
your previous patches which I haven't applied (and don't plan to apply)

Samuel

Joshua Branson
2018-11-10 15:47:13 UTC
Permalink
Post by Samuel Thibault
Post by Joshua Branson
Post by Samuel Thibault
It's correct, but could be improved: I'd say rather take the example of
glibc's send(), which is an RPC handled by pfinet, which uses a
device_write RPC to actually emit an Ethernet frame, which is handled by
netdde, which pushes the hardware, and gets an interrupt from GNU Mach
when that's done.
I think the new attached patch shows that, but I'm not an expert.
It's more interesting, yet not as good as it could :)
I think I sent you the patch with the inkscape image, but I guess I did
not send you the paragraph to explain it.

The graphic below demonstrates this. In the picture glibc's send(),
which is an RPC handled by pfinet, which uses a device_write RPC to
actually emit an Ethernet frame, which is handled by netdde, which
pushes the hardware, and gets an interrupt from GNU Mach when that's
done.


I'll try to get my "wiki" branch updated against master, so you don't
have to manually modify my patches. But I'm still learning git, so that
may take me a while to figure out how to do.
Post by Samuel Thibault
Post by Joshua Branson
+ ---------------------------------------
+ | \ Hurd Servers |
+ | | |
+ | | auth and other servers|
+ | | |
+ | pfinet -> device_write RPC |
+ | \ | |
+ | \ | |
+ | \ | |
+ --------------------------------------
+ \ /
+ \ netdde
netdde is actually one of the hurd servers. I'd say either drop the Hurd
Servers frame and use frames around pfinet and netdde, or keep the Hurd
Servers frame, but put frames around pfinet and netdde. Otherwise it's
misguiding, the reader could think that the "Hurd Servers" is just one
process.
pfinet itself doesn't talk with GNU Mach, it really only uses
device_write implemented by netdde, which pushes to the hardware (after
asking GNU Mach for permission)
Samuel
Joshua Branson
2018-11-10 16:38:53 UTC
Permalink
Post by Samuel Thibault
Post by Joshua Branson
Post by Samuel Thibault
It's correct, but could be improved: I'd say rather take the example of
glibc's send(), which is an RPC handled by pfinet, which uses a
device_write RPC to actually emit an Ethernet frame, which is handled by
netdde, which pushes the hardware, and gets an interrupt from GNU Mach
when that's done.
I think the new attached patch shows that, but I'm not an expert.
It's more interesting, yet not as good as it could :)
I decided to add in some color to the image. Let me know what you
think.
Loading...