rem: if ( ti->tl.next!=&ti->tl && get_payload(ti->tl.next)->load<ti->load ){
add: if ( ti->tl.next!=&rcv_thread_list && get_payload(ti->tl.next)->load<ti->load ){
context: int get_new_receive_thread(){	struct thread_info *ti;	struct list_head   *pos;	/* lock the list */	lock_get( list_mutex );	/* get the first element from list */	ti = get_payload( rcv_thread_list.next );	/* increase its load */	ti->load++;	if ( ti->tl.next!=&ti->tl && get_payload(ti->tl.next)->load<ti->load ){		/* remove the first element */		list_del_zero( rcv_thread_list.next );		/* put it back in list into the corect position */		list_for_each( pos, &rcv_thread_list ) {			if ( get_payload(pos)->load==ti->load ) {				list_add_tail( &(ti->tl), pos);				break;			}		/* add at the end */		list_add_tail( &(ti->tl), &rcv_thread_list);		}	}	/* unlock the list */	lock_release( list_mutex );	return ti->cmd_pipe[1];}