tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

re: Implement mode_select for atapi tape drives - round 4



   On Mon, Aug 10, 2009 at 05:29:34AM +1000, matthew green wrote:
   > 
   >    > +     u_int select_len;
   >    > +     struct select {
   >    > +             struct scsi_mode_parameter_header_6 header;
   >    > +             struct scsi_general_block_descriptor blk_desc;
   >    > +             u_char sense_data[MAX_PAGE_0_SIZE];
   >    > +     } select;
   >    > +     struct scsipi_periph *periph = st->sc_periph;
   >    > +
   >    > +     select_len = sizeof(select.header) + sizeof(select.blk_desc) +
   >    > +                  st->page_0_size;
   >    > 
   >    > should select be __packed?
   >    
   >    Yes, it should probably be. I know most hardware structures are not
   >    declared __packed in the scsipi code, we've been luky this didn't cause
   >    issues for now ...
   > 
   > 
   > are these structures used heavily?  __packed will significantly
   > slow down accesses to and from them.
   
   These structure is what the hardware expects or send. If the compiler
   changes member order add paddings in order to speed up accesses, it
   won't work. 
   Or maybe you're talking about something else ?


i mean that on alignment constrained hardware the compiler may
emit 4 byte accesses and or them together to read in an int that
is always going to be properly aligned.


.mrg.


Home | Main Index | Thread Index | Old Index