On Wed, Jul 18, 2007 at 07:00:01PM +0800, jidong xiao wrote:
> I see this function,struct Scsi_Host *scsi_host_alloc(struct
> scsi_host_template *, int), I am wondering what does the second
> parameter used for?Say,
>
> I mean the privsize, i.e. extra bytes, why do we need such extra
> bytes?Who will use it?
It's for the use of the driver. Many drivers have a struct containing
additional information, such as:
struct scsi_qla_host {
/* Linux adapter configuration data */
struct Scsi_Host *host; /* pointer to host data */
struct scsi_qla_host *next;
struct device_reg __iomem *iobase; /* Base Memory-mapped I/O addres
s */
[....]
struct nvram nvram;
int nvram_valid;
};
...
struct scsi_qla_host *ha;
host = scsi_host_alloc(&qla1280_driver_template, sizeof(*ha));
ha = (struct scsi_qla_host *)host->hostdata;
It means the driver doesn't need to allocate the private data separately,
so it's a little more efficient. You also don't need to worry about
reference counting it; it will be freed when the Scsi_Host is freed.
--
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours. We can't possibly take such
a retrograde step."
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html