Range Lists

A range list is a sorted list of IO port or memory address ranges (in DWORD form) in which no two ranges overlap. Resource arbitrators that manage I/O and memory resources use the range list services to discover whether a given IO or memory range conflicts with any other range. These services detect attempts to create range lists containing overlaps and either fail or create merged ranges where there would have been overlaps. Each range must specify a continguous range of addresses, but the range list itself can contain multiple ranges, none of which necessarily need to be contiguous with any other range in the list.

There are these range list services:

Service

Description

CONFIGMG_Add_Range

Adds a memory range to a range list.

CONFIGMG_Create_Range_List

Creates a list of memory ranges.

CONFIGMG_Delete_Range

Deletes a memory range from a range list.

CONFIGMG_Dump_Range_List

Dumps a range list to a debugging terminal.

CONFIGMG_Dup_Range_List

Copies a range list.

CONFIGMG_First_Range

Retrieves the first range element in a range list.

CONFIGMG_Free_Range_List

Frees the specified range list and memory allocated to it.

CONFIGMG_Intersect_Range_List

Creates a range list from the intersection of two specified range lists.

CONFIGMG_Invert_Range_List

Creates a range list that is the inverse of a specified range list; all claimed memory ranges in the new list are specified as free in the old list, and vice versa.

CONFIGMG_Next_Range

Retrieves the next range element in a range list.

CONFIGMG_Test_Range_Available

Checks a memory range against a range list to ensure no conflicts exist.