*
* TODO: description
*
* This file is a part of USB SCSI CAM for Haiku.
* May be used under terms of the MIT License
*
* Author(s):
* Siarzhuk Zharski <imker@gmx.li>
*
*
*/
#ifndef _SG_BUFFER_H_
#define _SG_BUFFER_H_
#ifndef _IOVEC_H
#include <iovec.h>
#endif
\struct:_sg_buffer
*/
typedef struct _sg_buffer{
iovec iov;
iovec *piov;
int count;
bool b_own;
} sg_buffer;
#define member_offset(__type, __member) ((size_t)&(((__type *)0)->__member))
#define member_size(__type, __member) sizeof(((__type *)0)->__member)
status_t init_sg_buffer(sg_buffer *sgb, CCB_SCSIIO *ccbio);
status_t realloc_sg_buffer(sg_buffer *sgb, size_t size);
status_t sg_buffer_len(sg_buffer *sgb, size_t *size);
status_t sg_access_byte(sg_buffer *sgb, off_t offset, uchar *byte, bool b_set);
status_t sg_memcpy(sg_buffer *dest_sgb, off_t dest_offset,
sg_buffer *src_sgb, off_t src_offset, size_t size);
void free_sg_buffer(sg_buffer *sgb);
#endif