lkml.org 
[lkml]   [2004]   [Mar]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [PATCH] IDE cleanups for 2.6.4-rc1 (2/3)
Date
On Wednesday 03 of March 2004 00:08, Jeff Garzik wrote:
> Bartlomiej Zolnierkiewicz wrote:
> > [IDE] remove ide_cmd_type_parser() logic
> >
> > Set ide_task_t fields (command_type, handler and prehandler) directly.
> > Remove unused ide_task_t->posthandler and all ide_cmd_type_parser()
> > logic.
> >
> > ide_cmd_type_parser() was meant to be used for ioctls but
> > ended up checking validity of kernel generated requests (doh!).
> >
> > Rationale for removal:
> > - it can't be used for existing ioctls (changes the way they work)
> > - kernel shouldn't check validity of (root only) user-space requests
> > (it can and should be done in user-space)
> > - it wastes CPU cycles on going through parsers
> > - it makes code harder to understand/follow
> > (now info about request is localized)
>
> Without the annoyingly-large 'switch', how do you figure out whether a
> command is non-data, pio-read, pio-write, dma-read, or dma-write?

Using ide_task_t->{command_type, handler}, command_type values:

IDE_DRIVE_TASK_IN - read
IDE_DRIVE_TASK_RAW_WRITE - write
IDE_DRIVE_TASK_NO_DATA - no data

If handler is NULL we know that command is a DMA one.

HDIO_DRIVE_TASKFILE gets information about taskfile from user-space in
ide_task_request_t->{command_type, data_phase}, data_phase can be:

TASKFILE_OUT_DMA{Q}
TASKFILE_IN_DMA{Q}
TASKFILE_MULTI_OUT
TASKFILE_OUT
TASKFILE_MULTI_IN
TASKFILE_IN
TASKFILE_NO_DATA

and this information is translated into ide_task_t->handler.

This is of course non-optimal and driver should be using something like
ata_taskfile->protocol (as in libata).

Please note that any attempts to verify commands (like this 'switch')
will fail for future or vendor specific ones.

Bartlomiej

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:01    [W:0.168 / U:0.008 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site