Linux 在bitmap.h中,为什么bitmap_zero需要memset?

Linux 在bitmap.h中,为什么bitmap_zero需要memset?,linux,bitmap,linux-kernel,memset,Linux,Bitmap,Linux Kernel,Memset,在include/linux/bitmap.h的bitmap_zero()中,为什么要使用memset static inline void bitmap_zero(unsigned long *dst, int nbits) { if (small_const_nbits(nbits)) *dst = 0UL; else { int len = BITS_TO_LONGS(nbits) * size

在include/linux/bitmap.h的bitmap_zero()中,为什么要使用memset

static inline void bitmap_zero(unsigned long *dst, int nbits)
{
        if (small_const_nbits(nbits))
                *dst = 0UL;
        else {
                int len = BITS_TO_LONGS(nbits) * sizeof(unsigned long);
                memset(dst, 0, len);
        }
}

*det=OUL
还不够吗?

小常数的定义是:

#define small_const_nbits(nbits) \
    (__builtin_constant_p(nbits) && (nbits) <= BITS_PER_LONG)
#定义小常数(nbits)\
(uuu内置常数u p(nbits)和&(nbits)