diff --git a/kernel_liteos_a-OpenHarmony-v3.1.7-Release/kernel/base/core/los_bitmap.c b/kernel_liteos_a-OpenHarmony-v3.1.7-Release/kernel/base/core/los_bitmap.c index 4e8b8600..1b30416b 100644 --- a/kernel_liteos_a-OpenHarmony-v3.1.7-Release/kernel/base/core/los_bitmap.c +++ b/kernel_liteos_a-OpenHarmony-v3.1.7-Release/kernel/base/core/los_bitmap.c @@ -38,6 +38,7 @@ #define OS_BITMAP_WORD_MASK ~0UL /* find first zero bit starting from LSB */ +//这段代码的功能与位图操作有关,可能是用于设置、清除或检查位图中特定位置的状态或标志 STATIC INLINE UINT16 Ffz(UINTPTR x) { return __builtin_ffsl(~x) - 1; @@ -51,7 +52,7 @@ VOID LOS_BitmapSet(UINT32 *bitmap, UINT16 pos) *bitmap |= 1U << (pos & OS_BITMAP_MASK); } - +//这个函数用于清除位图中特定位置的位。 VOID LOS_BitmapClr(UINT32 *bitmap, UINT16 pos) { if (bitmap == NULL) { @@ -60,7 +61,7 @@ VOID LOS_BitmapClr(UINT32 *bitmap, UINT16 pos) *bitmap &= ~(1U << (pos & OS_BITMAP_MASK)); } - +//这个函数用于获取位图中最高位的索引。 UINT16 LOS_HighBitGet(UINT32 bitmap) { if (bitmap == 0) { @@ -69,7 +70,7 @@ UINT16 LOS_HighBitGet(UINT32 bitmap) return (OS_BITMAP_MASK - CLZ(bitmap)); } - +//这个函数用于获取位图中最低位的索引 UINT16 LOS_LowBitGet(UINT32 bitmap) { if (bitmap == 0) { @@ -78,7 +79,7 @@ UINT16 LOS_LowBitGet(UINT32 bitmap) return CTZ(bitmap); } - +//这个函数用于设置位图中一系列连续的位。 VOID LOS_BitmapSetNBits(UINTPTR *bitmap, UINT32 start, UINT32 numsSet) { UINTPTR *p = bitmap + BITMAP_WORD(start); @@ -98,7 +99,7 @@ VOID LOS_BitmapSetNBits(UINTPTR *bitmap, UINT32 start, UINT32 numsSet) *p |= maskToSet; } } - +//这个函数用于清除位图中一系列连续的位。 VOID LOS_BitmapClrNBits(UINTPTR *bitmap, UINT32 start, UINT32 numsClear) { UINTPTR *p = bitmap + BITMAP_WORD(start); @@ -118,7 +119,7 @@ VOID LOS_BitmapClrNBits(UINTPTR *bitmap, UINT32 start, UINT32 numsClear) *p &= ~maskToClear; } } - +//这个函数用于找到位图中第一个为1的位的位置。 INT32 LOS_BitmapFfz(UINTPTR *bitmap, UINT32 numBits) { INT32 bit, i;