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

[Lost] [PATCH] + cdi: Header fuer cdi/scsi (ungetestet)



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