Changeset 577 for soft


Ignore:
Timestamp:
May 21, 2015, 3:04:21 PM (9 years ago)
Author:
bellefin
Message:

Improve hba driver

File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/giet_drivers/hba_driver.h

    r545 r577  
    1717//
    1818// 3. The "command list" can contain up to 32 independant commands, posted
    19 //    by different user tasks. These independant transfers are handled
    20 //    by the HBA device in the same order as they have been written by the
    21 //    driver(s) in the command list. There is no global lock protecting the
    22 //    the HBA device, but the command list being a shared structure, the driver
    23 //    must use an atomic_increment() to get a slot in the command list,
    24 //    and increment the write pointer.
     19//    by different user tasks. These independant transfers are handled by
     20//    the HBA device. The command list being a shared structure, the driver
     21//    must use a lock to get a slot in the command list (except in boot mode
     22//    when only one processor uses the HBA device). This slot is then
     23//    allocated to the task until the command is completed.
    2524//
    2625// 4. This driver implements two operating mode:
     
    3534//    that is statically routed to processor P[x_io,y_io,0] in cluster_io.
    3635//    The associated global HBA_ISR send a WAKUP WTI to all tasks that have
    37 //    a completed command. This HBA_ISR uses a read pointer on the command
    38 //    to identify the first expected command completion. The incrementation
    39 //    of this read pointer does not require atomic_increment as there is
    40 //    no concurrent access for this pointer.
     36//    a completed active command. In order to know which commands expect
     37//    completion, the HBA_ISR uses the _hba_active_cmd table which indicates
     38//    currently active commands (in descheduling mode only).
    4139//
    4240// The SEG_IOC_BASE virtual address must be defined in the hard_config.h file.
Note: See TracChangeset for help on using the changeset viewer.