Sergey Bugaev, le mer. 31 janv. 2024 14:05:18 +0300, a ecrit:
> On Tue, Jan 30, 2024 at 9:45 PM Samuel Thibault <samuel.thiba...@gnu.org> 
> wrote:
> > > > +kern_return_t vm_pages_phys(
> > > > +       host_t                          host,
> > > > +       vm_map_t                        map,
> > > > +       vm_address_t                    address,
> > > > +       vm_size_t                       size,
> > >
> > > This is supposed to be a number of pages rather than VM region size,
> > > right?
> >
> > No, I followed the same principle as the vm_allocate etc. calls.
> >
> > In the function itself, count = atop(size).
> 
> Ack, indeed, I was looking at the wrong thing.
> 
> > > You're supposed to allocate your own buffer in this case, something like 
> > > this:
> >
> > Ok, done so, thanks!
> 
> I see you used kmem_alloc_pageable() over kmem_alloc() that I
> suggested. Why is that?

Because I have seen it used so in other places,
notably host_ipc_marequest_info, host_slab_info,
host_virtual_physical_table_info

> My understanding is the point of kmem_alloc()
> is to be used in cases like this, when you don't want the routine
> itself to fault while holding locks on VM objects/maps.

That's quite subtle. Is that documented somewhere?

Samuel

Reply via email to