Changeset d03ade7 in mainline for uspace/drv/uhci/transfer_list.c


Ignore:
Timestamp:
2011-01-25T21:25:39Z (13 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9ee87f6
Parents:
b00163f
Message:

Enqueue transfers

Fix malloc check in uhci_add_transfer()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/uhci/transfer_list.c

    rb00163f rd03ade7  
    2323  transfer_list_t *instance, transfer_descriptor_t *transfer)
    2424{
     25        assert(instance);
     26        assert(transfer);
     27
     28        uint32_t pa = (uintptr_t)addr_to_phys(transfer);
     29        assert((pa & LINK_POINTER_ADDRESS_MASK) == pa);
     30
     31        /* empty list */
     32        if (instance->first == NULL) {
     33                assert(instance->last == NULL);
     34                instance->first = instance->last = transfer;
     35        } else {
     36                assert(instance->last);
     37                instance->last->next_va = transfer;
     38
     39                assert(instance->last->next & LINK_POINTER_TERMINATE_FLAG);
     40                instance->last->next = (pa & LINK_POINTER_ADDRESS_MASK);
     41                instance->last = transfer;
     42        }
     43
     44        assert(instance->queue_head);
     45        if (instance->queue_head->element & LINK_POINTER_TERMINATE_FLAG) {
     46                instance->queue_head->element = (pa & LINK_POINTER_ADDRESS_MASK);
     47        }
     48        uhci_print_info("Successfully added transfer to the hc queue.\n");
    2549        return EOK;
    2650}
Note: See TracChangeset for help on using the changeset viewer.