From 86804f5b3e5b2420884795845c10713f8b07d371 Mon Sep 17 00:00:00 2001 From: Jukka Jokiniva Date: Mon, 5 May 2025 16:05:10 +0300 Subject: [PATCH] Allocated address ranges with round robin --- src/vnm/AddressRangeInternal.cc | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/vnm/AddressRangeInternal.cc b/src/vnm/AddressRangeInternal.cc index 7378f30424..43fa4b014d 100644 --- a/src/vnm/AddressRangeInternal.cc +++ b/src/vnm/AddressRangeInternal.cc @@ -34,23 +34,23 @@ int AddressRangeInternal::get_single_addr(unsigned int& index, std::string& msg) } int AddressRangeInternal::get_range_addr(unsigned int& index, - unsigned int rsize, std::string& msg) const + unsigned int rsize, std::string& msg) { unsigned int ar_size = get_size(); bool valid; - for (unsigned int i=0; i< ar_size; i++) + for (unsigned int i=0; i< ar_size; i++, next = (next+1)%ar_size ) { - if ( allocated.count(i) != 0 ) + if ( allocated.count(next) != 0 ) { continue; } valid = true; - for (unsigned int j=0; j= ar_size ) + if ( allocated.count(next) != 0 || i >= ar_size || next >= ar_size ) { valid = false; break; @@ -59,7 +59,8 @@ int AddressRangeInternal::get_range_addr(unsigned int& index, if (valid == true) { - index = i - rsize; + index = next - rsize; + next = next % ar_size; return 0; } } -- 2.39.3 (Apple Git-146)