NVIDIA DriveOS Linux NSR SDK API Reference

7.0.3.0 Release
nvmisc.h File Reference

Go to the source code of this file.

Macros

#define BIT(b)   (1<<(b))
 
#define BIT32(b)   ((NvU32)1<<(b))
 
#define BIT64(b)   ((NvU64)1<<(b))
 
#define NVBIT(b)   (1<<(b))
 
#define NVBIT32(b)   ((NvU32)1<<(b))
 
#define NVBIT64(b)   ((NvU64)1<<(b))
 
#define BIT_IDX_32(n)
 
#define BIT_IDX_64(n)
 
#define IDX_32(n32)
 
#define DRF_ISBIT(bitval, drf)
 
#define DEVICE_BASE(d)   (0?d)
 
#define DEVICE_EXTENT(d)   (1?d)
 
#define DRF_BASE(drf)   (0?drf)
 
#define DRF_EXTENT(drf)   (1?drf)
 
#define DRF_SHIFT(drf)   ((DRF_ISBIT(0,drf)) % 32)
 
#define DRF_SHIFT_RT(drf)   ((DRF_ISBIT(1,drf)) % 32)
 
#define DRF_MASK(drf)   (0xFFFFFFFF>>(31-((DRF_ISBIT(1,drf)) % 32)+((DRF_ISBIT(0,drf)) % 32)))
 
#define DRF_SHIFTMASK(drf)   (DRF_MASK(drf)<<(DRF_SHIFT(drf)))
 
#define DRF_SIZE(drf)   (DRF_EXTENT(drf)-DRF_BASE(drf)+1)
 
#define DRF_DEF(d, r, f, c)   ((NV ## d ## r ## f ## c)<<DRF_SHIFT(NV ## d ## r ## f))
 
#define DRF_NUM(d, r, f, n)   (((n)&DRF_MASK(NV ## d ## r ## f))<<DRF_SHIFT(NV ## d ## r ## f))
 
#define DRF_VAL(d, r, f, v)   (((v)>>DRF_SHIFT(NV ## d ## r ## f))&DRF_MASK(NV ## d ## r ## f))
 
#define DRF_VAL_SIGNED(d, r, f, v)   (((DRF_VAL(d,r,f,v) ^ (NVBIT(DRF_SIZE(NV ## d ## r ## f)-1)))) - (NVBIT(DRF_SIZE(NV ## d ## r ## f)-1)))
 
#define DRF_IDX_DEF(d, r, f, i, c)   ((NV ## d ## r ## f ## c)<<DRF_SHIFT(NV##d##r##f(i)))
 
#define DRF_IDX_OFFSET_DEF(d, r, f, i, o, c)   ((NV ## d ## r ## f ## c)<<DRF_SHIFT(NV##d##r##f(i,o)))
 
#define DRF_IDX_NUM(d, r, f, i, n)   (((n)&DRF_MASK(NV##d##r##f(i)))<<DRF_SHIFT(NV##d##r##f(i)))
 
#define DRF_IDX_VAL(d, r, f, i, v)   (((v)>>DRF_SHIFT(NV##d##r##f(i)))&DRF_MASK(NV##d##r##f(i)))
 
#define DRF_IDX_OFFSET_VAL(d, r, f, i, o, v)   (((v)>>DRF_SHIFT(NV##d##r##f(i,o)))&DRF_MASK(NV##d##r##f(i,o)))
 
#define DRF_VAL_FRAC(d, r, x, y, v, z)   ((DRF_VAL(d,r,x,v)*z) + ((DRF_VAL(d,r,y,v)*z) / (1<<DRF_SIZE(NV##d##r##y))))
 
#define DRF_SHIFT64(drf)   ((DRF_ISBIT(0,drf)) % 64)
 
#define DRF_MASK64(drf)   (NV_U64_MAX>>(63-((DRF_ISBIT(1,drf)) % 64)+((DRF_ISBIT(0,drf)) % 64)))
 
#define DRF_SHIFTMASK64(drf)   (DRF_MASK64(drf)<<(DRF_SHIFT64(drf)))
 
#define DRF_DEF64(d, r, f, c)   (((NvU64)(NV ## d ## r ## f ## c))<<DRF_SHIFT64(NV ## d ## r ## f))
 
#define DRF_NUM64(d, r, f, n)   ((((NvU64)(n))&DRF_MASK64(NV ## d ## r ## f))<<DRF_SHIFT64(NV ## d ## r ## f))
 
#define DRF_VAL64(d, r, f, v)   ((((NvU64)(v))>>DRF_SHIFT64(NV ## d ## r ## f))&DRF_MASK64(NV ## d ## r ## f))
 
#define DRF_VAL_SIGNED64(d, r, f, v)   (((DRF_VAL64(d,r,f,v) ^ (NVBIT64(DRF_SIZE(NV ## d ## r ## f)-1)))) - (NVBIT64(DRF_SIZE(NV ## d ## r ## f)-1)))
 
#define DRF_IDX_DEF64(d, r, f, i, c)   (((NvU64)(NV ## d ## r ## f ## c))<<DRF_SHIFT64(NV##d##r##f(i)))
 
#define DRF_IDX_OFFSET_DEF64(d, r, f, i, o, c)   ((NvU64)(NV ## d ## r ## f ## c)<<DRF_SHIFT64(NV##d##r##f(i,o)))
 
#define DRF_IDX_NUM64(d, r, f, i, n)   ((((NvU64)(n))&DRF_MASK64(NV##d##r##f(i)))<<DRF_SHIFT64(NV##d##r##f(i)))
 
#define DRF_IDX_VAL64(d, r, f, i, v)   ((((NvU64)(v))>>DRF_SHIFT64(NV##d##r##f(i)))&DRF_MASK64(NV##d##r##f(i)))
 
#define DRF_IDX_OFFSET_VAL64(d, r, f, i, o, v)   (((NvU64)(v)>>DRF_SHIFT64(NV##d##r##f(i,o)))&DRF_MASK64(NV##d##r##f(i,o)))
 
#define FLD_SET_DRF64(d, r, f, c, v)   (((NvU64)(v) & ~DRF_SHIFTMASK64(NV##d##r##f)) | DRF_DEF64(d,r,f,c))
 
#define FLD_SET_DRF_NUM64(d, r, f, n, v)   ((((NvU64)(v)) & ~DRF_SHIFTMASK64(NV##d##r##f)) | DRF_NUM64(d,r,f,n))
 
#define FLD_IDX_SET_DRF64(d, r, f, i, c, v)   (((NvU64)(v) & ~DRF_SHIFTMASK64(NV##d##r##f(i))) | DRF_IDX_DEF64(d,r,f,i,c))
 
#define FLD_IDX_OFFSET_SET_DRF64(d, r, f, i, o, c, v)   (((NvU64)(v) & ~DRF_SHIFTMASK64(NV##d##r##f(i,o))) | DRF_IDX_OFFSET_DEF64(d,r,f,i,o,c))
 
#define FLD_IDX_SET_DRF_DEF64(d, r, f, i, c, v)   (((NvU64)(v) & ~DRF_SHIFTMASK64(NV##d##r##f(i))) | DRF_IDX_DEF64(d,r,f,i,c))
 
#define FLD_IDX_SET_DRF_NUM64(d, r, f, i, n, v)   (((NvU64)(v) & ~DRF_SHIFTMASK64(NV##d##r##f(i))) | DRF_IDX_NUM64(d,r,f,i,n))
 
#define FLD_SET_DRF_IDX64(d, r, f, c, i, v)   (((NvU64)(v) & ~DRF_SHIFTMASK64(NV##d##r##f)) | DRF_DEF64(d,r,f,c(i)))
 
#define FLD_TEST_DRF64(d, r, f, c, v)   (DRF_VAL64(d, r, f, v) == NV##d##r##f##c)
 
#define FLD_TEST_DRF_AND64(d, r, f, c, v)   (DRF_VAL64(d, r, f, v) & NV##d##r##f##c)
 
#define FLD_TEST_DRF_NUM64(d, r, f, n, v)   (DRF_VAL64(d, r, f, v) == n)
 
#define FLD_IDX_TEST_DRF64(d, r, f, i, c, v)   (DRF_IDX_VAL64(d, r, f, i, v) == NV##d##r##f##c)
 
#define FLD_IDX_OFFSET_TEST_DRF64(d, r, f, i, o, c, v)   (DRF_IDX_OFFSET_VAL64(d, r, f, i, o, v) == NV##d##r##f##c)
 
#define FLD_SET_DRF(d, r, f, c, v)   ((v & ~DRF_SHIFTMASK(NV##d##r##f)) | DRF_DEF(d,r,f,c))
 
#define FLD_SET_DRF_NUM(d, r, f, n, v)   ((v & ~DRF_SHIFTMASK(NV##d##r##f)) | DRF_NUM(d,r,f,n))
 
#define FLD_SET_DRF_DEF(d, r, f, c, v)   (v = (v & ~DRF_SHIFTMASK(NV##d##r##f)) | DRF_DEF(d,r,f,c))
 
#define FLD_IDX_SET_DRF(d, r, f, i, c, v)   ((v & ~DRF_SHIFTMASK(NV##d##r##f(i))) | DRF_IDX_DEF(d,r,f,i,c))
 
#define FLD_IDX_OFFSET_SET_DRF(d, r, f, i, o, c, v)   ((v & ~DRF_SHIFTMASK(NV##d##r##f(i,o))) | DRF_IDX_OFFSET_DEF(d,r,f,i,o,c))
 
#define FLD_IDX_SET_DRF_DEF(d, r, f, i, c, v)   ((v & ~DRF_SHIFTMASK(NV##d##r##f(i))) | DRF_IDX_DEF(d,r,f,i,c))
 
#define FLD_IDX_SET_DRF_NUM(d, r, f, i, n, v)   ((v & ~DRF_SHIFTMASK(NV##d##r##f(i))) | DRF_IDX_NUM(d,r,f,i,n))
 
#define FLD_SET_DRF_IDX(d, r, f, c, i, v)   ((v & ~DRF_SHIFTMASK(NV##d##r##f)) | DRF_DEF(d,r,f,c(i)))
 
#define FLD_TEST_DRF(d, r, f, c, v)   ((DRF_VAL(d, r, f, v) == NV##d##r##f##c))
 
#define FLD_TEST_DRF_AND(d, r, f, c, v)   ((DRF_VAL(d, r, f, v) & NV##d##r##f##c))
 
#define FLD_TEST_DRF_NUM(d, r, f, n, v)   ((DRF_VAL(d, r, f, v) == n))
 
#define FLD_IDX_TEST_DRF(d, r, f, i, c, v)   ((DRF_IDX_VAL(d, r, f, i, v) == NV##d##r##f##c))
 
#define FLD_IDX_OFFSET_TEST_DRF(d, r, f, i, o, c, v)   ((DRF_IDX_OFFSET_VAL(d, r, f, i, o, v) == NV##d##r##f##c))
 
#define REF_DEF(drf, d)   (((drf ## d)&DRF_MASK(drf))<<DRF_SHIFT(drf))
 
#define REF_VAL(drf, v)   (((v)>>DRF_SHIFT(drf))&DRF_MASK(drf))
 
#define REF_NUM(drf, n)   (((n)&DRF_MASK(drf))<<DRF_SHIFT(drf))
 
#define FLD_TEST_REF(drf, c, v)   (REF_VAL(drf, v) == drf##c)
 
#define FLD_TEST_REF_AND(drf, c, v)   (REF_VAL(drf, v) & drf##c)
 
#define FLD_SET_REF_NUM(drf, n, v)   (((v) & ~DRF_SHIFTMASK(drf)) | REF_NUM(drf,n))
 
#define CR_DRF_DEF(d, r, f, c)   ((CR ## d ## r ## f ## c)<<DRF_SHIFT(CR ## d ## r ## f))
 
#define CR_DRF_NUM(d, r, f, n)   (((n)&DRF_MASK(CR ## d ## r ## f))<<DRF_SHIFT(CR ## d ## r ## f))
 
#define CR_DRF_VAL(d, r, f, v)   (((v)>>DRF_SHIFT(CR ## d ## r ## f))&DRF_MASK(CR ## d ## r ## f))
 
#define DRF_EXPAND_MW(drf)   drf
 
#define DRF_PICK_MW(drf, v)   (v?DRF_EXPAND_##drf)
 
#define DRF_WORD_MW(drf)   (DRF_PICK_MW(drf,0)/32)
 
#define DRF_BASE_MW(drf)   (DRF_PICK_MW(drf,0)%32)
 
#define DRF_EXTENT_MW(drf)   (DRF_PICK_MW(drf,1)%32)
 
#define DRF_SHIFT_MW(drf)   (DRF_PICK_MW(drf,0)%32)
 
#define DRF_MASK_MW(drf)   (0xFFFFFFFF>>((31-(DRF_EXTENT_MW(drf))+(DRF_BASE_MW(drf)))%32))
 
#define DRF_SHIFTMASK_MW(drf)   ((DRF_MASK_MW(drf))<<(DRF_SHIFT_MW(drf)))
 
#define DRF_SIZE_MW(drf)   (DRF_EXTENT_MW(drf)-DRF_BASE_MW(drf)+1)
 
#define DRF_DEF_MW(d, r, f, c)   ((NV##d##r##f##c) << DRF_SHIFT_MW(NV##d##r##f))
 
#define DRF_NUM_MW(d, r, f, n)   (((n)&DRF_MASK_MW(NV##d##r##f))<<DRF_SHIFT_MW(NV##d##r##f))
 
#define DRF_VAL_MW_1WORD(d, r, f, v)   ((((v)[DRF_WORD_MW(NV##d##r##f)])>>DRF_SHIFT_MW(NV##d##r##f))&DRF_MASK_MW(NV##d##r##f))
 
#define DRF_SPANS(drf)   ((DRF_PICK_MW(drf,0)/32) != (DRF_PICK_MW(drf,1)/32))
 
#define DRF_WORD_MW_LOW(drf)   (DRF_PICK_MW(drf,0)/32)
 
#define DRF_WORD_MW_HIGH(drf)   (DRF_PICK_MW(drf,1)/32)
 
#define DRF_MASK_MW_LOW(drf)   (0xFFFFFFFF)
 
#define DRF_MASK_MW_HIGH(drf)   (0xFFFFFFFF>>(31-(DRF_EXTENT_MW(drf))))
 
#define DRF_SHIFT_MW_LOW(drf)   (DRF_PICK_MW(drf,0)%32)
 
#define DRF_SHIFT_MW_HIGH(drf)   (0)
 
#define DRF_MERGE_SHIFT(drf)   ((32-((DRF_PICK_MW(drf,0)%32)))%32)
 
#define DRF_VAL_MW_2WORD(d, r, f, v)
 
#define DRF_VAL_MW(d, r, f, v)   ( DRF_SPANS(NV##d##r##f) ? DRF_VAL_MW_2WORD(d,r,f,v) : DRF_VAL_MW_1WORD(d,r,f,v) )
 
#define DRF_IDX_DEF_MW(d, r, f, i, c)   ((NV##d##r##f##c)<<DRF_SHIFT_MW(NV##d##r##f(i)))
 
#define DRF_IDX_NUM_MW(d, r, f, i, n)   (((n)&DRF_MASK_MW(NV##d##r##f(i)))<<DRF_SHIFT_MW(NV##d##r##f(i)))
 
#define DRF_IDX_VAL_MW(d, r, f, i, v)   ((((v)[DRF_WORD_MW(NV##d##r##f(i))])>>DRF_SHIFT_MW(NV##d##r##f(i)))&DRF_MASK_MW(NV##d##r##f(i)))
 
#define FLD_IDX_OR_DRF_DEF(d, r, f, c, s, v)
 
#define FLD_MERGE_MW(drf, n, v)   (((v)[DRF_WORD_MW(drf)] & ~DRF_SHIFTMASK_MW(drf)) | n)
 
#define FLD_ASSIGN_MW(drf, n, v)   ((v)[DRF_WORD_MW(drf)] = FLD_MERGE_MW(drf, n, v))
 
#define FLD_IDX_MERGE_MW(drf, i, n, v)   (((v)[DRF_WORD_MW(drf(i))] & ~DRF_SHIFTMASK_MW(drf(i))) | n)
 
#define FLD_IDX_ASSIGN_MW(drf, i, n, v)   ((v)[DRF_WORD_MW(drf(i))] = FLD_MERGE_MW(drf(i), n, v))
 
#define FLD_SET_DRF_MW(d, r, f, c, v)   FLD_MERGE_MW(NV##d##r##f, DRF_DEF_MW(d,r,f,c), v)
 
#define FLD_SET_DRF_NUM_MW(d, r, f, n, v)   FLD_ASSIGN_MW(NV##d##r##f, DRF_NUM_MW(d,r,f,n), v)
 
#define FLD_SET_DRF_DEF_MW(d, r, f, c, v)   FLD_ASSIGN_MW(NV##d##r##f, DRF_DEF_MW(d,r,f,c), v)
 
#define FLD_IDX_SET_DRF_MW(d, r, f, i, c, v)   FLD_IDX_MERGE_MW(NV##d##r##f, i, DRF_IDX_DEF_MW(d,r,f,i,c), v)
 
#define FLD_IDX_SET_DRF_DEF_MW(d, r, f, i, c, v)   FLD_IDX_MERGE_MW(NV##d##r##f, i, DRF_IDX_DEF_MW(d,r,f,i,c), v)
 
#define FLD_IDX_SET_DRF_NUM_MW(d, r, f, i, n, v)   FLD_IDX_ASSIGN_MW(NV##d##r##f, i, DRF_IDX_NUM_MW(d,r,f,i,n), v)
 
#define FLD_TEST_DRF_MW(d, r, f, c, v)   ((DRF_VAL_MW(d, r, f, v) == NV##d##r##f##c))
 
#define FLD_TEST_DRF_NUM_MW(d, r, f, n, v)   ((DRF_VAL_MW(d, r, f, v) == n))
 
#define FLD_IDX_TEST_DRF_MW(d, r, f, i, c, v)   ((DRF_IDX_VAL_MW(d, r, f, i, v) == NV##d##r##f##c))
 
#define DRF_VAL_BS(d, r, f, v)   ( DRF_SPANS(NV##d##r##f) ? DRF_VAL_BS_2WORD(d,r,f,v) : DRF_VAL_BS_1WORD(d,r,f,v) )
 
#define ENG_RD_REG(g, o, d, r)   GPU_REG_RD32(g, ENG_REG##d(o,d,r))
 
#define ENG_WR_REG(g, o, d, r, v)   GPU_REG_WR32(g, ENG_REG##d(o,d,r), v)
 
#define ENG_RD_DRF(g, o, d, r, f)   ((GPU_REG_RD32(g, ENG_REG##d(o,d,r))>>GPU_DRF_SHIFT(NV ## d ## r ## f))&GPU_DRF_MASK(NV ## d ## r ## f))
 
#define ENG_WR_DRF_DEF(g, o, d, r, f, c)   GPU_REG_WR32(g, ENG_REG##d(o,d,r),(GPU_REG_RD32(g,ENG_REG##d(o,d,r))&~(GPU_DRF_MASK(NV##d##r##f)<<GPU_DRF_SHIFT(NV##d##r##f)))|GPU_DRF_DEF(d,r,f,c))
 
#define ENG_WR_DRF_NUM(g, o, d, r, f, n)   GPU_REG_WR32(g, ENG_REG##d(o,d,r),(GPU_REG_RD32(g,ENG_REG##d(o,d,r))&~(GPU_DRF_MASK(NV##d##r##f)<<GPU_DRF_SHIFT(NV##d##r##f)))|GPU_DRF_NUM(d,r,f,n))
 
#define ENG_TEST_DRF_DEF(g, o, d, r, f, c)   (ENG_RD_DRF(g, o, d, r, f) == NV##d##r##f##c)
 
#define ENG_RD_IDX_DRF(g, o, d, r, f, i)   ((GPU_REG_RD32(g, ENG_REG##d(o,d,r(i)))>>GPU_DRF_SHIFT(NV ## d ## r ## f))&GPU_DRF_MASK(NV ## d ## r ## f))
 
#define ENG_TEST_IDX_DRF_DEF(g, o, d, r, f, c, i)   (ENG_RD_IDX_DRF(g, o, d, r, f, i) == NV##d##r##f##c)
 
#define ENG_IDX_RD_REG(g, o, d, i, r)   GPU_REG_RD32(g, ENG_IDX_REG##d(o,d,i,r))
 
#define ENG_IDX_WR_REG(g, o, d, i, r, v)   GPU_REG_WR32(g, ENG_IDX_REG##d(o,d,i,r), v)
 
#define ENG_IDX_RD_DRF(g, o, d, i, r, f)   ((GPU_REG_RD32(g, ENG_IDX_REG##d(o,d,i,r))>>GPU_DRF_SHIFT(NV ## d ## r ## f))&GPU_DRF_MASK(NV ## d ## r ## f))
 
#define DRF_VAL_BS_1WORD(d, r, f, v)   ((DRF_READ_1WORD_BS(d,r,f,v)>>DRF_SHIFT_MW(NV##d##r##f))&DRF_MASK_MW(NV##d##r##f))
 
#define DRF_VAL_BS_2WORD(d, r, f, v)
 
#define DRF_READ_1BYTE_BS(drf, v)   ((NvU32)(((const NvU8*)(v))[DRF_WORD_MW(drf)*4]))
 
#define DRF_READ_2BYTE_BS(drf, v)
 
#define DRF_READ_3BYTE_BS(drf, v)
 
#define DRF_READ_4BYTE_BS(drf, v)
 
#define DRF_READ_1BYTE_BS_HIGH(drf, v)   ((NvU32)(((const NvU8*)(v))[DRF_WORD_MW_HIGH(drf)*4]))
 
#define DRF_READ_2BYTE_BS_HIGH(drf, v)
 
#define DRF_READ_3BYTE_BS_HIGH(drf, v)
 
#define DRF_READ_4BYTE_BS_HIGH(drf, v)
 
#define NV_TWO_N_MINUS_ONE(n)   (((1ULL<<(n/2))<<((n+1)/2))-1)
 
#define DRF_READ_1WORD_BS(d, r, f, v)
 
#define DRF_READ_1WORD_BS_HIGH(d, r, f, v)
 
#define BIN_2_GRAY(n)   ((n)^((n)>>1))
 
#define GRAY_2_BIN_64b(n)   (n)^=(n)>>1; (n)^=(n)>>2; (n)^=(n)>>4; (n)^=(n)>>8; (n)^=(n)>>16; (n)^=(n)>>32;
 
#define LOWESTBIT(x)   ( (x) & (((x)-1) ^ (x)) )
 
#define HIGHESTBIT(n32)
 
#define ONEBITSET(x)   ( (x) && (((x) & ((x)-1)) == 0) )
 
#define NUMSETBITS_32(n32)
 
#define LOWESTBITIDX_32(n32)
 
#define HIGHESTBITIDX_32(n32)
 
#define ROUNDUP_POW2(n32)
 
#define ROUNDUP_POW2_U64(n64)
 
#define NV_SWAP_U8(a, b)
 
#define FOR_EACH_INDEX_IN_MASK(maskWidth, index, mask)
 Macros allowing simple iteration over bits set in a given mask. More...
 
#define FOR_EACH_INDEX_IN_MASK_END
 
#define NV_ANYSIZE_ARRAY   1
 
#define NV_CEIL(a, b)   (((a)+(b)-1)/(b))
 
#define NV_DIV_AND_CEIL(a, b)   NV_CEIL(a,b)
 
#define NV_MIN(a, b)   (((a) < (b)) ? (a) : (b))
 
#define NV_MAX(a, b)   (((a) > (b)) ? (a) : (b))
 
#define NV_ABS(a)   ((a)>=0?(a):(-(a)))
 
#define NV_SIGN(s)   ((NvS8)(((s) > 0) - ((s) < 0)))
 
#define NV_ZERO_SIGN(s)   ((NvS8)((((s) >= 0) * 2) - 1))
 
#define NV_OFFSETOF(type, member)   ((NvU32)(NvU64)&(((type *)0)->member))
 
#define NV_UNSIGNED_ROUNDED_DIV(a, b)   (((a) + ((b) / 2)) / (b))
 
#define NV_UNSIGNED_DIV_CEIL(a, b)   (((a) + (b - 1)) / (b))
 Performs a ceiling division of b into a (unsigned). More...
 
#define NV_RIGHT_SHIFT_ROUNDED(a, shift)   (((a) >> (shift)) + !!((NVBIT((shift) - 1) & (a)) == NVBIT((shift) - 1)))
 Performs a rounded right-shift of 32-bit unsigned value "a" by "shift" bits. More...
 
#define NV_ALIGN_DOWN(v, gran)   ((v) & ~((gran) - 1))
 
#define NV_ALIGN_UP(v, gran)   (((v) + ((gran) - 1)) & ~((gran)-1))
 
#define NV_IS_ALIGNED(v, gran)   (0 == ((v) & ((gran) - 1)))
 

Functions

static NV_FORCEINLINE NvU32 nvPopCount32 (const NvU32 x)
 Calculate number of bits set in a 32-bit unsigned integer. More...
 
static NV_FORCEINLINE NvU32 nvPopCount64 (const NvU64 x)
 Calculate number of bits set in a 64-bit unsigned integer. More...
 
static NV_FORCEINLINE NvU32 nvMaskPos32 (const NvU32 mask, const NvU32 bitIdx)
 Determine how many bits are set below a bit index within a mask. More...
 
static NV_FORCEINLINE NvU32 nvNextPow2_U32 (const NvU32 x)
 Round up a 32-bit unsigned integer to the next power of 2. More...
 
static NV_FORCEINLINE voidNVMISC_MEMSET (void *s, NvU8 c, NvLength n)
 
static NV_FORCEINLINE voidNVMISC_MEMCPY (void *dest, const void *src, NvLength n)
 
static NV_FORCEINLINE char * NVMISC_STRNCPY (char *dest, const char *src, NvLength n)
 

Macro Definition Documentation

◆ BIN_2_GRAY

#define BIN_2_GRAY (   n)    ((n)^((n)>>1))

Definition at line 339 of file nvmisc.h.

◆ BIT

#define BIT (   b)    (1<<(b))

Definition at line 56 of file nvmisc.h.

◆ BIT32

#define BIT32 (   b)    ((NvU32)1<<(b))

Definition at line 57 of file nvmisc.h.

◆ BIT64

#define BIT64 (   b)    ((NvU64)1<<(b))

Definition at line 58 of file nvmisc.h.

◆ BIT_IDX_32

#define BIT_IDX_32 (   n)
Value:
((((n) & 0xFFFF0000)? 0x10: 0) | \
(((n) & 0xFF00FF00)? 0x08: 0) | \
(((n) & 0xF0F0F0F0)? 0x04: 0) | \
(((n) & 0xCCCCCCCC)? 0x02: 0) | \
(((n) & 0xAAAAAAAA)? 0x01: 0) )

Definition at line 72 of file nvmisc.h.

◆ BIT_IDX_64

#define BIT_IDX_64 (   n)
Value:
((((n) & 0xFFFFFFFF00000000ULL)? 0x20: 0) | \
(((n) & 0xFFFF0000FFFF0000ULL)? 0x10: 0) | \
(((n) & 0xFF00FF00FF00FF00ULL)? 0x08: 0) | \
(((n) & 0xF0F0F0F0F0F0F0F0ULL)? 0x04: 0) | \
(((n) & 0xCCCCCCCCCCCCCCCCULL)? 0x02: 0) | \
(((n) & 0xAAAAAAAAAAAAAAAAULL)? 0x01: 0) )

Definition at line 81 of file nvmisc.h.

◆ CR_DRF_DEF

#define CR_DRF_DEF (   d,
  r,
  f,
 
)    ((CR ## d ## r ## f ## c)<<DRF_SHIFT(CR ## d ## r ## f))

Definition at line 192 of file nvmisc.h.

◆ CR_DRF_NUM

#define CR_DRF_NUM (   d,
  r,
  f,
 
)    (((n)&DRF_MASK(CR ## d ## r ## f))<<DRF_SHIFT(CR ## d ## r ## f))

Definition at line 193 of file nvmisc.h.

◆ CR_DRF_VAL

#define CR_DRF_VAL (   d,
  r,
  f,
 
)    (((v)>>DRF_SHIFT(CR ## d ## r ## f))&DRF_MASK(CR ## d ## r ## f))

Definition at line 194 of file nvmisc.h.

◆ DEVICE_BASE

#define DEVICE_BASE (   d)    (0?d)

Definition at line 108 of file nvmisc.h.

◆ DEVICE_EXTENT

#define DEVICE_EXTENT (   d)    (1?d)

Definition at line 109 of file nvmisc.h.

◆ DRF_BASE

#define DRF_BASE (   drf)    (0?drf)

Definition at line 110 of file nvmisc.h.

◆ DRF_BASE_MW

#define DRF_BASE_MW (   drf)    (DRF_PICK_MW(drf,0)%32)

Definition at line 209 of file nvmisc.h.

◆ DRF_DEF

#define DRF_DEF (   d,
  r,
  f,
 
)    ((NV ## d ## r ## f ## c)<<DRF_SHIFT(NV ## d ## r ## f))

Definition at line 118 of file nvmisc.h.

◆ DRF_DEF64

#define DRF_DEF64 (   d,
  r,
  f,
 
)    (((NvU64)(NV ## d ## r ## f ## c))<<DRF_SHIFT64(NV ## d ## r ## f))

Definition at line 140 of file nvmisc.h.

◆ DRF_DEF_MW

#define DRF_DEF_MW (   d,
  r,
  f,
 
)    ((NV##d##r##f##c) << DRF_SHIFT_MW(NV##d##r##f))

Definition at line 216 of file nvmisc.h.

◆ DRF_EXPAND_MW

#define DRF_EXPAND_MW (   drf)    drf

Definition at line 206 of file nvmisc.h.

◆ DRF_EXTENT

#define DRF_EXTENT (   drf)    (1?drf)

Definition at line 111 of file nvmisc.h.

◆ DRF_EXTENT_MW

#define DRF_EXTENT_MW (   drf)    (DRF_PICK_MW(drf,1)%32)

Definition at line 210 of file nvmisc.h.

◆ DRF_IDX_DEF

#define DRF_IDX_DEF (   d,
  r,
  f,
  i,
 
)    ((NV ## d ## r ## f ## c)<<DRF_SHIFT(NV##d##r##f(i)))

Definition at line 125 of file nvmisc.h.

◆ DRF_IDX_DEF64

#define DRF_IDX_DEF64 (   d,
  r,
  f,
  i,
 
)    (((NvU64)(NV ## d ## r ## f ## c))<<DRF_SHIFT64(NV##d##r##f(i)))

Definition at line 145 of file nvmisc.h.

◆ DRF_IDX_DEF_MW

#define DRF_IDX_DEF_MW (   d,
  r,
  f,
  i,
 
)    ((NV##d##r##f##c)<<DRF_SHIFT_MW(NV##d##r##f(i)))

Definition at line 234 of file nvmisc.h.

◆ DRF_IDX_NUM

#define DRF_IDX_NUM (   d,
  r,
  f,
  i,
 
)    (((n)&DRF_MASK(NV##d##r##f(i)))<<DRF_SHIFT(NV##d##r##f(i)))

Definition at line 127 of file nvmisc.h.

◆ DRF_IDX_NUM64

#define DRF_IDX_NUM64 (   d,
  r,
  f,
  i,
 
)    ((((NvU64)(n))&DRF_MASK64(NV##d##r##f(i)))<<DRF_SHIFT64(NV##d##r##f(i)))

Definition at line 147 of file nvmisc.h.

◆ DRF_IDX_NUM_MW

#define DRF_IDX_NUM_MW (   d,
  r,
  f,
  i,
 
)    (((n)&DRF_MASK_MW(NV##d##r##f(i)))<<DRF_SHIFT_MW(NV##d##r##f(i)))

Definition at line 235 of file nvmisc.h.

◆ DRF_IDX_OFFSET_DEF

#define DRF_IDX_OFFSET_DEF (   d,
  r,
  f,
  i,
  o,
 
)    ((NV ## d ## r ## f ## c)<<DRF_SHIFT(NV##d##r##f(i,o)))

Definition at line 126 of file nvmisc.h.

◆ DRF_IDX_OFFSET_DEF64

#define DRF_IDX_OFFSET_DEF64 (   d,
  r,
  f,
  i,
  o,
 
)    ((NvU64)(NV ## d ## r ## f ## c)<<DRF_SHIFT64(NV##d##r##f(i,o)))

Definition at line 146 of file nvmisc.h.

◆ DRF_IDX_OFFSET_VAL

#define DRF_IDX_OFFSET_VAL (   d,
  r,
  f,
  i,
  o,
 
)    (((v)>>DRF_SHIFT(NV##d##r##f(i,o)))&DRF_MASK(NV##d##r##f(i,o)))

Definition at line 129 of file nvmisc.h.

◆ DRF_IDX_OFFSET_VAL64

#define DRF_IDX_OFFSET_VAL64 (   d,
  r,
  f,
  i,
  o,
 
)    (((NvU64)(v)>>DRF_SHIFT64(NV##d##r##f(i,o)))&DRF_MASK64(NV##d##r##f(i,o)))

Definition at line 149 of file nvmisc.h.

◆ DRF_IDX_VAL

#define DRF_IDX_VAL (   d,
  r,
  f,
  i,
 
)    (((v)>>DRF_SHIFT(NV##d##r##f(i)))&DRF_MASK(NV##d##r##f(i)))

Definition at line 128 of file nvmisc.h.

◆ DRF_IDX_VAL64

#define DRF_IDX_VAL64 (   d,
  r,
  f,
  i,
 
)    ((((NvU64)(v))>>DRF_SHIFT64(NV##d##r##f(i)))&DRF_MASK64(NV##d##r##f(i)))

Definition at line 148 of file nvmisc.h.

◆ DRF_IDX_VAL_MW

#define DRF_IDX_VAL_MW (   d,
  r,
  f,
  i,
 
)    ((((v)[DRF_WORD_MW(NV##d##r##f(i))])>>DRF_SHIFT_MW(NV##d##r##f(i)))&DRF_MASK_MW(NV##d##r##f(i)))

Definition at line 236 of file nvmisc.h.

◆ DRF_ISBIT

#define DRF_ISBIT (   bitval,
  drf 
)
Value:
( /* coverity[identical_branches] */ \
bitval ? drf )

Definition at line 105 of file nvmisc.h.

◆ DRF_MASK

#define DRF_MASK (   drf)    (0xFFFFFFFF>>(31-((DRF_ISBIT(1,drf)) % 32)+((DRF_ISBIT(0,drf)) % 32)))

Definition at line 114 of file nvmisc.h.

◆ DRF_MASK64

#define DRF_MASK64 (   drf)    (NV_U64_MAX>>(63-((DRF_ISBIT(1,drf)) % 64)+((DRF_ISBIT(0,drf)) % 64)))

Definition at line 137 of file nvmisc.h.

◆ DRF_MASK_MW

#define DRF_MASK_MW (   drf)    (0xFFFFFFFF>>((31-(DRF_EXTENT_MW(drf))+(DRF_BASE_MW(drf)))%32))

Definition at line 212 of file nvmisc.h.

◆ DRF_MASK_MW_HIGH

#define DRF_MASK_MW_HIGH (   drf)    (0xFFFFFFFF>>(31-(DRF_EXTENT_MW(drf))))

Definition at line 226 of file nvmisc.h.

◆ DRF_MASK_MW_LOW

#define DRF_MASK_MW_LOW (   drf)    (0xFFFFFFFF)

Definition at line 225 of file nvmisc.h.

◆ DRF_MERGE_SHIFT

#define DRF_MERGE_SHIFT (   drf)    ((32-((DRF_PICK_MW(drf,0)%32)))%32)

Definition at line 229 of file nvmisc.h.

◆ DRF_NUM

#define DRF_NUM (   d,
  r,
  f,
 
)    (((n)&DRF_MASK(NV ## d ## r ## f))<<DRF_SHIFT(NV ## d ## r ## f))

Definition at line 119 of file nvmisc.h.

◆ DRF_NUM64

#define DRF_NUM64 (   d,
  r,
  f,
 
)    ((((NvU64)(n))&DRF_MASK64(NV ## d ## r ## f))<<DRF_SHIFT64(NV ## d ## r ## f))

Definition at line 141 of file nvmisc.h.

◆ DRF_NUM_MW

#define DRF_NUM_MW (   d,
  r,
  f,
 
)    (((n)&DRF_MASK_MW(NV##d##r##f))<<DRF_SHIFT_MW(NV##d##r##f))

Definition at line 217 of file nvmisc.h.

◆ DRF_PICK_MW

#define DRF_PICK_MW (   drf,
 
)    (v?DRF_EXPAND_##drf)

Definition at line 207 of file nvmisc.h.

◆ DRF_READ_1BYTE_BS

#define DRF_READ_1BYTE_BS (   drf,
 
)    ((NvU32)(((const NvU8*)(v))[DRF_WORD_MW(drf)*4]))

Definition at line 305 of file nvmisc.h.

◆ DRF_READ_1BYTE_BS_HIGH

#define DRF_READ_1BYTE_BS_HIGH (   drf,
 
)    ((NvU32)(((const NvU8*)(v))[DRF_WORD_MW_HIGH(drf)*4]))

Definition at line 313 of file nvmisc.h.

◆ DRF_READ_1WORD_BS

#define DRF_READ_1WORD_BS (   d,
  r,
  f,
 
)
Value:
((DRF_EXTENT_MW(NV##d##r##f)<8)?DRF_READ_1BYTE_BS(NV##d##r##f,(v)): \
((DRF_EXTENT_MW(NV##d##r##f)<16)?DRF_READ_2BYTE_BS(NV##d##r##f,(v)): \
((DRF_EXTENT_MW(NV##d##r##f)<24)?DRF_READ_3BYTE_BS(NV##d##r##f,(v)): \
DRF_READ_4BYTE_BS(NV##d##r##f,(v)))))

Definition at line 327 of file nvmisc.h.

◆ DRF_READ_1WORD_BS_HIGH

#define DRF_READ_1WORD_BS_HIGH (   d,
  r,
  f,
 
)
Value:
((DRF_EXTENT_MW(NV##d##r##f)<8)?DRF_READ_1BYTE_BS_HIGH(NV##d##r##f,(v)): \
((DRF_EXTENT_MW(NV##d##r##f)<16)?DRF_READ_2BYTE_BS_HIGH(NV##d##r##f,(v)): \
((DRF_EXTENT_MW(NV##d##r##f)<24)?DRF_READ_3BYTE_BS_HIGH(NV##d##r##f,(v)): \
DRF_READ_4BYTE_BS_HIGH(NV##d##r##f,(v)))))

Definition at line 333 of file nvmisc.h.

◆ DRF_READ_2BYTE_BS

#define DRF_READ_2BYTE_BS (   drf,
 
)
Value:
(DRF_READ_1BYTE_BS(drf,v)| \
((NvU32)(((const NvU8*)(v))[DRF_WORD_MW(drf)*4+1])<<8))

Definition at line 306 of file nvmisc.h.

◆ DRF_READ_2BYTE_BS_HIGH

#define DRF_READ_2BYTE_BS_HIGH (   drf,
 
)
Value:
((NvU32)(((const NvU8*)(v))[DRF_WORD_MW_HIGH(drf)*4+1])<<8))

Definition at line 314 of file nvmisc.h.

◆ DRF_READ_3BYTE_BS

#define DRF_READ_3BYTE_BS (   drf,
 
)
Value:
(DRF_READ_2BYTE_BS(drf,v)| \
((NvU32)(((const NvU8*)(v))[DRF_WORD_MW(drf)*4+2])<<16))

Definition at line 308 of file nvmisc.h.

◆ DRF_READ_3BYTE_BS_HIGH

#define DRF_READ_3BYTE_BS_HIGH (   drf,
 
)
Value:
((NvU32)(((const NvU8*)(v))[DRF_WORD_MW_HIGH(drf)*4+2])<<16))

Definition at line 316 of file nvmisc.h.

◆ DRF_READ_4BYTE_BS

#define DRF_READ_4BYTE_BS (   drf,
 
)
Value:
(DRF_READ_3BYTE_BS(drf,v)| \
((NvU32)(((const NvU8*)(v))[DRF_WORD_MW(drf)*4+3])<<24))

Definition at line 310 of file nvmisc.h.

◆ DRF_READ_4BYTE_BS_HIGH

#define DRF_READ_4BYTE_BS_HIGH (   drf,
 
)
Value:
((NvU32)(((const NvU8*)(v))[DRF_WORD_MW_HIGH(drf)*4+3])<<24))

Definition at line 318 of file nvmisc.h.

◆ DRF_SHIFT

#define DRF_SHIFT (   drf)    ((DRF_ISBIT(0,drf)) % 32)

Definition at line 112 of file nvmisc.h.

◆ DRF_SHIFT64

#define DRF_SHIFT64 (   drf)    ((DRF_ISBIT(0,drf)) % 64)

Definition at line 136 of file nvmisc.h.

◆ DRF_SHIFT_MW

#define DRF_SHIFT_MW (   drf)    (DRF_PICK_MW(drf,0)%32)

Definition at line 211 of file nvmisc.h.

◆ DRF_SHIFT_MW_HIGH

#define DRF_SHIFT_MW_HIGH (   drf)    (0)

Definition at line 228 of file nvmisc.h.

◆ DRF_SHIFT_MW_LOW

#define DRF_SHIFT_MW_LOW (   drf)    (DRF_PICK_MW(drf,0)%32)

Definition at line 227 of file nvmisc.h.

◆ DRF_SHIFT_RT

#define DRF_SHIFT_RT (   drf)    ((DRF_ISBIT(1,drf)) % 32)

Definition at line 113 of file nvmisc.h.

◆ DRF_SHIFTMASK

#define DRF_SHIFTMASK (   drf)    (DRF_MASK(drf)<<(DRF_SHIFT(drf)))

Definition at line 115 of file nvmisc.h.

◆ DRF_SHIFTMASK64

#define DRF_SHIFTMASK64 (   drf)    (DRF_MASK64(drf)<<(DRF_SHIFT64(drf)))

Definition at line 138 of file nvmisc.h.

◆ DRF_SHIFTMASK_MW

#define DRF_SHIFTMASK_MW (   drf)    ((DRF_MASK_MW(drf))<<(DRF_SHIFT_MW(drf)))

Definition at line 213 of file nvmisc.h.

◆ DRF_SIZE

#define DRF_SIZE (   drf)    (DRF_EXTENT(drf)-DRF_BASE(drf)+1)

Definition at line 116 of file nvmisc.h.

◆ DRF_SIZE_MW

#define DRF_SIZE_MW (   drf)    (DRF_EXTENT_MW(drf)-DRF_BASE_MW(drf)+1)

Definition at line 214 of file nvmisc.h.

◆ DRF_SPANS

#define DRF_SPANS (   drf)    ((DRF_PICK_MW(drf,0)/32) != (DRF_PICK_MW(drf,1)/32))

Definition at line 222 of file nvmisc.h.

◆ DRF_VAL

#define DRF_VAL (   d,
  r,
  f,
 
)    (((v)>>DRF_SHIFT(NV ## d ## r ## f))&DRF_MASK(NV ## d ## r ## f))

Definition at line 120 of file nvmisc.h.

◆ DRF_VAL64

#define DRF_VAL64 (   d,
  r,
  f,
 
)    ((((NvU64)(v))>>DRF_SHIFT64(NV ## d ## r ## f))&DRF_MASK64(NV ## d ## r ## f))

Definition at line 142 of file nvmisc.h.

◆ DRF_VAL_BS

#define DRF_VAL_BS (   d,
  r,
  f,
 
)    ( DRF_SPANS(NV##d##r##f) ? DRF_VAL_BS_2WORD(d,r,f,v) : DRF_VAL_BS_1WORD(d,r,f,v) )

Definition at line 268 of file nvmisc.h.

◆ DRF_VAL_BS_1WORD

#define DRF_VAL_BS_1WORD (   d,
  r,
  f,
 
)    ((DRF_READ_1WORD_BS(d,r,f,v)>>DRF_SHIFT_MW(NV##d##r##f))&DRF_MASK_MW(NV##d##r##f))

Definition at line 301 of file nvmisc.h.

◆ DRF_VAL_BS_2WORD

#define DRF_VAL_BS_2WORD (   d,
  r,
  f,
 
)
Value:
(((DRF_READ_4BYTE_BS(NV##d##r##f,v)>>DRF_SHIFT_MW_LOW(NV##d##r##f))&DRF_MASK_MW_LOW(NV##d##r##f)) | \
(((DRF_READ_1WORD_BS_HIGH(d,r,f,v)>>DRF_SHIFT_MW_HIGH(NV##d##r##f))&DRF_MASK_MW_HIGH(NV##d##r##f)) << DRF_MERGE_SHIFT(NV##d##r##f)))

Definition at line 302 of file nvmisc.h.

◆ DRF_VAL_FRAC

#define DRF_VAL_FRAC (   d,
  r,
  x,
  y,
  v,
 
)    ((DRF_VAL(d,r,x,v)*z) + ((DRF_VAL(d,r,y,v)*z) / (1<<DRF_SIZE(NV##d##r##y))))

Definition at line 131 of file nvmisc.h.

◆ DRF_VAL_MW

#define DRF_VAL_MW (   d,
  r,
  f,
 
)    ( DRF_SPANS(NV##d##r##f) ? DRF_VAL_MW_2WORD(d,r,f,v) : DRF_VAL_MW_1WORD(d,r,f,v) )

Definition at line 232 of file nvmisc.h.

◆ DRF_VAL_MW_1WORD

#define DRF_VAL_MW_1WORD (   d,
  r,
  f,
 
)    ((((v)[DRF_WORD_MW(NV##d##r##f)])>>DRF_SHIFT_MW(NV##d##r##f))&DRF_MASK_MW(NV##d##r##f))

Definition at line 221 of file nvmisc.h.

◆ DRF_VAL_MW_2WORD

#define DRF_VAL_MW_2WORD (   d,
  r,
  f,
 
)
Value:
(((((v)[DRF_WORD_MW_LOW(NV##d##r##f)])>>DRF_SHIFT_MW_LOW(NV##d##r##f))&DRF_MASK_MW_LOW(NV##d##r##f)) | \
(((((v)[DRF_WORD_MW_HIGH(NV##d##r##f)])>>DRF_SHIFT_MW_HIGH(NV##d##r##f))&DRF_MASK_MW_HIGH(NV##d##r##f)) << DRF_MERGE_SHIFT(NV##d##r##f)))

Definition at line 230 of file nvmisc.h.

◆ DRF_VAL_SIGNED

#define DRF_VAL_SIGNED (   d,
  r,
  f,
 
)    (((DRF_VAL(d,r,f,v) ^ (NVBIT(DRF_SIZE(NV ## d ## r ## f)-1)))) - (NVBIT(DRF_SIZE(NV ## d ## r ## f)-1)))

Definition at line 124 of file nvmisc.h.

◆ DRF_VAL_SIGNED64

#define DRF_VAL_SIGNED64 (   d,
  r,
  f,
 
)    (((DRF_VAL64(d,r,f,v) ^ (NVBIT64(DRF_SIZE(NV ## d ## r ## f)-1)))) - (NVBIT64(DRF_SIZE(NV ## d ## r ## f)-1)))

Definition at line 144 of file nvmisc.h.

◆ DRF_WORD_MW

#define DRF_WORD_MW (   drf)    (DRF_PICK_MW(drf,0)/32)

Definition at line 208 of file nvmisc.h.

◆ DRF_WORD_MW_HIGH

#define DRF_WORD_MW_HIGH (   drf)    (DRF_PICK_MW(drf,1)/32)

Definition at line 224 of file nvmisc.h.

◆ DRF_WORD_MW_LOW

#define DRF_WORD_MW_LOW (   drf)    (DRF_PICK_MW(drf,0)/32)

Definition at line 223 of file nvmisc.h.

◆ ENG_IDX_RD_DRF

#define ENG_IDX_RD_DRF (   g,
  o,
  d,
  i,
  r,
 
)    ((GPU_REG_RD32(g, ENG_IDX_REG##d(o,d,i,r))>>GPU_DRF_SHIFT(NV ## d ## r ## f))&GPU_DRF_MASK(NV ## d ## r ## f))

Definition at line 294 of file nvmisc.h.

◆ ENG_IDX_RD_REG

#define ENG_IDX_RD_REG (   g,
  o,
  d,
  i,
 
)    GPU_REG_RD32(g, ENG_IDX_REG##d(o,d,i,r))

Definition at line 291 of file nvmisc.h.

◆ ENG_IDX_WR_REG

#define ENG_IDX_WR_REG (   g,
  o,
  d,
  i,
  r,
 
)    GPU_REG_WR32(g, ENG_IDX_REG##d(o,d,i,r), v)

Definition at line 292 of file nvmisc.h.

◆ ENG_RD_DRF

#define ENG_RD_DRF (   g,
  o,
  d,
  r,
 
)    ((GPU_REG_RD32(g, ENG_REG##d(o,d,r))>>GPU_DRF_SHIFT(NV ## d ## r ## f))&GPU_DRF_MASK(NV ## d ## r ## f))

Definition at line 283 of file nvmisc.h.

◆ ENG_RD_IDX_DRF

#define ENG_RD_IDX_DRF (   g,
  o,
  d,
  r,
  f,
 
)    ((GPU_REG_RD32(g, ENG_REG##d(o,d,r(i)))>>GPU_DRF_SHIFT(NV ## d ## r ## f))&GPU_DRF_MASK(NV ## d ## r ## f))

Definition at line 288 of file nvmisc.h.

◆ ENG_RD_REG

#define ENG_RD_REG (   g,
  o,
  d,
 
)    GPU_REG_RD32(g, ENG_REG##d(o,d,r))

Definition at line 281 of file nvmisc.h.

◆ ENG_TEST_DRF_DEF

#define ENG_TEST_DRF_DEF (   g,
  o,
  d,
  r,
  f,
 
)    (ENG_RD_DRF(g, o, d, r, f) == NV##d##r##f##c)

Definition at line 286 of file nvmisc.h.

◆ ENG_TEST_IDX_DRF_DEF

#define ENG_TEST_IDX_DRF_DEF (   g,
  o,
  d,
  r,
  f,
  c,
 
)    (ENG_RD_IDX_DRF(g, o, d, r, f, i) == NV##d##r##f##c)

Definition at line 289 of file nvmisc.h.

◆ ENG_WR_DRF_DEF

#define ENG_WR_DRF_DEF (   g,
  o,
  d,
  r,
  f,
 
)    GPU_REG_WR32(g, ENG_REG##d(o,d,r),(GPU_REG_RD32(g,ENG_REG##d(o,d,r))&~(GPU_DRF_MASK(NV##d##r##f)<<GPU_DRF_SHIFT(NV##d##r##f)))|GPU_DRF_DEF(d,r,f,c))

Definition at line 284 of file nvmisc.h.

◆ ENG_WR_DRF_NUM

#define ENG_WR_DRF_NUM (   g,
  o,
  d,
  r,
  f,
 
)    GPU_REG_WR32(g, ENG_REG##d(o,d,r),(GPU_REG_RD32(g,ENG_REG##d(o,d,r))&~(GPU_DRF_MASK(NV##d##r##f)<<GPU_DRF_SHIFT(NV##d##r##f)))|GPU_DRF_NUM(d,r,f,n))

Definition at line 285 of file nvmisc.h.

◆ ENG_WR_REG

#define ENG_WR_REG (   g,
  o,
  d,
  r,
 
)    GPU_REG_WR32(g, ENG_REG##d(o,d,r), v)

Definition at line 282 of file nvmisc.h.

◆ FLD_ASSIGN_MW

#define FLD_ASSIGN_MW (   drf,
  n,
 
)    ((v)[DRF_WORD_MW(drf)] = FLD_MERGE_MW(drf, n, v))

Definition at line 253 of file nvmisc.h.

◆ FLD_IDX_ASSIGN_MW

#define FLD_IDX_ASSIGN_MW (   drf,
  i,
  n,
 
)    ((v)[DRF_WORD_MW(drf(i))] = FLD_MERGE_MW(drf(i), n, v))

Definition at line 255 of file nvmisc.h.

◆ FLD_IDX_MERGE_MW

#define FLD_IDX_MERGE_MW (   drf,
  i,
  n,
 
)    (((v)[DRF_WORD_MW(drf(i))] & ~DRF_SHIFTMASK_MW(drf(i))) | n)

Definition at line 254 of file nvmisc.h.

◆ FLD_IDX_OFFSET_SET_DRF

#define FLD_IDX_OFFSET_SET_DRF (   d,
  r,
  f,
  i,
  o,
  c,
 
)    ((v & ~DRF_SHIFTMASK(NV##d##r##f(i,o))) | DRF_IDX_OFFSET_DEF(d,r,f,i,o,c))

Definition at line 174 of file nvmisc.h.

◆ FLD_IDX_OFFSET_SET_DRF64

#define FLD_IDX_OFFSET_SET_DRF64 (   d,
  r,
  f,
  i,
  o,
  c,
 
)    (((NvU64)(v) & ~DRF_SHIFTMASK64(NV##d##r##f(i,o))) | DRF_IDX_OFFSET_DEF64(d,r,f,i,o,c))

Definition at line 154 of file nvmisc.h.

◆ FLD_IDX_OFFSET_TEST_DRF

#define FLD_IDX_OFFSET_TEST_DRF (   d,
  r,
  f,
  i,
  o,
  c,
 
)    ((DRF_IDX_OFFSET_VAL(d, r, f, i, o, v) == NV##d##r##f##c))

Definition at line 183 of file nvmisc.h.

◆ FLD_IDX_OFFSET_TEST_DRF64

#define FLD_IDX_OFFSET_TEST_DRF64 (   d,
  r,
  f,
  i,
  o,
  c,
 
)    (DRF_IDX_OFFSET_VAL64(d, r, f, i, o, v) == NV##d##r##f##c)

Definition at line 163 of file nvmisc.h.

◆ FLD_IDX_OR_DRF_DEF

#define FLD_IDX_OR_DRF_DEF (   d,
  r,
  f,
  c,
  s,
 
)
Value:
do \
{ NvU32 idx; \
for (idx = 0; idx < (NV ## d ## r ## f ## s); ++idx)\
{ \
v |= DRF_IDX_DEF(d,r,f,idx,c); \
} \
} while(0)

Definition at line 242 of file nvmisc.h.

◆ FLD_IDX_SET_DRF

#define FLD_IDX_SET_DRF (   d,
  r,
  f,
  i,
  c,
 
)    ((v & ~DRF_SHIFTMASK(NV##d##r##f(i))) | DRF_IDX_DEF(d,r,f,i,c))

Definition at line 173 of file nvmisc.h.

◆ FLD_IDX_SET_DRF64

#define FLD_IDX_SET_DRF64 (   d,
  r,
  f,
  i,
  c,
 
)    (((NvU64)(v) & ~DRF_SHIFTMASK64(NV##d##r##f(i))) | DRF_IDX_DEF64(d,r,f,i,c))

Definition at line 153 of file nvmisc.h.

◆ FLD_IDX_SET_DRF_DEF

#define FLD_IDX_SET_DRF_DEF (   d,
  r,
  f,
  i,
  c,
 
)    ((v & ~DRF_SHIFTMASK(NV##d##r##f(i))) | DRF_IDX_DEF(d,r,f,i,c))

Definition at line 175 of file nvmisc.h.

◆ FLD_IDX_SET_DRF_DEF64

#define FLD_IDX_SET_DRF_DEF64 (   d,
  r,
  f,
  i,
  c,
 
)    (((NvU64)(v) & ~DRF_SHIFTMASK64(NV##d##r##f(i))) | DRF_IDX_DEF64(d,r,f,i,c))

Definition at line 155 of file nvmisc.h.

◆ FLD_IDX_SET_DRF_DEF_MW

#define FLD_IDX_SET_DRF_DEF_MW (   d,
  r,
  f,
  i,
  c,
 
)    FLD_IDX_MERGE_MW(NV##d##r##f, i, DRF_IDX_DEF_MW(d,r,f,i,c), v)

Definition at line 261 of file nvmisc.h.

◆ FLD_IDX_SET_DRF_MW

#define FLD_IDX_SET_DRF_MW (   d,
  r,
  f,
  i,
  c,
 
)    FLD_IDX_MERGE_MW(NV##d##r##f, i, DRF_IDX_DEF_MW(d,r,f,i,c), v)

Definition at line 260 of file nvmisc.h.

◆ FLD_IDX_SET_DRF_NUM

#define FLD_IDX_SET_DRF_NUM (   d,
  r,
  f,
  i,
  n,
 
)    ((v & ~DRF_SHIFTMASK(NV##d##r##f(i))) | DRF_IDX_NUM(d,r,f,i,n))

Definition at line 176 of file nvmisc.h.

◆ FLD_IDX_SET_DRF_NUM64

#define FLD_IDX_SET_DRF_NUM64 (   d,
  r,
  f,
  i,
  n,
 
)    (((NvU64)(v) & ~DRF_SHIFTMASK64(NV##d##r##f(i))) | DRF_IDX_NUM64(d,r,f,i,n))

Definition at line 156 of file nvmisc.h.

◆ FLD_IDX_SET_DRF_NUM_MW

#define FLD_IDX_SET_DRF_NUM_MW (   d,
  r,
  f,
  i,
  n,
 
)    FLD_IDX_ASSIGN_MW(NV##d##r##f, i, DRF_IDX_NUM_MW(d,r,f,i,n), v)

Definition at line 262 of file nvmisc.h.

◆ FLD_IDX_TEST_DRF

#define FLD_IDX_TEST_DRF (   d,
  r,
  f,
  i,
  c,
 
)    ((DRF_IDX_VAL(d, r, f, i, v) == NV##d##r##f##c))

Definition at line 182 of file nvmisc.h.

◆ FLD_IDX_TEST_DRF64

#define FLD_IDX_TEST_DRF64 (   d,
  r,
  f,
  i,
  c,
 
)    (DRF_IDX_VAL64(d, r, f, i, v) == NV##d##r##f##c)

Definition at line 162 of file nvmisc.h.

◆ FLD_IDX_TEST_DRF_MW

#define FLD_IDX_TEST_DRF_MW (   d,
  r,
  f,
  i,
  c,
 
)    ((DRF_IDX_VAL_MW(d, r, f, i, v) == NV##d##r##f##c))

Definition at line 266 of file nvmisc.h.

◆ FLD_MERGE_MW

#define FLD_MERGE_MW (   drf,
  n,
 
)    (((v)[DRF_WORD_MW(drf)] & ~DRF_SHIFTMASK_MW(drf)) | n)

Definition at line 252 of file nvmisc.h.

◆ FLD_SET_DRF

#define FLD_SET_DRF (   d,
  r,
  f,
  c,
 
)    ((v & ~DRF_SHIFTMASK(NV##d##r##f)) | DRF_DEF(d,r,f,c))

Definition at line 169 of file nvmisc.h.

◆ FLD_SET_DRF64

#define FLD_SET_DRF64 (   d,
  r,
  f,
  c,
 
)    (((NvU64)(v) & ~DRF_SHIFTMASK64(NV##d##r##f)) | DRF_DEF64(d,r,f,c))

Definition at line 151 of file nvmisc.h.

◆ FLD_SET_DRF_DEF

#define FLD_SET_DRF_DEF (   d,
  r,
  f,
  c,
 
)    (v = (v & ~DRF_SHIFTMASK(NV##d##r##f)) | DRF_DEF(d,r,f,c))

Definition at line 172 of file nvmisc.h.

◆ FLD_SET_DRF_DEF_MW

#define FLD_SET_DRF_DEF_MW (   d,
  r,
  f,
  c,
 
)    FLD_ASSIGN_MW(NV##d##r##f, DRF_DEF_MW(d,r,f,c), v)

Definition at line 259 of file nvmisc.h.

◆ FLD_SET_DRF_IDX

#define FLD_SET_DRF_IDX (   d,
  r,
  f,
  c,
  i,
 
)    ((v & ~DRF_SHIFTMASK(NV##d##r##f)) | DRF_DEF(d,r,f,c(i)))

Definition at line 177 of file nvmisc.h.

◆ FLD_SET_DRF_IDX64

#define FLD_SET_DRF_IDX64 (   d,
  r,
  f,
  c,
  i,
 
)    (((NvU64)(v) & ~DRF_SHIFTMASK64(NV##d##r##f)) | DRF_DEF64(d,r,f,c(i)))

Definition at line 157 of file nvmisc.h.

◆ FLD_SET_DRF_MW

#define FLD_SET_DRF_MW (   d,
  r,
  f,
  c,
 
)    FLD_MERGE_MW(NV##d##r##f, DRF_DEF_MW(d,r,f,c), v)

Definition at line 257 of file nvmisc.h.

◆ FLD_SET_DRF_NUM

#define FLD_SET_DRF_NUM (   d,
  r,
  f,
  n,
 
)    ((v & ~DRF_SHIFTMASK(NV##d##r##f)) | DRF_NUM(d,r,f,n))

Definition at line 170 of file nvmisc.h.

◆ FLD_SET_DRF_NUM64

#define FLD_SET_DRF_NUM64 (   d,
  r,
  f,
  n,
 
)    ((((NvU64)(v)) & ~DRF_SHIFTMASK64(NV##d##r##f)) | DRF_NUM64(d,r,f,n))

Definition at line 152 of file nvmisc.h.

◆ FLD_SET_DRF_NUM_MW

#define FLD_SET_DRF_NUM_MW (   d,
  r,
  f,
  n,
 
)    FLD_ASSIGN_MW(NV##d##r##f, DRF_NUM_MW(d,r,f,n), v)

Definition at line 258 of file nvmisc.h.

◆ FLD_SET_REF_NUM

#define FLD_SET_REF_NUM (   drf,
  n,
 
)    (((v) & ~DRF_SHIFTMASK(drf)) | REF_NUM(drf,n))

Definition at line 190 of file nvmisc.h.

◆ FLD_TEST_DRF

#define FLD_TEST_DRF (   d,
  r,
  f,
  c,
 
)    ((DRF_VAL(d, r, f, v) == NV##d##r##f##c))

Definition at line 179 of file nvmisc.h.

◆ FLD_TEST_DRF64

#define FLD_TEST_DRF64 (   d,
  r,
  f,
  c,
 
)    (DRF_VAL64(d, r, f, v) == NV##d##r##f##c)

Definition at line 159 of file nvmisc.h.

◆ FLD_TEST_DRF_AND

#define FLD_TEST_DRF_AND (   d,
  r,
  f,
  c,
 
)    ((DRF_VAL(d, r, f, v) & NV##d##r##f##c))

Definition at line 180 of file nvmisc.h.

◆ FLD_TEST_DRF_AND64

#define FLD_TEST_DRF_AND64 (   d,
  r,
  f,
  c,
 
)    (DRF_VAL64(d, r, f, v) & NV##d##r##f##c)

Definition at line 160 of file nvmisc.h.

◆ FLD_TEST_DRF_MW

#define FLD_TEST_DRF_MW (   d,
  r,
  f,
  c,
 
)    ((DRF_VAL_MW(d, r, f, v) == NV##d##r##f##c))

Definition at line 264 of file nvmisc.h.

◆ FLD_TEST_DRF_NUM

#define FLD_TEST_DRF_NUM (   d,
  r,
  f,
  n,
 
)    ((DRF_VAL(d, r, f, v) == n))

Definition at line 181 of file nvmisc.h.

◆ FLD_TEST_DRF_NUM64

#define FLD_TEST_DRF_NUM64 (   d,
  r,
  f,
  n,
 
)    (DRF_VAL64(d, r, f, v) == n)

Definition at line 161 of file nvmisc.h.

◆ FLD_TEST_DRF_NUM_MW

#define FLD_TEST_DRF_NUM_MW (   d,
  r,
  f,
  n,
 
)    ((DRF_VAL_MW(d, r, f, v) == n))

Definition at line 265 of file nvmisc.h.

◆ FLD_TEST_REF

#define FLD_TEST_REF (   drf,
  c,
 
)    (REF_VAL(drf, v) == drf##c)

Definition at line 188 of file nvmisc.h.

◆ FLD_TEST_REF_AND

#define FLD_TEST_REF_AND (   drf,
  c,
 
)    (REF_VAL(drf, v) & drf##c)

Definition at line 189 of file nvmisc.h.

◆ FOR_EACH_INDEX_IN_MASK

#define FOR_EACH_INDEX_IN_MASK (   maskWidth,
  index,
  mask 
)
Value:
{ \
NvU##maskWidth lclMsk = (NvU##maskWidth)(mask); \
for (index = 0; lclMsk != 0; index++, lclMsk >>= 1) \
{ \
if (((NvU##maskWidth)NVBIT64(0) & lclMsk) == 0) \
{ \
continue; \
}

Macros allowing simple iteration over bits set in a given mask.

Parameters
[in]maskWidthbit-width of the mask (allowed: 8, 16, 32, 64)
[in,out]indexlvalue that is used as a bit index in the loop (can be declared as any NvU* or NvS* variable)
[in]maskexpression, loop will iterate over set bits only

Definition at line 485 of file nvmisc.h.

◆ FOR_EACH_INDEX_IN_MASK_END

#define FOR_EACH_INDEX_IN_MASK_END
Value:
} \
}

Definition at line 494 of file nvmisc.h.

◆ GRAY_2_BIN_64b

#define GRAY_2_BIN_64b (   n)    (n)^=(n)>>1; (n)^=(n)>>2; (n)^=(n)>>4; (n)^=(n)>>8; (n)^=(n)>>16; (n)^=(n)>>32;

Definition at line 341 of file nvmisc.h.

◆ HIGHESTBIT

#define HIGHESTBIT (   n32)
Value:
{ \
HIGHESTBITIDX_32(n32); \
n32 = NVBIT(n32); \
}

Definition at line 345 of file nvmisc.h.

◆ HIGHESTBITIDX_32

#define HIGHESTBITIDX_32 (   n32)
Value:
{ \
NvU32 count = 0; \
while (n32 >>= 1) \
{ \
count++; \
} \
n32 = count; \
}

Definition at line 413 of file nvmisc.h.

◆ IDX_32

#define IDX_32 (   n32)
Value:
{ \
NvU32 idx = 0; \
if ((n32) & 0xFFFF0000) idx += 16; \
if ((n32) & 0xFF00FF00) idx += 8; \
if ((n32) & 0xF0F0F0F0) idx += 4; \
if ((n32) & 0xCCCCCCCC) idx += 2; \
if ((n32) & 0xAAAAAAAA) idx += 1; \
(n32) = idx; \
}

Definition at line 91 of file nvmisc.h.

◆ LOWESTBIT

#define LOWESTBIT (   x)    ( (x) & (((x)-1) ^ (x)) )

Definition at line 343 of file nvmisc.h.

◆ LOWESTBITIDX_32

#define LOWESTBITIDX_32 (   n32)
Value:
{ \
n32 = LOWESTBIT(n32); \
IDX_32(n32); \
}

Definition at line 406 of file nvmisc.h.

◆ NUMSETBITS_32

#define NUMSETBITS_32 (   n32)
Value:
{ \
n32 = n32 - ((n32 >> 1) & 0x55555555); \
n32 = (n32 & 0x33333333) + ((n32 >> 2) & 0x33333333); \
n32 = (((n32 + (n32 >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24; \
}

Definition at line 353 of file nvmisc.h.

◆ NV_ABS

#define NV_ABS (   a)    ((a)>=0?(a):(-(a)))

Definition at line 524 of file nvmisc.h.

◆ NV_ALIGN_DOWN

#define NV_ALIGN_DOWN (   v,
  gran 
)    ((v) & ~((gran) - 1))

Definition at line 581 of file nvmisc.h.

◆ NV_ALIGN_UP

#define NV_ALIGN_UP (   v,
  gran 
)    (((v) + ((gran) - 1)) & ~((gran)-1))

Definition at line 585 of file nvmisc.h.

◆ NV_ANYSIZE_ARRAY

#define NV_ANYSIZE_ARRAY   1

Definition at line 501 of file nvmisc.h.

◆ NV_CEIL

#define NV_CEIL (   a,
 
)    (((a)+(b)-1)/(b))

Definition at line 506 of file nvmisc.h.

◆ NV_DIV_AND_CEIL

#define NV_DIV_AND_CEIL (   a,
 
)    NV_CEIL(a,b)

Definition at line 510 of file nvmisc.h.

◆ NV_IS_ALIGNED

#define NV_IS_ALIGNED (   v,
  gran 
)    (0 == ((v) & ((gran) - 1)))

Definition at line 589 of file nvmisc.h.

◆ NV_MAX

#define NV_MAX (   a,
 
)    (((a) > (b)) ? (a) : (b))

Definition at line 518 of file nvmisc.h.

◆ NV_MIN

#define NV_MIN (   a,
 
)    (((a) < (b)) ? (a) : (b))

Definition at line 514 of file nvmisc.h.

◆ NV_OFFSETOF

#define NV_OFFSETOF (   type,
  member 
)    ((NvU32)(NvU64)&(((type *)0)->member))

Definition at line 543 of file nvmisc.h.

◆ NV_RIGHT_SHIFT_ROUNDED

#define NV_RIGHT_SHIFT_ROUNDED (   a,
  shift 
)    (((a) >> (shift)) + !!((NVBIT((shift) - 1) & (a)) == NVBIT((shift) - 1)))

Performs a rounded right-shift of 32-bit unsigned value "a" by "shift" bits.

Will round result away from zero.

Parameters
[in]a32-bit unsigned value to shift.
[in]shiftNumber of bits by which to shift.
Returns
Resulting shifted value rounded away from zero.

Definition at line 573 of file nvmisc.h.

◆ NV_SIGN

#define NV_SIGN (   s)    ((NvS8)(((s) > 0) - ((s) < 0)))

Definition at line 530 of file nvmisc.h.

◆ NV_SWAP_U8

#define NV_SWAP_U8 (   a,
 
)
Value:
{ \
NvU8 temp; \
temp = a; \
a = b; \
b = temp; \
}

Definition at line 468 of file nvmisc.h.

◆ NV_TWO_N_MINUS_ONE

#define NV_TWO_N_MINUS_ONE (   n)    (((1ULL<<(n/2))<<((n+1)/2))-1)

Definition at line 325 of file nvmisc.h.

◆ NV_UNSIGNED_DIV_CEIL

#define NV_UNSIGNED_DIV_CEIL (   a,
 
)    (((a) + (b - 1)) / (b))

Performs a ceiling division of b into a (unsigned).

A "ceiling" division is a division is one with rounds up result up if a % b != 0.

Parameters
[in]aNumerator
[in]bDenominator
Returns
a / b + a % b != 0 ? 1 : 0.

Definition at line 562 of file nvmisc.h.

◆ NV_UNSIGNED_ROUNDED_DIV

#define NV_UNSIGNED_ROUNDED_DIV (   a,
 
)    (((a) + ((b) / 2)) / (b))

Definition at line 551 of file nvmisc.h.

◆ NV_ZERO_SIGN

#define NV_ZERO_SIGN (   s)    ((NvS8)((((s) >= 0) * 2) - 1))

Definition at line 536 of file nvmisc.h.

◆ NVBIT

#define NVBIT (   b)    (1<<(b))

Definition at line 66 of file nvmisc.h.

◆ NVBIT32

#define NVBIT32 (   b)    ((NvU32)1<<(b))

Definition at line 67 of file nvmisc.h.

◆ NVBIT64

#define NVBIT64 (   b)    ((NvU64)1<<(b))

Definition at line 68 of file nvmisc.h.

◆ ONEBITSET

#define ONEBITSET (   x)    ( (x) && (((x) & ((x)-1)) == 0) )

Definition at line 350 of file nvmisc.h.

◆ REF_DEF

#define REF_DEF (   drf,
 
)    (((drf ## d)&DRF_MASK(drf))<<DRF_SHIFT(drf))

Definition at line 185 of file nvmisc.h.

◆ REF_NUM

#define REF_NUM (   drf,
 
)    (((n)&DRF_MASK(drf))<<DRF_SHIFT(drf))

Definition at line 187 of file nvmisc.h.

◆ REF_VAL

#define REF_VAL (   drf,
 
)    (((v)>>DRF_SHIFT(drf))&DRF_MASK(drf))

Definition at line 186 of file nvmisc.h.

◆ ROUNDUP_POW2

#define ROUNDUP_POW2 (   n32)
Value:
{ \
n32--; \
n32 |= n32 >> 1; \
n32 |= n32 >> 2; \
n32 |= n32 >> 4; \
n32 |= n32 >> 8; \
n32 |= n32 >> 16; \
n32++; \
}

Definition at line 424 of file nvmisc.h.

◆ ROUNDUP_POW2_U64

#define ROUNDUP_POW2_U64 (   n64)
Value:
{ \
n64--; \
n64 |= n64 >> 1; \
n64 |= n64 >> 2; \
n64 |= n64 >> 4; \
n64 |= n64 >> 8; \
n64 |= n64 >> 16; \
n64 |= n64 >> 32; \
n64++; \
}

Definition at line 456 of file nvmisc.h.

Function Documentation

◆ nvMaskPos32()

static NV_FORCEINLINE NvU32 nvMaskPos32 ( const NvU32  mask,
const NvU32  bitIdx 
)
static

Determine how many bits are set below a bit index within a mask.

This assigns a dense ordering to the set bits in the mask.

For example the mask 0xCD contains 5 set bits: nvMaskPos32(0xCD, 0) == 0 nvMaskPos32(0xCD, 2) == 1 nvMaskPos32(0xCD, 3) == 2 nvMaskPos32(0xCD, 6) == 3 nvMaskPos32(0xCD, 7) == 4

Definition at line 400 of file nvmisc.h.

References NVBIT32, and nvPopCount32().

◆ NVMISC_MEMCPY()

static NV_FORCEINLINE void* NVMISC_MEMCPY ( void dest,
const void src,
NvLength  n 
)
static

Definition at line 605 of file nvmisc.h.

◆ NVMISC_MEMSET()

static NV_FORCEINLINE void* NVMISC_MEMSET ( void s,
NvU8  c,
NvLength  n 
)
static

Definition at line 592 of file nvmisc.h.

◆ NVMISC_STRNCPY()

static NV_FORCEINLINE char* NVMISC_STRNCPY ( char *  dest,
const char *  src,
NvLength  n 
)
static

Definition at line 619 of file nvmisc.h.

◆ nvNextPow2_U32()

static NV_FORCEINLINE NvU32 nvNextPow2_U32 ( const NvU32  x)
static

Round up a 32-bit unsigned integer to the next power of 2.

Pure typesafe alternative to ROUNDUP_POW2.

param[in] x must be in range [0, 2^31] to avoid overflow.

Definition at line 442 of file nvmisc.h.

◆ nvPopCount32()

static NV_FORCEINLINE NvU32 nvPopCount32 ( const NvU32  x)
static

Calculate number of bits set in a 32-bit unsigned integer.

Pure typesafe alternative to NUMSETBITS_32.

Definition at line 365 of file nvmisc.h.

Referenced by nvMaskPos32().

◆ nvPopCount64()

static NV_FORCEINLINE NvU32 nvPopCount64 ( const NvU64  x)
static

Calculate number of bits set in a 64-bit unsigned integer.

Definition at line 378 of file nvmisc.h.

DRF_READ_2BYTE_BS_HIGH
#define DRF_READ_2BYTE_BS_HIGH(drf, v)
Definition: nvmisc.h:314
LOWESTBIT
#define LOWESTBIT(x)
Definition: nvmisc.h:343
DRF_READ_1WORD_BS_HIGH
#define DRF_READ_1WORD_BS_HIGH(d, r, f, v)
Definition: nvmisc.h:333
DRF_MASK_MW_HIGH
#define DRF_MASK_MW_HIGH(drf)
Definition: nvmisc.h:226
DRF_READ_3BYTE_BS_HIGH
#define DRF_READ_3BYTE_BS_HIGH(drf, v)
Definition: nvmisc.h:316
DRF_IDX_DEF
#define DRF_IDX_DEF(d, r, f, i, c)
Definition: nvmisc.h:125
NVBIT64
#define NVBIT64(b)
Definition: nvmisc.h:68
DRF_READ_1BYTE_BS
#define DRF_READ_1BYTE_BS(drf, v)
Definition: nvmisc.h:305
DRF_READ_4BYTE_BS
#define DRF_READ_4BYTE_BS(drf, v)
Definition: nvmisc.h:310
DRF_SHIFT_MW_LOW
#define DRF_SHIFT_MW_LOW(drf)
Definition: nvmisc.h:227
DRF_EXTENT_MW
#define DRF_EXTENT_MW(drf)
Definition: nvmisc.h:210
DRF_WORD_MW
#define DRF_WORD_MW(drf)
Definition: nvmisc.h:208
DRF_WORD_MW_LOW
#define DRF_WORD_MW_LOW(drf)
Definition: nvmisc.h:223
DRF_SHIFT_MW_HIGH
#define DRF_SHIFT_MW_HIGH(drf)
Definition: nvmisc.h:228
DRF_READ_1BYTE_BS_HIGH
#define DRF_READ_1BYTE_BS_HIGH(drf, v)
Definition: nvmisc.h:313
DRF_MERGE_SHIFT
#define DRF_MERGE_SHIFT(drf)
Definition: nvmisc.h:229
DRF_MASK_MW_LOW
#define DRF_MASK_MW_LOW(drf)
Definition: nvmisc.h:225
DRF_READ_2BYTE_BS
#define DRF_READ_2BYTE_BS(drf, v)
Definition: nvmisc.h:306
NVBIT
#define NVBIT(b)
Definition: nvmisc.h:66
DRF_READ_3BYTE_BS
#define DRF_READ_3BYTE_BS(drf, v)
Definition: nvmisc.h:308
DRF_READ_4BYTE_BS_HIGH
#define DRF_READ_4BYTE_BS_HIGH(drf, v)
Definition: nvmisc.h:318
DRF_WORD_MW_HIGH
#define DRF_WORD_MW_HIGH(drf)
Definition: nvmisc.h:224