Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 4730 → Rev 4731

/branches/network/uspace/srv/net/structures/packet/packet.c
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;