183,11 → 183,11 |
// leave locked |
} |
|
packet_t pq_add( packet_t first, packet_t packet, int order, size_t metric ){ |
packet_t pq_add( packet_t first, packet_t packet, size_t order, size_t metric ){ |
packet_t item; |
|
if( ! packet_is_valid( packet )) return NULL; |
pq_set( packet, order, metric ); |
pq_set_order( packet, order, metric ); |
if( packet_is_valid( first )){ |
item = first; |
do{ |
205,7 → 205,7 |
item->previous = packet->packet_id; |
item = pm_find( packet->previous ); |
if( item ) item->next = packet->packet_id; |
return item; |
return item ? first : packet; |
} |
}while( packet_is_valid( item )); |
} |
212,6 → 212,21 |
return packet; |
} |
|
packet_t pq_find( packet_t packet, size_t order ){ |
packet_t item; |
|
if( ! packet_is_valid( packet )) return NULL; |
if( packet->order == order ) return packet; |
item = pm_find( packet->next ); |
while( item && ( item != packet )){ |
item = pm_find( item->next ); |
if( item->order == order ){ |
return item; |
} |
} |
return NULL; |
} |
|
int pq_insert_after( packet_t packet, packet_t new_packet ){ |
packet_t item; |
|
242,7 → 257,7 |
return next; |
} |
|
int pq_set( packet_t packet, int order, size_t metric ){ |
int pq_set_order( packet_t packet, size_t order, size_t metric ){ |
if( ! packet_is_valid( packet )) return EINVAL; |
packet->order = order; |
packet->metric = metric; |
249,6 → 264,13 |
return EOK; |
} |
|
int pq_get_order( packet_t packet, size_t * order, size_t * metric ){ |
if( ! packet_is_valid( packet )) return EINVAL; |
if( order ) * order = packet->order; |
if( metric ) * metric = packet->metric; |
return EOK; |
} |
|
void pq_destroy( packet_t first, void ( * packet_release )( packet_t packet )){ |
packet_t actual; |
packet_t next; |