0
리눅스 커널에서
, 우리는/slab.c mm의 기능을 가지고 내가 무엇을 slab_bufctl() 또는 다음 무료 슬래브를 찾는 방법을 이해하지 못하는slab_get_obj()의 slab_bufclt()는 무엇을 의미합니까?
static inline kmem_bufctl_t *slab_bufctl(struct slab *slabp)
{
return (kmem_bufctl_t *) (slabp + 1);
}
static void *slab_get_obj(struct kmem_cache *cachep, struct slab
*slabp,
int nodeid) {
void *objp = index_to_obj(cachep, slabp, slabp->free);
kmem_bufctl_t next;
slabp->inuse++;
next = slab_bufctl(slabp)[slabp->free];
#if DEBUG
slab_bufctl(slabp)[slabp->free] = BUFCTL_FREE;
WARN_ON(slabp->nodeid != nodeid);
#endif
slabp->free = next;
return objp; }
경우, 그것으로.
그것은'구조체 슬래브 것 같아 * slabp ''struct slab'의 배열입니다. 그러므로,'slabp + 1 '은'slab_bufctl'에서'slabp' 옆에있는 원소를 반환합니다. – n3rd4n1