threads / discuss / 22661

ce_stage(..) == 2?

Subject: ce_stage(..) == 2?

## tl;dr

2 messages between Feb 15, 2010 and Feb 15, 2010.

replies: 1people: 2as markdown or json

cg· Feb 15, 2010, 06:48 UTC · lore
Hi,

I saw some code like: attr.c(365): if (ce_stage(istate->cache[i]) == 2) ... rerere.c(352): if (ce_stage(e2) == 2 ...

but there is no 0x200 in cache.h(158): #define CE_NAMEMASK (0x0fff) #define CE_STAGEMASK (0x3000) #define CE_EXTENDED (0x4000) #define CE_VALID (0x8000) #define CE_STAGESHIFT 12

so what does "2" mean?

Thanks cg

Junio C Hamano· Feb 15, 2010, 06:53 UTC · re: cg · lore

Re: ce_stage(..) == 2?

cg <chengang31@gmail.com> writes:
Show 14 quoted lines
> I  saw some code like:
> attr.c(365): if (ce_stage(istate->cache[i]) == 2)
> ...
> rerere.c(352):  if (ce_stage(e2) == 2
> ...
>
> but there is no 0x200 in cache.h(158):
> #define CE_NAMEMASK  (0x0fff)
> #define CE_STAGEMASK (0x3000)
> #define CE_EXTENDED  (0x4000)
> #define CE_VALID     (0x8000)
> #define CE_STAGESHIFT 12
>
> so what does "2" mean?
#define ce_stage(ce) ((CE_STAGEMASK & (ce)->ce_flags) >> CE_STAGESHIFT)

0x3000 shifted 12 places is a mask for two bits, as you can have cache entries at stage 0 (normal), or stage 1/2/3.

← back to recent threads