Changes between Version 22 and Version 23 of Component/Vci Multi Ahci


Ignore:
Timestamp:
Apr 28, 2015, 6:57:25 PM (9 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Component/Vci Multi Ahci

    v22 v23  
    3737== 3) Command Table ==
    3838
    39 There is one Command Table for each Command descriptor. For a given command, there is one single LBA (Logic Bloc Address) on the block device, coded on 48 bits, but the source (or destination) memory buffer can be split in a variable number of contiguous buffers. Therefore, the Command Table contains two parts: a fixed size Header, defining the LBA, and an array of buffer descriptors containing up to 248 buffer descriptors. A Command Table occupies 4 Kbytes, and must be aligned on a 4 Kbytes boundary. It is defined by the following C structures:
     39There is one Command Table for each Command descriptor. For a given command, there is one single LBA (Logic Bloc Address) on the block device, coded on 48 bits, but the source (or destination) memory buffer can be split in a variable number of contiguous buffers. Therefore, the Command Table contains two parts: a fixed size Header, defining the LBA, followed by a variable size array of fixed size buffer descriptors.
     40The Command Table describing one command is defined by the two following C structures:
    4041{{{
    41 typedef struct hba_cmd_table_s  // size = 4 Kbytes
    42 {
    4342
    44     hba_cmd_header_t   header;      // contains LBA
    45     hba_cmd_buffer_t   buffer[248]; // 248 buffers max
    46 
    47 } hba_cmd_table_t;
    48 
    49 typedef struct hba_cmd_header_s // size = 128 bytes
     43typedef struct hba_cmd_header_s // size = 16 bytes
    5044{
    5145    unsigned int       res0;        // reserved
     
    5751    unsigned char      lba4;        // LBA 39:32
    5852    unsigned char      lba5;        // LBA 47:40
     53    unsigned char      res1;        // reserved
    5954    unsigned char      res2;        // reserved
    60     unsigned int       res[29];     // reserved
     55    unsigned int       res3;        // reserved
    6156} hba_cmd_header_t;
    6257