So ich habe mich hier mal an einem Header fuer CDI/scsi versucht. Ich weiss aber nicht wirklich ob das reicht was ich da habe, da ich SCSI bis jetzt noch nie implementiert habe. ;-) --- src/modules/cdi/include/cdi/scsi.h | 81 ++++++++++++++++++++++++++++++++++++ 1 files changed, 81 insertions(+), 0 deletions(-) create mode 100644 src/modules/cdi/include/cdi/scsi.h diff --git a/src/modules/cdi/include/cdi/scsi.h b/src/modules/cdi/include/cdi/scsi.h new file mode 100644 index 0000000..377ec38 --- /dev/null +++ b/src/modules/cdi/include/cdi/scsi.h @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2008 Antoine Kaufmann + * + * This program is free software. It comes without any warranty, to + * the extent permitted by applicable law. You can redistribute it + * and/or modify it under the terms of the Do What The Fuck You Want + * To Public License, Version 2, as published by Sam Hocevar. See + * http://sam.zoy.org/projects/COPYING.WTFPL for more details. + */ + +#ifndef _CDI_SCSI_H_ +#define _CDI_SCSI_H_ + +#include <stdint.h> + +#include "cdi.h" + +struct cdi_scsi_device { + struct cdi_device dev; +}; + +struct cdi_scsi_driver { + struct cdi_driver drv; + + /** + * Sendet einen SCSI-Request ab, und wartet auf eine Response die dann + * zurueckgegeben wird. + * + * @param request Pointer auf den Request + * @param size Groesse des Requests + * + * @return Pointer auf ein SCSI-Paket (muss vom Aufrufer freigegeben werden + * mit cdi_scsi_packet_free) oder NULL im Fehlerfall. + */ + struct cdi_scsi_packet* (*request)(struct cdi_scsi_device* device, + struct cdi_scsi_packet* packet); +}; + +/** SCSI-Paket */ +struct cdi_scsi_packet { + /** Pointer auf die Daten */ + void* data; + + /** Groesse der Daten */ + uint32_t size; +}; + +/** + * Ein SCSI-Paket allozieren + * + * @param size Benoetigte Groesse + * + * @return Pointer auf das Paket oder NULL im Fehlerfall + */ +struct cdi_scsi_packet* cdi_scsi_packet_alloc(uint32_t size); + +/** + * Ein SCSI-Paket freigeben + * + * @param packet Pointer auf das Paket + */ +void cdi_scsi_packet_free(struct cdi_scsi_packet* packet); + + + +/** + * Initialisiert die Datenstrukturen fuer einen SCSI-Treiber + */ +void cdi_scsi_driver_init(struct cdi_scsi_driver* driver); + +/** + * Deinitialisiert die Datenstrukturen fuer einen SCSI-Treiber + */ +void cdi_scsi_driver_destroy(struct cdi_scsi_driver* driver); + +/** + * Registiert einen SCSI-Treiber + */ +void cdi_scsi_driver_register(struct cdi_scsi_driver* driver); + +#endif -- 1.5.6.4 -- Antoine Kaufmann <toni@xxxxxxxxxxxxxxxx>
Attachment:
pgpZ3K1Wgqw4W.pgp
Description: PGP signature