Hi

I am experimenting Xen with my embedded system environment and got a
question in next_module() function.

*static paddr_t __init next_module(paddr_t s, paddr_t *end)*
*{*
*    struct bootmodules *mi = &bootinfo.modules;*
*    paddr_t lowest = ~(paddr_t)0;*
*    int i;*

*    for ( i = 0; i < mi->nr_mods; i++ )*
*    {*
*        paddr_t mod_s = mi->module[i].start;*
*        paddr_t mod_e = mod_s + mi->module[i].size;*

*        if ( !mi->module[i].size )*
*            continue;*

*        if ( mod_s < s )*
*            continue;*
*        if ( mod_s > lowest )*
*            continue;*
*        if ( mod_s > *end )*
*            continue;*
*        lowest = mod_s;*
*        *end = min(*end, mod_e);*
*    }*
*    return lowest;*
*}*

The job of next_module() function is excluding module exist RAM range
between s and *end and finding empty space which can be heap space.

But Its function does not work if module range is bigger than s and *end
range.
(Case when module range is mod_s <= s and mod_e >= *end)

*        if ( mod_s < s )*
*            continue;*

Above condition passes the case and xen consider range s and *end is free
space.

Is it expected result or mistake?

Thank you.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

Reply via email to