Skip to content

Commit

Permalink
libmetal: set ept address loop++ in bitmap
Browse files Browse the repository at this point in the history
CPU0                                CPU1
create_ept1:addr1                   create_ept1
OK                       <======    msg1
OK                       <======    msg2
OK                       <======    msg3
                           msg4
                         <======    msg4 on the virtioqueue
close_ept1                          close_ept1

create_ept2:addr1                   create_ept1
(same addr with ept1)
                           msg4
ept2 recv ept1 msg ERROR <======

The msg4 which belong to ep1, error received by ept2.

For the issue, I give a resolve method,
for the rpmsg_get_address(), always return a new increased num.

Signed-off-by: Guiding Li <[email protected]>
  • Loading branch information
GUIDINGLI authored and arnopo committed Oct 31, 2023
1 parent e087ea5 commit 694620f
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions lib/utilities.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,10 +134,10 @@ metal_bitmap_next_clear_bit(unsigned long *bitmap, unsigned int start,
unsigned int bit;

for (bit = start;
bit < max && !metal_bitmap_is_bit_clear(bitmap, bit);
bit < max + start && !metal_bitmap_is_bit_clear(bitmap, bit % max);
bit++)
;
return bit;
return bit % max;
}

#define metal_bitmap_for_each_clear_bit(bitmap, bit, max) \
Expand Down

0 comments on commit 694620f

Please sign in to comment.