asinfo

The asinfo section consists of an array of the following structure. Each entry describes the attributes of one section of address space on the machine.

struct asinfo_entry {
    uint64_t            start;
    uint64_t            end;
    uint16_t            owner;
    uint16_t            name;
    uint16_t            attr;
    uint16_t            priority;
    int                 (*alloc_checker)(struct syspage_entry *__sp, 
                                     uint64_t   *__base,
                                     uint64_t   *__len,
                                     size_t     __size,
                                     size_t     __align);
    uint32_t            spare;
};
Member Description
start Gives the first physical address of the range being described.
end Gives the last physical address of the range being described. Note that this is the actual last byte, not one beyond the end.
owner An offset from the start of the section giving the owner of this entry (its "parent" in the tree). It's set to AS_NULL_OFF if the entry doesn't have an owner (it's at the "root" of the address space tree).
name An offset from the start of the strings section of the system page giving the string name of this entry.
attr Contains several bits affecting the address range (see below).
priority Indicates the speed of the memory in the address range. Lower numbers mean slower memory. The macro AS_PRIORITY_DEFAULT is defined to use a default value for this field (currently defined as 100).
Note: The alloc_checker isn't currently used. When implemented, it will let you provide finer-grain control over how the system allocates memory (e.g. making sure that ISA memory used for DMA doesn't cross 64 KB boundaries).