Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Implement paging on the pci arbiter

0 views
Skip to first unread message

Joan Lledó

unread,
Aug 26, 2020, 4:25:01 AM8/26/20
to bug-...@gnu.org
Hi,

I'm doing a research on how to allow arbiter clients to map bar regions
into their spaces. It seems to me the approach should be:

1.- Make the arbiter implement paging
2.- Expect clients to mmap() the region files the arbiter generates

Sounds that correct for you?

I'm a bit confused with libpager, the reference manual seems to be obsolete:

https://www.gnu.org/software/hurd/doc/hurd_5.html#SEC32

From this document I assumed I should create a pager for each region
file, call page_demuxer from the arbiter's demuxer and implement
callback functions. But it seems pager_demuxer() is not defined anymore
and servers use pager_start_workers() which I'm not sure what's for.

Is there more recent documentation about libpager?

signature.asc

Samuel Thibault

unread,
Aug 26, 2020, 11:01:51 AM8/26/20
to jll...@member.fsf.org, bug-...@gnu.org
Hello,

Joan Lledó, le mer. 26 août 2020 10:24:49 +0200, a ecrit:
> I'm doing a research on how to allow arbiter clients to map bar regions
> into their spaces. It seems to me the approach should be:
>
> 1.- Make the arbiter implement paging
> 2.- Expect clients to mmap() the region files the arbiter generates
>
> Sounds that correct for you?
>
> I'm a bit confused with libpager,

I'm unsure if libpager will be useful actually, since all you need is
to pass on a memory object clamped to the target physical memory. See
gnumach's support for proxy memory object, which possibly is just
enough.

Samuel

Samuel Thibault

unread,
Aug 26, 2020, 6:30:54 PM8/26/20
to jll...@member.fsf.org, bug-...@gnu.org
Joan Lledó, le mer. 26 août 2020 10:24:49 +0200, a ecrit:
> From this document I assumed I should create a pager for each region
> file, call page_demuxer from the arbiter's demuxer and implement
> callback functions. But it seems pager_demuxer() is not defined anymore

?
libpager/demuxer.c:pager_demuxer (struct pager_requests *requests,

> and servers use pager_start_workers() which I'm not sure what's for.

It's just a way to manage several threads to handle RPCs. See how it
creates a thread than calls service_paging_requests that runs
pager_demuxer.

Samuel

Joan Lledó

unread,
Aug 27, 2020, 4:26:54 AM8/27/20
to bug-...@gnu.org


El 27/8/20 a les 0:30, Samuel Thibault ha escrit:
> libpager/demuxer.c:pager_demuxer (struct pager_requests *requests,

That's not the same pager_demuxer in the reference, it's a static
function and receives different parameters. It seems there were changes
in the libpager's interface and the documents are not updated.

Samuel Thibault

unread,
Aug 27, 2020, 4:30:52 AM8/27/20
to jll...@member.fsf.org, bug-...@gnu.org
Joan Lledó, le jeu. 27 août 2020 10:26:41 +0200, a ecrit:
Ah indeed, so the document needs updating.

Samuel

0 new messages