/*! Find and return priority of highest priority thread in ready list */
static int get_top_ready ()
{
	int i, first = -1;

	for ( i = RDY_MASKS - 1; i >= 0; i-- )
		if ( rdy_mask[i] )
		{
			first = i * sizeof (word_t) + msb_index ( rdy_mask[i] );
			break;
		}

	return first;
}
示例#2
0
文件: sched.c 项目: l30nard0/Benu
/*! Find and return highest priority thread in ready list */
static kthread_t *get_first_ready ()
{
	int i, first;

	for ( i = ready.mask_len - 1; i >= 0; i-- )
	{
		if ( ready.mask[i] )
		{
			first = i * UINT_SIZE + msb_index (ready.mask[i]);
			return kthreadq_get ( &ready.rq[first] );
		}
	}

	return NULL;
}
	while (msb) {
		if (word & msb)
			break;   /* Found it! */
		msb >>=1;
		index--;
	}
	return index;
}

static inline __u32 byte_value(__u8 byte, __u32 *array) 
{
	int index;

	ASSERT(array != NULL, return -1;);

	index = msb_index(byte);

	return index_value(index, array);
}

/*
 * Function value_lower_bits (value, array)
 *
 *    Returns a bit field marking all possibility lower than value.
 */
static inline int value_lower_bits(__u32 value, __u32 *array, int size, __u16 *field)
{
	int	i;
	__u16	mask = 0x1;
	__u16	result = 0x0;