一个细节问题 求指教
static inline int slab_order(int size, int min_objects,
				int max_order, int fract_leftover)
{
	int order;
	int rem;
	int min_order = slub_min_order;
	if ((PAGE_SIZE << min_order) / size > MAX_OBJS_PER_PAGE)
		return get_order(size * MAX_OBJS_PER_PAGE) - 1;
	for (order = max(min_order,
				fls(min_objects * size - 1) - PAGE_SHIFT);
			order <= max_order; order++) {
		unsigned long slab_size = PAGE_SIZE << order;
		if (slab_size < min_objects * size)
			continue;
		rem = slab_size % size;
		if (rem <= slab_size / fract_leftover)
			break;
	}
	return order;
}
MAX_OBJS_PER_PAGE指一个slab(1或多个页组成的大页面)内最多对象数,值为65535,
因为struct page中objects成员为u16类型。如果对象数超出这个上限, 根据上限计算order。
return get_order(size * MAX_OBJS_PER_PAGE) - 1;
虽然这个地方  很难被执行  但是
有没有人注意过这个地方为什么要   减1  ????
减掉1  那不是会导致返回order对应的页面不够来存放MAX_OBJS_PER_PAGE个对象了?
备注:
get_order(0xff)  = 0
get_order(0xfff)  = 0
get_order(0x5fff)  = 3
get_order(0x55fff)  = 7
------解决方案--------------------
你是什么?你一上来就是代码,有几个人会看啊,你应该说下你要干嘛?