diff --git a/osd-target/cdb.c b/osd-target/cdb.c index 016d79e..2a46e18 100644 --- a/osd-target/cdb.c +++ b/osd-target/cdb.c @@ -3,6 +3,7 @@ * core osd functions in osd.c. * * Copyright (C) 2007 OSD Team + * Copyright (C) 2010 University of Connecticut * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -33,6 +34,20 @@ /* * Aggregate parameters for function calls in this file. */ + +struct cdb_continuation_descriptor { + uint16_t type; + uint32_t length; + union { + const void *desc_specific_hdr; + }; +}; + +struct cdb_continuation { + uint32_t num_descriptors; + struct cdb_continuation_descriptor *descriptors; +}; + struct command { struct osd_device *osd; uint8_t *cdb; @@ -42,6 +57,7 @@ struct command { struct getattr_list get_attr; struct setattr_list set_attr; const uint8_t *indata; + struct cdb_continuation cont; uint64_t inlen; uint8_t *outdata; uint64_t outlen; diff --git a/osd-target/osd-types.h b/osd-target/osd-types.h index ceaff29..47ed91b 100644 --- a/osd-target/osd-types.h +++ b/osd-target/osd-types.h @@ -219,4 +219,13 @@ enum { #define TICK_TRACE(x) #endif +/* CDB continuation descriptors */ + +struct cdb_continuation_descriptor_header { + uint16_t type; + uint8_t reserved; + uint8_t pad_length; + uint32_t length; +}; + #endif /* __OSD_TYPES_H */