/*! 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; }
/*! 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;