<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kmi/arch/riscv64/conf/init.c, branch master</title>
<subtitle>ACTIVE - Kernel with migrating threads as IPC</subtitle>
<id>https://metanimi.dy.fi/cgit/kmi/atom?h=master</id>
<link rel='self' href='https://metanimi.dy.fi/cgit/kmi/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/kmi/'/>
<updated>2024-07-09T19:12:27Z</updated>
<entry>
<title>start working on tests</title>
<updated>2024-07-09T19:12:27Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2024-07-09T19:12:27Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/kmi/commit/?id=e8a1df103cc28419dd7d4439c0b1d1739d110f78'/>
<id>urn:sha1:e8a1df103cc28419dd7d4439c0b1d1739d110f78</id>
<content type='text'>
+ Current setup will likely not last long, just a stopgap until I figure
  out how I want to build each testcase etc.

  Probably dir based, but I'll probably add some scripts that generate
  the build rules for each test case (or binary?). Also, should probably
  put ouput files in a build directory and keep the source clean, but
  again, good enough for now.

  Will have to start implementing more extensive tests, and probably
  come up with some way to compare textual output etc.
</content>
</entry>
<entry>
<title>allow regions to have reserved areas</title>
<updated>2024-07-09T16:24:12Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2024-07-09T16:24:12Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/kmi/commit/?id=89d7cf197b2cae130565467bdfad5d5ef5fed2dd'/>
<id>urn:sha1:89d7cf197b2cae130565467bdfad5d5ef5fed2dd</id>
<content type='text'>
+ A reserved area is an area at the start of the region that should not
  be used unless explicitly asked for, for example null pages.

  As such, a small correction to my previous commit message: There's no
  danger in not locking req_mem() etc, as a null page will only be
  allocated when explicitly asked for.
</content>
</entry>
<entry>
<title>allow mapping null page</title>
<updated>2024-07-09T14:35:56Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2024-07-09T14:35:56Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/kmi/commit/?id=298636079d912d0936f8156a609fe74b839c547b'/>
<id>urn:sha1:298636079d912d0936f8156a609fe74b839c547b</id>
<content type='text'>
+ User has to 'free' the 0 page before it becomes accessible to mapping.
  Probably worth noting that this is likely VERY niche and mainly
  concerns stuff like certain kinds of emulators that I'm still
  eons from implementing, but still.

  Unbacked pages can also be useful for some kinds of notifications,
  like 'if someone writes to this page, please report it to me with this
  ID' or whatever, I remember seeing some discussion about it somewhere
  but that's also not really relevant for the moment.

  Most significantly, at least with the current design,
  after the null page is freed it becomes available for use to regular req_mem()
  calls, so users should probably using locks around memory requests.
  That's probably a good idea anyway as internally the kernal has to
  lock the virtual memory, and without a scheduler it might cause
  threads to spin for a while in the kernel which is rather bad.
</content>
</entry>
<entry>
<title>add req_page back in as I realized it's useful</title>
<updated>2024-07-07T18:47:14Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2024-07-07T18:47:14Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/kmi/commit/?id=219c27d420fe0abe5515cefc2513c6fe60aafdf9'/>
<id>urn:sha1:219c27d420fe0abe5515cefc2513c6fe60aafdf9</id>
<content type='text'>
+ Can be used to pass contiguous memory regions to things like virtio
  block devices for implementing disk drivers etc.
</content>
</entry>
<entry>
<title>make executable entrypoint universal callback</title>
<updated>2024-07-07T15:12:55Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2024-07-07T15:12:55Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/kmi/commit/?id=fe4c623cb9320226866829317cea8ba0c49e7dbc'/>
<id>urn:sha1:fe4c623cb9320226866829317cea8ba0c49e7dbc</id>
<content type='text'>
+ Effectively means that all executables can be called into, but if an
  exe doesn't want to deal with anyone else it should just set a flag
  like `not_really_a_server` or whatever
</content>
</entry>
<entry>
<title>smp now seems to work</title>
<updated>2024-07-07T04:00:43Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2024-07-07T04:00:43Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/kmi/commit/?id=122374c362ba8bb9082385da3c82e264ab594f15'/>
<id>urn:sha1:122374c362ba8bb9082385da3c82e264ab594f15</id>
<content type='text'>
+ Had some minor issues with a wraparound of size_t that effectively
  meant that some regions were allocated twice. Also, booting should be
  a bit more reliable now, turned out that the previous iteration of the
  booting was just accidentally working due to the kernel being placed
  'close enough' in RAM to where it was linked to. Fixed by allocating a
  vmem of O1 that maps the kernel to a 2MiB boundary at boot, pretty
  nifty.
</content>
</entry>
<entry>
<title>add RAM usage counting</title>
<updated>2024-07-06T19:08:50Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2024-07-06T19:08:50Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/kmi/commit/?id=3528f88fc36df6964c0efed784ae223cfe93544e'/>
<id>urn:sha1:3528f88fc36df6964c0efed784ae223cfe93544e</id>
<content type='text'>
+ Slightly more overhead but will help track down possible memory leaks
  in the future. Could also add in a flag for turning off/on but I don't
  think the difference in performance is that significant.
</content>
</entry>
<entry>
<title>pretty massive virtual memory rewrite</title>
<updated>2024-07-06T15:14:04Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2024-07-06T15:14:04Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/kmi/commit/?id=76517486919657ecadda9867125dc6730f29a5b7'/>
<id>urn:sha1:76517486919657ecadda9867125dc6730f29a5b7</id>
<content type='text'>
+ The system is now a bit simpler and hopefully easier to understand, while also
  extending the shared memory to be 1:N, where there is one owner who
  may become a zombie while waiting for the N to die.
</content>
</entry>
<entry>
<title>more complete interrupt handling outline</title>
<updated>2024-07-02T18:40:10Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2024-07-02T18:40:10Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/kmi/commit/?id=8a3452098267e1af127d6c4f1836a9d82cd23f38'/>
<id>urn:sha1:8a3452098267e1af127d6c4f1836a9d82cd23f38</id>
<content type='text'>
+ Still largely untested, should really try to come up with a proper
  testsuite, at the moment it's mostly me trying things out in the (as
  of yet unreleased) kmx repo
</content>
</entry>
<entry>
<title>expand notifications into interrupt handlers</title>
<updated>2024-07-01T20:34:57Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2024-07-01T20:34:57Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/kmi/commit/?id=7ad9c01dad7b1b46eced8290b8b991383d648188'/>
<id>urn:sha1:7ad9c01dad7b1b46eced8290b8b991383d648188</id>
<content type='text'>
+ Terminology is still a bit poor, and will still have to write
  documentation + implement ipis properly
</content>
</entry>
</feed>
