HyperDbg/hyperdbg/hyperhv/code/common/Bitwise.c
2024-06-24 18:05:54 +09:00

49 lines
878 B
C

/**
* @file Bitwise.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Functions for bit-level operations
*
* @version 0.2
* @date 2023-04-27
*
* @copyright This project is released under the GNU Public License v3.
*
*/
#include "pch.h"
/**
* @brief Check whether the bit is set or not
*
* @param BitNumber
* @param addr
* @return int
*/
int
TestBit(int BitNumber, unsigned long * addr)
{
return (BITMAP_ENTRY(BitNumber, addr) >> BITMAP_SHIFT(BitNumber)) & 1;
}
/**
* @brief unset the bit
*
* @param BitNumber
* @param addr
*/
void
ClearBit(int BitNumber, unsigned long * addr)
{
BITMAP_ENTRY(BitNumber, addr) &= ~(1UL << BITMAP_SHIFT(BitNumber));
}
/**
* @brief set the bit
*
* @param BitNumber
* @param addr
*/
void
SetBit(int BitNumber, unsigned long * addr)
{
BITMAP_ENTRY(BitNumber, addr) |= (1UL << BITMAP_SHIFT(BitNumber));
}