diff options
author | Douglas Gilbert <dgilbert@interlog.com> | 2009-02-04 01:46:34 +0000 |
---|---|---|
committer | Douglas Gilbert <dgilbert@interlog.com> | 2009-02-04 01:46:34 +0000 |
commit | 248d7851133233cd1f72a9c3f9e0fbed61e09b92 (patch) | |
tree | 72f99da2e5daf82265be2ae6ab3b5773c9f20832 /lib | |
parent | 106f246bc446e90dcbcb9536124eaded7d3cece5 (diff) | |
download | sg3_utils-248d7851133233cd1f72a9c3f9e0fbed61e09b92.tar.gz |
sg_pt do_scsi_pt() clear os_err as start of function
git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@207 6180dd3e-e324-4e3e-922d-17de1ae2f315
Diffstat (limited to 'lib')
-rw-r--r-- | lib/sg_pt_common.c | 2 | ||||
-rw-r--r-- | lib/sg_pt_freebsd.c | 111 | ||||
-rw-r--r-- | lib/sg_pt_linux.c | 90 | ||||
-rw-r--r-- | lib/sg_pt_osf1.c | 97 | ||||
-rw-r--r-- | lib/sg_pt_solaris.c | 100 | ||||
-rw-r--r-- | lib/sg_pt_win32.c | 106 |
6 files changed, 313 insertions, 193 deletions
diff --git a/lib/sg_pt_common.c b/lib/sg_pt_common.c index e4538167..1d09f99e 100644 --- a/lib/sg_pt_common.c +++ b/lib/sg_pt_common.c @@ -32,7 +32,7 @@ #include "sg_pt.h" -static const char * scsi_pt_version_str = "2.01 20090201"; +static const char * scsi_pt_version_str = "2.02 20090203"; const char * scsi_pt_version() diff --git a/lib/sg_pt_freebsd.c b/lib/sg_pt_freebsd.c index c7ba5156..67ee3f4f 100644 --- a/lib/sg_pt_freebsd.c +++ b/lib/sg_pt_freebsd.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005-2008 Douglas Gilbert. + * Copyright (c) 2005-2009 Douglas Gilbert. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,7 +27,7 @@ * */ -/* version 1.08 20081129 */ +/* sg_pt_freebsd version 1.09 20090203 */ #include <stdio.h> #include <stdlib.h> @@ -91,9 +91,8 @@ struct sg_pt_base { /* Returns >= 0 if successful. If error in Unix returns negated errno. */ -int scsi_pt_open_device(const char * device_name, - int read_only, - int verbose) +int +scsi_pt_open_device(const char * device_name, int read_only, int verbose) { int oflags = 0 /* O_NONBLOCK*/ ; @@ -101,12 +100,12 @@ int scsi_pt_open_device(const char * device_name, return scsi_pt_open_flags(device_name, oflags, verbose); } -/* Similar to scsi_pt_open_device() but takes Unix style open flags OR-ed */ -/* together. The 'flags' argument is ignored in FreeBSD. */ -/* Returns >= 0 if successful, otherwise returns negated errno. */ -int scsi_pt_open_flags(const char * device_name, - int flags __attribute__ ((unused)), - int verbose) +/* Similar to scsi_pt_open_device() but takes Unix style open flags OR-ed + * together. The 'flags' argument is ignored in FreeBSD. + * Returns >= 0 if successful, otherwise returns negated errno. */ +int +scsi_pt_open_flags(const char * device_name, + int flags __attribute__ ((unused)), int verbose) { struct freebsd_dev_channel *fdchan; struct cam_device* cam_dev; @@ -162,7 +161,8 @@ int scsi_pt_open_flags(const char * device_name, } /* Returns 0 if successful. If error in Unix returns negated errno. */ -int scsi_pt_close_device(int device_fd) +int +scsi_pt_close_device(int device_fd) { struct freebsd_dev_channel *fdchan; int fd = device_fd - FREEBSD_FDOFFSET; @@ -185,7 +185,8 @@ int scsi_pt_close_device(int device_fd) return 0; } -struct sg_pt_base * construct_scsi_pt_obj() +struct sg_pt_base * +construct_scsi_pt_obj() { struct sg_pt_freebsd_scsi * ptp; @@ -198,7 +199,8 @@ struct sg_pt_base * construct_scsi_pt_obj() return (struct sg_pt_base *)ptp; } -void destruct_scsi_pt_obj(struct sg_pt_base * vp) +void +destruct_scsi_pt_obj(struct sg_pt_base * vp) { struct sg_pt_freebsd_scsi * ptp = &vp->impl; @@ -209,8 +211,8 @@ void destruct_scsi_pt_obj(struct sg_pt_base * vp) } } -void set_scsi_pt_cdb(struct sg_pt_base * vp, const unsigned char * cdb, - int cdb_len) +void +set_scsi_pt_cdb(struct sg_pt_base * vp, const unsigned char * cdb, int cdb_len) { struct sg_pt_freebsd_scsi * ptp = &vp->impl; @@ -220,8 +222,9 @@ void set_scsi_pt_cdb(struct sg_pt_base * vp, const unsigned char * cdb, ptp->cdb_len = cdb_len; } -void set_scsi_pt_sense(struct sg_pt_base * vp, unsigned char * sense, - int max_sense_len) +void +set_scsi_pt_sense(struct sg_pt_base * vp, unsigned char * sense, + int max_sense_len) { struct sg_pt_freebsd_scsi * ptp = &vp->impl; @@ -232,8 +235,10 @@ void set_scsi_pt_sense(struct sg_pt_base * vp, unsigned char * sense, ptp->sense_len = max_sense_len; } -void set_scsi_pt_data_in(struct sg_pt_base * vp, /* from device */ - unsigned char * dxferp, int dxfer_len) +/* Setup for data transfer from device */ +void +set_scsi_pt_data_in(struct sg_pt_base * vp, unsigned char * dxferp, + int dxfer_len) { struct sg_pt_freebsd_scsi * ptp = &vp->impl; @@ -246,8 +251,10 @@ void set_scsi_pt_data_in(struct sg_pt_base * vp, /* from device */ } } -void set_scsi_pt_data_out(struct sg_pt_base * vp, /* to device */ - const unsigned char * dxferp, int dxfer_len) +/* Setup for data transfer toward device */ +void +set_scsi_pt_data_out(struct sg_pt_base * vp, const unsigned char * dxferp, + int dxfer_len) { struct sg_pt_freebsd_scsi * ptp = &vp->impl; @@ -260,38 +267,44 @@ void set_scsi_pt_data_out(struct sg_pt_base * vp, /* to device */ } } -void set_scsi_pt_packet_id(struct sg_pt_base * vp __attribute__ ((unused)), - int pack_id __attribute__ ((unused))) +void +set_scsi_pt_packet_id(struct sg_pt_base * vp __attribute__ ((unused)), + int pack_id __attribute__ ((unused))) { } -void set_scsi_pt_tag(struct sg_pt_base * vp, - uint64_t tag __attribute__ ((unused))) +void +set_scsi_pt_tag(struct sg_pt_base * vp, uint64_t tag __attribute__ ((unused))) { struct sg_pt_freebsd_scsi * ptp = &vp->impl; ++ptp->in_err; } -void set_scsi_pt_task_management(struct sg_pt_base * vp, - int tmf_code __attribute__ ((unused))) +void +set_scsi_pt_task_management(struct sg_pt_base * vp, + int tmf_code __attribute__ ((unused))) { struct sg_pt_freebsd_scsi * ptp = &vp->impl; ++ptp->in_err; } -void set_scsi_pt_task_attr(struct sg_pt_base * vp, - int attrib __attribute__ ((unused)), - int priority __attribute__ ((unused))) +void +set_scsi_pt_task_attr(struct sg_pt_base * vp, + int attrib __attribute__ ((unused)), + int priority __attribute__ ((unused))) { struct sg_pt_freebsd_scsi * ptp = &vp->impl; ++ptp->in_err; } -int do_scsi_pt(struct sg_pt_base * vp, int device_fd, int time_secs, - int verbose) +/* Executes SCSI command (or at least forwards it to lower layers). + * Clears os_err field prior to active call (whose result may set it + * again). */ +int +do_scsi_pt(struct sg_pt_base * vp, int device_fd, int time_secs, int verbose) { int fd = device_fd - FREEBSD_FDOFFSET; struct sg_pt_freebsd_scsi * ptp = &vp->impl; @@ -301,6 +314,7 @@ int do_scsi_pt(struct sg_pt_base * vp, int device_fd, int time_secs, if (NULL == sg_warnings_strm) sg_warnings_strm = stderr; + ptp->os_err = 0; if (ptp->in_err) { if (verbose) fprintf(sg_warnings_strm, "Replicated or unused set_scsi_pt...\n"); @@ -389,7 +403,8 @@ int do_scsi_pt(struct sg_pt_base * vp, int device_fd, int time_secs, return 0; } -int get_scsi_pt_result_category(const struct sg_pt_base * vp) +int +get_scsi_pt_result_category(const struct sg_pt_base * vp) { const struct sg_pt_freebsd_scsi * ptp = &vp->impl; @@ -406,21 +421,24 @@ int get_scsi_pt_result_category(const struct sg_pt_base * vp) return SCSI_PT_RESULT_GOOD; } -int get_scsi_pt_resid(const struct sg_pt_base * vp) +int +get_scsi_pt_resid(const struct sg_pt_base * vp) { const struct sg_pt_freebsd_scsi * ptp = &vp->impl; return ptp->resid; } -int get_scsi_pt_status_response(const struct sg_pt_base * vp) +int +get_scsi_pt_status_response(const struct sg_pt_base * vp) { const struct sg_pt_freebsd_scsi * ptp = &vp->impl; return ptp->scsi_status; } -int get_scsi_pt_sense_len(const struct sg_pt_base * vp) +int +get_scsi_pt_sense_len(const struct sg_pt_base * vp) { const struct sg_pt_freebsd_scsi * ptp = &vp->impl; int len; @@ -429,30 +447,33 @@ int get_scsi_pt_sense_len(const struct sg_pt_base * vp) return (len > 0) ? len : 0; } -int get_scsi_pt_duration_ms(const struct sg_pt_base * vp __attribute__ ((unused))) +int +get_scsi_pt_duration_ms(const struct sg_pt_base * vp __attribute__ ((unused))) { // const struct sg_pt_freebsd_scsi * ptp = &vp->impl; return -1; } -int get_scsi_pt_transport_err(const struct sg_pt_base * vp) +int +get_scsi_pt_transport_err(const struct sg_pt_base * vp) { const struct sg_pt_freebsd_scsi * ptp = &vp->impl; return ptp->transport_err; } -int get_scsi_pt_os_err(const struct sg_pt_base * vp) +int +get_scsi_pt_os_err(const struct sg_pt_base * vp) { const struct sg_pt_freebsd_scsi * ptp = &vp->impl; return ptp->os_err; } - -char * get_scsi_pt_transport_err_str(const struct sg_pt_base * vp, - int max_b_len, char * b) +char * +get_scsi_pt_transport_err_str(const struct sg_pt_base * vp, int max_b_len, + char * b) { const struct sg_pt_freebsd_scsi * ptp = &vp->impl; @@ -476,8 +497,8 @@ char * get_scsi_pt_transport_err_str(const struct sg_pt_base * vp, return b; } -char * get_scsi_pt_os_err_str(const struct sg_pt_base * vp, - int max_b_len, char * b) +char * +get_scsi_pt_os_err_str(const struct sg_pt_base * vp, int max_b_len, char * b) { const struct sg_pt_freebsd_scsi * ptp = &vp->impl; const char * cp; diff --git a/lib/sg_pt_linux.c b/lib/sg_pt_linux.c index 16cab825..96d80f53 100644 --- a/lib/sg_pt_linux.c +++ b/lib/sg_pt_linux.c @@ -27,7 +27,7 @@ * */ -/* version 1.09 20090202 */ +/* sg_pt_linux version 1.10 20090203 */ #include <stdio.h> #include <stdlib.h> @@ -59,8 +59,8 @@ struct sg_pt_base { /* Returns >= 0 if successful. If error in Unix returns negated errno. */ -int scsi_pt_open_device(const char * device_name, int read_only, - int verbose) +int +scsi_pt_open_device(const char * device_name, int read_only, int verbose) { int oflags = O_NONBLOCK; @@ -71,7 +71,8 @@ int scsi_pt_open_device(const char * device_name, int read_only, /* Similar to scsi_pt_open_device() but takes Unix style open flags OR-ed */ /* together. The 'flags' argument is advisory and may be ignored. */ /* Returns >= 0 if successful, otherwise returns negated errno. */ -int scsi_pt_open_flags(const char * device_name, int flags, int verbose) +int +scsi_pt_open_flags(const char * device_name, int flags, int verbose) { int fd; @@ -88,7 +89,8 @@ int scsi_pt_open_flags(const char * device_name, int flags, int verbose) } /* Returns 0 if successful. If error in Unix returns negated errno. */ -int scsi_pt_close_device(int device_fd) +int +scsi_pt_close_device(int device_fd) { int res; @@ -99,7 +101,8 @@ int scsi_pt_close_device(int device_fd) } -struct sg_pt_base * construct_scsi_pt_obj() +struct sg_pt_base * +construct_scsi_pt_obj() { struct sg_pt_linux_scsi * ptp; @@ -113,7 +116,8 @@ struct sg_pt_base * construct_scsi_pt_obj() return (struct sg_pt_base *)ptp; } -void destruct_scsi_pt_obj(struct sg_pt_base * vp) +void +destruct_scsi_pt_obj(struct sg_pt_base * vp) { struct sg_pt_linux_scsi * ptp = &vp->impl; @@ -121,8 +125,9 @@ void destruct_scsi_pt_obj(struct sg_pt_base * vp) free(ptp); } -void set_scsi_pt_cdb(struct sg_pt_base * vp, const unsigned char * cdb, - int cdb_len) +void +set_scsi_pt_cdb(struct sg_pt_base * vp, const unsigned char * cdb, + int cdb_len) { struct sg_pt_linux_scsi * ptp = &vp->impl; @@ -132,8 +137,9 @@ void set_scsi_pt_cdb(struct sg_pt_base * vp, const unsigned char * cdb, ptp->io_hdr.cmd_len = cdb_len; } -void set_scsi_pt_sense(struct sg_pt_base * vp, unsigned char * sense, - int max_sense_len) +void +set_scsi_pt_sense(struct sg_pt_base * vp, unsigned char * sense, + int max_sense_len) { struct sg_pt_linux_scsi * ptp = &vp->impl; @@ -144,8 +150,10 @@ void set_scsi_pt_sense(struct sg_pt_base * vp, unsigned char * sense, ptp->io_hdr.mx_sb_len = max_sense_len; } -void set_scsi_pt_data_in(struct sg_pt_base * vp, /* from device */ - unsigned char * dxferp, int dxfer_len) +/* Setup for data transfer from device */ +void +set_scsi_pt_data_in(struct sg_pt_base * vp, unsigned char * dxferp, + int dxfer_len) { struct sg_pt_linux_scsi * ptp = &vp->impl; @@ -158,8 +166,10 @@ void set_scsi_pt_data_in(struct sg_pt_base * vp, /* from device */ } } -void set_scsi_pt_data_out(struct sg_pt_base * vp, /* to device */ - const unsigned char * dxferp, int dxfer_len) +/* Setup for data transfer toward device */ +void +set_scsi_pt_data_out(struct sg_pt_base * vp, const unsigned char * dxferp, + int dxfer_len) { struct sg_pt_linux_scsi * ptp = &vp->impl; @@ -172,14 +182,16 @@ void set_scsi_pt_data_out(struct sg_pt_base * vp, /* to device */ } } -void set_scsi_pt_packet_id(struct sg_pt_base * vp, int pack_id) +void +set_scsi_pt_packet_id(struct sg_pt_base * vp, int pack_id) { struct sg_pt_linux_scsi * ptp = &vp->impl; ptp->io_hdr.pack_id = pack_id; } -void set_scsi_pt_tag(struct sg_pt_base * vp, uint64_t tag) +void +set_scsi_pt_tag(struct sg_pt_base * vp, uint64_t tag) { struct sg_pt_linux_scsi * ptp = &vp->impl; @@ -188,7 +200,8 @@ void set_scsi_pt_tag(struct sg_pt_base * vp, uint64_t tag) } /* Note that task management function codes are transport specific */ -void set_scsi_pt_task_management(struct sg_pt_base * vp, int tmf_code) +void +set_scsi_pt_task_management(struct sg_pt_base * vp, int tmf_code) { struct sg_pt_linux_scsi * ptp = &vp->impl; @@ -196,8 +209,8 @@ void set_scsi_pt_task_management(struct sg_pt_base * vp, int tmf_code) tmf_code = tmf_code; /* dummy to silence compiler */ } -void set_scsi_pt_task_attr(struct sg_pt_base * vp, int attribute, - int priority) +void +set_scsi_pt_task_attr(struct sg_pt_base * vp, int attribute, int priority) { struct sg_pt_linux_scsi * ptp = &vp->impl; @@ -206,12 +219,17 @@ void set_scsi_pt_task_attr(struct sg_pt_base * vp, int attribute, priority = priority; /* dummy to silence compiler */ } -int do_scsi_pt(struct sg_pt_base * vp, int fd, int time_secs, int verbose) +/* Executes SCSI command (or at least forwards it to lower layers). + * Clears os_err field prior to active call (whose result may set it + * again). */ +int +do_scsi_pt(struct sg_pt_base * vp, int fd, int time_secs, int verbose) { struct sg_pt_linux_scsi * ptp = &vp->impl; if (NULL == sg_warnings_strm) sg_warnings_strm = stderr; + ptp->os_err = 0; if (ptp->in_err) { if (verbose) fprintf(sg_warnings_strm, "Replicated or unused set_scsi_pt... " @@ -257,7 +275,8 @@ int do_scsi_pt(struct sg_pt_base * vp, int fd, int time_secs, int verbose) #define SG_LIB_SUGGEST_MASK SUGGEST_MASK #define SG_LIB_DRIVER_SENSE DRIVER_SENSE -int get_scsi_pt_result_category(const struct sg_pt_base * vp) +int +get_scsi_pt_result_category(const struct sg_pt_base * vp) { const struct sg_pt_linux_scsi * ptp = &vp->impl; int dr_st = ptp->io_hdr.driver_status & SG_LIB_DRIVER_MASK; @@ -279,42 +298,48 @@ int get_scsi_pt_result_category(const struct sg_pt_base * vp) return SCSI_PT_RESULT_GOOD; } -int get_scsi_pt_resid(const struct sg_pt_base * vp) +int +get_scsi_pt_resid(const struct sg_pt_base * vp) { const struct sg_pt_linux_scsi * ptp = &vp->impl; return ptp->io_hdr.resid; } -int get_scsi_pt_status_response(const struct sg_pt_base * vp) +int +get_scsi_pt_status_response(const struct sg_pt_base * vp) { const struct sg_pt_linux_scsi * ptp = &vp->impl; return ptp->io_hdr.status; } -int get_scsi_pt_sense_len(const struct sg_pt_base * vp) +int +get_scsi_pt_sense_len(const struct sg_pt_base * vp) { const struct sg_pt_linux_scsi * ptp = &vp->impl; return ptp->io_hdr.sb_len_wr; } -int get_scsi_pt_duration_ms(const struct sg_pt_base * vp) +int +get_scsi_pt_duration_ms(const struct sg_pt_base * vp) { const struct sg_pt_linux_scsi * ptp = &vp->impl; return ptp->io_hdr.duration; } -int get_scsi_pt_transport_err(const struct sg_pt_base * vp) +int +get_scsi_pt_transport_err(const struct sg_pt_base * vp) { const struct sg_pt_linux_scsi * ptp = &vp->impl; return (ptp->io_hdr.host_status << 8) + ptp->io_hdr.driver_status; } -int get_scsi_pt_os_err(const struct sg_pt_base * vp) +int +get_scsi_pt_os_err(const struct sg_pt_base * vp) { const struct sg_pt_linux_scsi * ptp = &vp->impl; @@ -350,8 +375,9 @@ static const char * linux_driver_suggests[] = { (int)(sizeof(linux_driver_suggests) / sizeof(linux_driver_suggests[0])) -char * get_scsi_pt_transport_err_str(const struct sg_pt_base * vp, - int max_b_len, char * b) +char * +get_scsi_pt_transport_err_str(const struct sg_pt_base * vp, int max_b_len, + char * b) { const struct sg_pt_linux_scsi * ptp = &vp->impl; int ds = ptp->io_hdr.driver_status; @@ -391,8 +417,8 @@ char * get_scsi_pt_transport_err_str(const struct sg_pt_base * vp, return b; } -char * get_scsi_pt_os_err_str(const struct sg_pt_base * vp, - int max_b_len, char * b) +char * +get_scsi_pt_os_err_str(const struct sg_pt_base * vp, int max_b_len, char * b) { const struct sg_pt_linux_scsi * ptp = &vp->impl; const char * cp; diff --git a/lib/sg_pt_osf1.c b/lib/sg_pt_osf1.c index 4718da06..2c0e5151 100644 --- a/lib/sg_pt_osf1.c +++ b/lib/sg_pt_osf1.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005-2008 Douglas Gilbert. + * Copyright (c) 2005-2009 Douglas Gilbert. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -87,9 +87,8 @@ struct sg_pt_base { /* Returns >= 0 if successful. If error in Unix returns negated errno. */ -int scsi_pt_open_device(const char * device_name, - int read_only, - int verbose) +int +scsi_pt_open_device(const char * device_name, int read_only, int verbose) { int oflags = 0 /* O_NONBLOCK*/ ; @@ -97,10 +96,11 @@ int scsi_pt_open_device(const char * device_name, return scsi_pt_open_flags(device_name, oflags, verbose); } -/* Similar to scsi_pt_open_device() but takes Unix style open flags OR-ed */ -/* together. The 'flags' argument is ignored in OSF-1. */ -/* Returns >= 0 if successful, otherwise returns negated errno. */ -int scsi_pt_open_flags(const char * device_name, int flags, int verbose) +/* Similar to scsi_pt_open_device() but takes Unix style open flags OR-ed + * together. The 'flags' argument is ignored in OSF-1. + * Returns >= 0 if successful, otherwise returns negated errno. */ +int +scsi_pt_open_flags(const char * device_name, int flags, int verbose) { struct osf1_dev_channel *fdchan; int fd, k; @@ -155,7 +155,8 @@ int scsi_pt_open_flags(const char * device_name, int flags, int verbose) } /* Returns 0 if successful. If error in Unix returns negated errno. */ -int scsi_pt_close_device(int device_fd) +int +scsi_pt_close_device(int device_fd) { struct osf1_dev_channel *fdchan; int i; @@ -185,7 +186,8 @@ int scsi_pt_close_device(int device_fd) return 0; } -struct sg_pt_base * construct_scsi_pt_obj() +struct sg_pt_base * +construct_scsi_pt_obj() { struct sg_pt_osf1_scsi * ptp; @@ -197,7 +199,8 @@ struct sg_pt_base * construct_scsi_pt_obj() return (struct sg_pt_base *)ptp; } -void destruct_scsi_pt_obj(struct sg_pt_base * vp) +void +destruct_scsi_pt_obj(struct sg_pt_base * vp) { struct sg_pt_osf1_scsi * ptp = &vp->impl; @@ -205,8 +208,9 @@ void destruct_scsi_pt_obj(struct sg_pt_base * vp) free(ptp); } -void set_scsi_pt_cdb(struct sg_pt_base * vp, const unsigned char * cdb, - int cdb_len) +void +set_scsi_pt_cdb(struct sg_pt_base * vp, const unsigned char * cdb, + int cdb_len) { struct sg_pt_osf1_scsi * ptp = &vp->impl; @@ -216,8 +220,9 @@ void set_scsi_pt_cdb(struct sg_pt_base * vp, const unsigned char * cdb, ptp->cdb_len = cdb_len; } -void set_scsi_pt_sense(struct sg_pt_base * vp, unsigned char * sense, - int max_sense_len) +void +set_scsi_pt_sense(struct sg_pt_base * vp, unsigned char * sense, + int max_sense_len) { struct sg_pt_osf1_scsi * ptp = &vp->impl; @@ -228,8 +233,10 @@ void set_scsi_pt_sense(struct sg_pt_base * vp, unsigned char * sense, ptp->sense_len = max_sense_len; } -void set_scsi_pt_data_in(struct sg_pt_base * vp, /* from device */ - unsigned char * dxferp, int dxfer_len) +/* from device */ +void +set_scsi_pt_data_in(struct sg_pt_base * vp, unsigned char * dxferp, + int dxfer_len) { struct sg_pt_osf1_scsi * ptp = &vp->impl; @@ -242,8 +249,10 @@ void set_scsi_pt_data_in(struct sg_pt_base * vp, /* from device */ } } -void set_scsi_pt_data_out(struct sg_pt_base * vp, /* to device */ - const unsigned char * dxferp, int dxfer_len) +/* to device */ +void +set_scsi_pt_data_out(struct sg_pt_base * vp, const unsigned char * dxferp, + int dxfer_len) { struct sg_pt_osf1_scsi * ptp = &vp->impl; @@ -256,32 +265,37 @@ void set_scsi_pt_data_out(struct sg_pt_base * vp, /* to device */ } } -void set_scsi_pt_packet_id(struct sg_pt_base * vp, int pack_id) +void +set_scsi_pt_packet_id(struct sg_pt_base * vp, int pack_id) { } -void set_scsi_pt_tag(struct sg_pt_base * vp, uint64_t tag) +void +set_scsi_pt_tag(struct sg_pt_base * vp, uint64_t tag) { struct sg_pt_osf1_scsi * ptp = &vp->impl; ++ptp->in_err; } -void set_scsi_pt_task_management(struct sg_pt_base * vp, int tmf_code) +void +set_scsi_pt_task_management(struct sg_pt_base * vp, int tmf_code) { struct sg_pt_osf1_scsi * ptp = &vp->impl; ++ptp->in_err; } -void set_scsi_pt_task_attr(struct sg_pt_base * vp, int attrib, int priority) +void +set_scsi_pt_task_attr(struct sg_pt_base * vp, int attrib, int priority) { struct sg_pt_osf1_scsi * ptp = &vp->impl; ++ptp->in_err; } -static int release_sim(struct sg_pt_base *vp, int device_fd, int verbose) { +static int +release_sim(struct sg_pt_base *vp, int device_fd, int verbose) { struct sg_pt_osf1_scsi * ptp = &vp->impl; struct osf1_dev_channel *fdchan = devicetable[device_fd]; UAGT_CAM_CCB uagt; @@ -312,7 +326,8 @@ static int release_sim(struct sg_pt_base *vp, int device_fd, int verbose) { return retval; } -int do_scsi_pt(struct sg_pt_base * vp, int device_fd, int time_secs, int verbose) +int +do_scsi_pt(struct sg_pt_base * vp, int device_fd, int time_secs, int verbose) { struct sg_pt_osf1_scsi * ptp = &vp->impl; struct osf1_dev_channel *fdchan; @@ -324,6 +339,7 @@ int do_scsi_pt(struct sg_pt_base * vp, int device_fd, int time_secs, int verbose if (NULL == sg_warnings_strm) sg_warnings_strm = stderr; + ptp->os_err = 0; if (ptp->in_err) { if (verbose) fprintf(sg_warnings_strm, "Replicated or unused set_scsi_pt...\n"); @@ -354,7 +370,6 @@ int do_scsi_pt(struct sg_pt_base * vp, int device_fd, int time_secs, int verbose return SCSI_PT_DO_BAD_PARAMS; } - bzero(&uagt, sizeof(uagt)); bzero(&ccb, sizeof(ccb)); @@ -400,7 +415,8 @@ int do_scsi_pt(struct sg_pt_base * vp, int device_fd, int time_secs, int verbose return 0; } -int get_scsi_pt_result_category(const struct sg_pt_base * vp) +int +get_scsi_pt_result_category(const struct sg_pt_base * vp) { const struct sg_pt_osf1_scsi * ptp = &vp->impl; @@ -417,21 +433,24 @@ int get_scsi_pt_result_category(const struct sg_pt_base * vp) return SCSI_PT_RESULT_GOOD; } -int get_scsi_pt_resid(const struct sg_pt_base * vp) +int +get_scsi_pt_resid(const struct sg_pt_base * vp) { const struct sg_pt_osf1_scsi * ptp = &vp->impl; return ptp->resid; } -int get_scsi_pt_status_response(const struct sg_pt_base * vp) +int +get_scsi_pt_status_response(const struct sg_pt_base * vp) { const struct sg_pt_osf1_scsi * ptp = &vp->impl; return ptp->scsi_status; } -int get_scsi_pt_sense_len(const struct sg_pt_base * vp) +int +get_scsi_pt_sense_len(const struct sg_pt_base * vp) { const struct sg_pt_osf1_scsi * ptp = &vp->impl; int len; @@ -440,29 +459,33 @@ int get_scsi_pt_sense_len(const struct sg_pt_base * vp) return (len > 0) ? len : 0; } -int get_scsi_pt_duration_ms(const struct sg_pt_base * vp) +int +get_scsi_pt_duration_ms(const struct sg_pt_base * vp) { // const struct sg_pt_osf1_scsi * ptp = &vp->impl; return -1; } -int get_scsi_pt_transport_err(const struct sg_pt_base * vp) +int +get_scsi_pt_transport_err(const struct sg_pt_base * vp) { const struct sg_pt_osf1_scsi * ptp = &vp->impl; return ptp->transport_err; } -int get_scsi_pt_os_err(const struct sg_pt_base * vp) +int +get_scsi_pt_os_err(const struct sg_pt_base * vp) { const struct sg_pt_osf1_scsi * ptp = &vp->impl; return ptp->os_err; } - -char * get_scsi_pt_transport_err_str(const struct sg_pt_base * vp, int max_b_len, char * b) +char * +get_scsi_pt_transport_err_str(const struct sg_pt_base * vp, int max_b_len, + char * b) { const struct sg_pt_osf1_scsi * ptp = &vp->impl; @@ -476,8 +499,8 @@ char * get_scsi_pt_transport_err_str(const struct sg_pt_base * vp, int max_b_len return b; } -char * get_scsi_pt_os_err_str(const struct sg_pt_base * vp, - int max_b_len, char * b) +char * +get_scsi_pt_os_err_str(const struct sg_pt_base * vp, int max_b_len, char * b) { const struct sg_pt_osf1_scsi * ptp = &vp->impl; const char * cp; diff --git a/lib/sg_pt_solaris.c b/lib/sg_pt_solaris.c index 549cb91d..b3cc2abd 100644 --- a/lib/sg_pt_solaris.c +++ b/lib/sg_pt_solaris.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007-2008 Douglas Gilbert. + * Copyright (c) 2007-2009 Douglas Gilbert. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,7 +27,7 @@ * */ -/* version 1.01 20081129 */ +/* sg_pt_solaris version 1.02 20090203 */ #include <stdio.h> #include <stdlib.h> @@ -63,9 +63,8 @@ struct sg_pt_base { /* Returns >= 0 if successful. If error in Unix returns negated errno. */ -int scsi_pt_open_device(const char * device_name, - int read_only, - int verbose) +int +scsi_pt_open_device(const char * device_name, int read_only, int verbose) { int oflags = 0 /* O_NONBLOCK*/ ; @@ -73,10 +72,11 @@ int scsi_pt_open_device(const char * device_name, return scsi_pt_open_flags(device_name, oflags, verbose); } -/* Similar to scsi_pt_open_device() but takes Unix style open flags OR-ed */ -/* together. The 'flags' argument is ignored in Solaris. */ -/* Returns >= 0 if successful, otherwise returns negated errno. */ -int scsi_pt_open_flags(const char * device_name, int flags_arg, int verbose) +/* Similar to scsi_pt_open_device() but takes Unix style open flags OR-ed + * together. The 'flags' argument is ignored in Solaris. + * Returns >= 0 if successful, otherwise returns negated errno. */ +int +scsi_pt_open_flags(const char * device_name, int flags_arg, int verbose) { int oflags = O_NONBLOCK | O_RDWR; int fd; @@ -92,7 +92,8 @@ int scsi_pt_open_flags(const char * device_name, int flags_arg, int verbose) } /* Returns 0 if successful. If error in Unix returns negated errno. */ -int scsi_pt_close_device(int device_fd) +int +scsi_pt_close_device(int device_fd) { int res; @@ -102,8 +103,8 @@ int scsi_pt_close_device(int device_fd) return res; } - -struct sg_pt_base * construct_scsi_pt_obj() +struct sg_pt_base * +construct_scsi_pt_obj() { struct sg_pt_solaris_scsi * ptp; @@ -118,7 +119,8 @@ struct sg_pt_base * construct_scsi_pt_obj() return (struct sg_pt_base *)ptp; } -void destruct_scsi_pt_obj(struct sg_pt_base * vp) +void +destruct_scsi_pt_obj(struct sg_pt_base * vp) { struct sg_pt_solaris_scsi * ptp = &vp->impl; @@ -126,8 +128,9 @@ void destruct_scsi_pt_obj(struct sg_pt_base * vp) free(ptp); } -void set_scsi_pt_cdb(struct sg_pt_base * vp, const unsigned char * cdb, - int cdb_len) +void +set_scsi_pt_cdb(struct sg_pt_base * vp, const unsigned char * cdb, + int cdb_len) { struct sg_pt_solaris_scsi * ptp = &vp->impl; @@ -137,8 +140,9 @@ void set_scsi_pt_cdb(struct sg_pt_base * vp, const unsigned char * cdb, ptp->uscsi.uscsi_cdblen = cdb_len; } -void set_scsi_pt_sense(struct sg_pt_base * vp, unsigned char * sense, - int max_sense_len) +void +set_scsi_pt_sense(struct sg_pt_base * vp, unsigned char * sense, + int max_sense_len) { struct sg_pt_solaris_scsi * ptp = &vp->impl; @@ -150,8 +154,10 @@ void set_scsi_pt_sense(struct sg_pt_base * vp, unsigned char * sense, ptp->max_sense_len = max_sense_len; } -void set_scsi_pt_data_in(struct sg_pt_base * vp, /* from device */ - unsigned char * dxferp, int dxfer_len) +/* from device */ +void +set_scsi_pt_data_in(struct sg_pt_base * vp, unsigned char * dxferp, + int dxfer_len) { struct sg_pt_solaris_scsi * ptp = &vp->impl; @@ -164,8 +170,10 @@ void set_scsi_pt_data_in(struct sg_pt_base * vp, /* from device */ } } -void set_scsi_pt_data_out(struct sg_pt_base * vp, /* to device */ - const unsigned char * dxferp, int dxfer_len) +/* to device */ +void +set_scsi_pt_data_out(struct sg_pt_base * vp, const unsigned char * dxferp, + int dxfer_len) { struct sg_pt_solaris_scsi * ptp = &vp->impl; @@ -178,7 +186,8 @@ void set_scsi_pt_data_out(struct sg_pt_base * vp, /* to device */ } } -void set_scsi_pt_packet_id(struct sg_pt_base * vp, int pack_id) +void +set_scsi_pt_packet_id(struct sg_pt_base * vp, int pack_id) { // struct sg_pt_solaris_scsi * ptp = &vp->impl; @@ -186,7 +195,8 @@ void set_scsi_pt_packet_id(struct sg_pt_base * vp, int pack_id) pack_id = pack_id; /* ignore and suppress warning */ } -void set_scsi_pt_tag(struct sg_pt_base * vp, uint64_t tag) +void +set_scsi_pt_tag(struct sg_pt_base * vp, uint64_t tag) { // struct sg_pt_solaris_scsi * ptp = &vp->impl; @@ -195,7 +205,8 @@ void set_scsi_pt_tag(struct sg_pt_base * vp, uint64_t tag) } /* Note that task management function codes are transport specific */ -void set_scsi_pt_task_management(struct sg_pt_base * vp, int tmf_code) +void +set_scsi_pt_task_management(struct sg_pt_base * vp, int tmf_code) { struct sg_pt_solaris_scsi * ptp = &vp->impl; @@ -203,8 +214,8 @@ void set_scsi_pt_task_management(struct sg_pt_base * vp, int tmf_code) tmf_code = tmf_code; /* dummy to silence compiler */ } -void set_scsi_pt_task_attr(struct sg_pt_base * vp, int attribute, - int priority) +void +set_scsi_pt_task_attr(struct sg_pt_base * vp, int attribute, int priority) { struct sg_pt_solaris_scsi * ptp = &vp->impl; @@ -213,10 +224,15 @@ void set_scsi_pt_task_attr(struct sg_pt_base * vp, int attribute, priority = priority; /* dummy to silence compiler */ } -int do_scsi_pt(struct sg_pt_base * vp, int fd, int time_secs, int verbose) +/* Executes SCSI command (or at least forwards it to lower layers). + * Clears os_err field prior to active call (whose result may set it + * again). */ +int +do_scsi_pt(struct sg_pt_base * vp, int fd, int time_secs, int verbose) { struct sg_pt_solaris_scsi * ptp = &vp->impl; + ptp->os_err = 0; if (ptp->in_err) { if (verbose) fprintf(stderr, "Replicated or unused set_scsi_pt... " @@ -245,7 +261,8 @@ int do_scsi_pt(struct sg_pt_base * vp, int fd, int time_secs, int verbose) return 0; } -int get_scsi_pt_result_category(const struct sg_pt_base * vp) +int +get_scsi_pt_result_category(const struct sg_pt_base * vp) { const struct sg_pt_solaris_scsi * ptp = &vp->impl; int scsi_st = ptp->uscsi.uscsi_status; @@ -261,21 +278,24 @@ int get_scsi_pt_result_category(const struct sg_pt_base * vp) return SCSI_PT_RESULT_GOOD; } -int get_scsi_pt_resid(const struct sg_pt_base * vp) +int +get_scsi_pt_resid(const struct sg_pt_base * vp) { const struct sg_pt_solaris_scsi * ptp = &vp->impl; return ptp->uscsi.uscsi_resid; } -int get_scsi_pt_status_response(const struct sg_pt_base * vp) +int +get_scsi_pt_status_response(const struct sg_pt_base * vp) { const struct sg_pt_solaris_scsi * ptp = &vp->impl; return ptp->uscsi.uscsi_status; } -int get_scsi_pt_sense_len(const struct sg_pt_base * vp) +int +get_scsi_pt_sense_len(const struct sg_pt_base * vp) { const struct sg_pt_solaris_scsi * ptp = &vp->impl; int res; @@ -287,7 +307,8 @@ int get_scsi_pt_sense_len(const struct sg_pt_base * vp) return 0; } -int get_scsi_pt_duration_ms(const struct sg_pt_base * vp) +int +get_scsi_pt_duration_ms(const struct sg_pt_base * vp) { // const struct sg_pt_solaris_scsi * ptp = &vp->impl; @@ -295,7 +316,8 @@ int get_scsi_pt_duration_ms(const struct sg_pt_base * vp) return -1; /* not available */ } -int get_scsi_pt_transport_err(const struct sg_pt_base * vp) +int +get_scsi_pt_transport_err(const struct sg_pt_base * vp) { // const struct sg_pt_solaris_scsi * ptp = &vp->impl; @@ -303,15 +325,17 @@ int get_scsi_pt_transport_err(const struct sg_pt_base * vp) return 0; } -int get_scsi_pt_os_err(const struct sg_pt_base * vp) +int +get_scsi_pt_os_err(const struct sg_pt_base * vp) { const struct sg_pt_solaris_scsi * ptp = &vp->impl; return ptp->os_err; } -char * get_scsi_pt_transport_err_str(const struct sg_pt_base * vp, - int max_b_len, char * b) +char * +get_scsi_pt_transport_err_str(const struct sg_pt_base * vp, int max_b_len, + char * b) { // const struct sg_pt_solaris_scsi * ptp = &vp->impl; @@ -322,8 +346,8 @@ char * get_scsi_pt_transport_err_str(const struct sg_pt_base * vp, return b; } -char * get_scsi_pt_os_err_str(const struct sg_pt_base * vp, - int max_b_len, char * b) +char * +get_scsi_pt_os_err_str(const struct sg_pt_base * vp, int max_b_len, char * b) { const struct sg_pt_solaris_scsi * ptp = &vp->impl; const char * cp; diff --git a/lib/sg_pt_win32.c b/lib/sg_pt_win32.c index e5fdb518..a04dd533 100644 --- a/lib/sg_pt_win32.c +++ b/lib/sg_pt_win32.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2008 Douglas Gilbert. + * Copyright (c) 2006-2009 Douglas Gilbert. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,7 +27,7 @@ * */ -/* version 1.06 20081215 */ +/* sg_pt_win32 version 1.07 20090203 */ #include <stdio.h> #include <stdlib.h> @@ -90,11 +90,12 @@ struct sg_pt_base { /* Returns >= 0 if successful. If error in Unix returns negated errno. */ -int scsi_pt_open_device(const char * device_name, int read_only, int verbose) +int +scsi_pt_open_device(const char * device_name, int read_only, int verbose) { int oflags = 0 /* O_NONBLOCK*/ ; - oflags |= (read_only ? 0 : 0); /* was ... ? O_RDONLY : O_RDWR) */ + oflags |= (read_only ? 0 : 0); /* was ... ? O_RDONLY : O_RDWR) */ return scsi_pt_open_flags(device_name, oflags, verbose); } @@ -110,9 +111,10 @@ int scsi_pt_open_device(const char * device_name, int read_only, int verbose) * is a lot of keystrokes, "PD" is accepted and converted to the longer * form. */ -int scsi_pt_open_flags(const char * device_name, - int flags __attribute__ ((unused)), - int verbose) +int +scsi_pt_open_flags(const char * device_name, + int flags __attribute__ ((unused)), + int verbose) { int len, k, adapter_num, bus, target, lun, off, got_scsi_name; int index, num, got_pd_name, pd_num; @@ -200,7 +202,8 @@ int scsi_pt_open_flags(const char * device_name, /* Returns 0 if successful. If error in Unix returns negated errno. */ -int scsi_pt_close_device(int device_fd) +int +scsi_pt_close_device(int device_fd) { struct sg_pt_handle * shp; int index; @@ -219,7 +222,8 @@ int scsi_pt_close_device(int device_fd) return 0; } -struct sg_pt_base * construct_scsi_pt_obj() +struct sg_pt_base * +construct_scsi_pt_obj() { struct sg_pt_win32_scsi * psp; @@ -235,7 +239,8 @@ struct sg_pt_base * construct_scsi_pt_obj() return (struct sg_pt_base *)psp; } -void destruct_scsi_pt_obj(struct sg_pt_base * vp) +void +destruct_scsi_pt_obj(struct sg_pt_base * vp) { struct sg_pt_win32_scsi * psp = &vp->impl; @@ -244,8 +249,9 @@ void destruct_scsi_pt_obj(struct sg_pt_base * vp) } } -void set_scsi_pt_cdb(struct sg_pt_base * vp, const unsigned char * cdb, - int cdb_len) +void +set_scsi_pt_cdb(struct sg_pt_base * vp, const unsigned char * cdb, + int cdb_len) { struct sg_pt_win32_scsi * psp = &vp->impl; @@ -259,8 +265,9 @@ void set_scsi_pt_cdb(struct sg_pt_base * vp, const unsigned char * cdb, psp->swb.spt.CdbLength = cdb_len; } -void set_scsi_pt_sense(struct sg_pt_base * vp, unsigned char * sense, - int sense_len) +void +set_scsi_pt_sense(struct sg_pt_base * vp, unsigned char * sense, + int sense_len) { struct sg_pt_win32_scsi * psp = &vp->impl; @@ -271,8 +278,10 @@ void set_scsi_pt_sense(struct sg_pt_base * vp, unsigned char * sense, psp->sense_len = sense_len; } -void set_scsi_pt_data_in(struct sg_pt_base * vp, /* from device */ - unsigned char * dxferp, int dxfer_len) +/* from device */ +void +set_scsi_pt_data_in(struct sg_pt_base * vp, unsigned char * dxferp, + int dxfer_len) { struct sg_pt_win32_scsi * psp = &vp->impl; @@ -285,8 +294,10 @@ void set_scsi_pt_data_in(struct sg_pt_base * vp, /* from device */ } } -void set_scsi_pt_data_out(struct sg_pt_base * vp, /* to device */ - const unsigned char * dxferp, int dxfer_len) +/* to device */ +void +set_scsi_pt_data_out(struct sg_pt_base * vp, const unsigned char * dxferp, + int dxfer_len) { struct sg_pt_win32_scsi * psp = &vp->impl; @@ -299,38 +310,44 @@ void set_scsi_pt_data_out(struct sg_pt_base * vp, /* to device */ } } -void set_scsi_pt_packet_id(struct sg_pt_base * vp __attribute__ ((unused)), - int pack_id __attribute__ ((unused))) +void +set_scsi_pt_packet_id(struct sg_pt_base * vp __attribute__ ((unused)), + int pack_id __attribute__ ((unused))) { } -void set_scsi_pt_tag(struct sg_pt_base * vp, - uint64_t tag __attribute__ ((unused))) +void +set_scsi_pt_tag(struct sg_pt_base * vp, uint64_t tag __attribute__ ((unused))) { struct sg_pt_win32_scsi * psp = &vp->impl; ++psp->in_err; } -void set_scsi_pt_task_management(struct sg_pt_base * vp, - int tmf_code __attribute__ ((unused))) +void +set_scsi_pt_task_management(struct sg_pt_base * vp, + int tmf_code __attribute__ ((unused))) { struct sg_pt_win32_scsi * psp = &vp->impl; ++psp->in_err; } -void set_scsi_pt_task_attr(struct sg_pt_base * vp, - int attrib __attribute__ ((unused)), - int priority __attribute__ ((unused))) +void +set_scsi_pt_task_attr(struct sg_pt_base * vp, + int attrib __attribute__ ((unused)), + int priority __attribute__ ((unused))) { struct sg_pt_win32_scsi * psp = &vp->impl; ++psp->in_err; } -int do_scsi_pt(struct sg_pt_base * vp, int device_fd, int time_secs, - int verbose) +/* Executes SCSI command (or at least forwards it to lower layers). + * Clears os_err field prior to active call (whose result may set it + * again). */ +int +do_scsi_pt(struct sg_pt_base * vp, int device_fd, int time_secs, int verbose) { int index = device_fd - WIN32_FDOFFSET; struct sg_pt_win32_scsi * psp = &vp->impl; @@ -340,6 +357,7 @@ int do_scsi_pt(struct sg_pt_base * vp, int device_fd, int time_secs, if (NULL == sg_warnings_strm) sg_warnings_strm = stderr; + psp->os_err = 0; if (psp->in_err) { if (verbose) fprintf(sg_warnings_strm, "Replicated or unused set_scsi_pt...\n"); @@ -452,7 +470,8 @@ int do_scsi_pt(struct sg_pt_base * vp, int device_fd, int time_secs, return 0; } -int get_scsi_pt_result_category(const struct sg_pt_base * vp) +int +get_scsi_pt_result_category(const struct sg_pt_base * vp) { const struct sg_pt_win32_scsi * psp = &vp->impl; @@ -469,21 +488,24 @@ int get_scsi_pt_result_category(const struct sg_pt_base * vp) return SCSI_PT_RESULT_GOOD; } -int get_scsi_pt_resid(const struct sg_pt_base * vp) +int +get_scsi_pt_resid(const struct sg_pt_base * vp) { const struct sg_pt_win32_scsi * psp = &vp->impl; return psp->resid; } -int get_scsi_pt_status_response(const struct sg_pt_base * vp) +int +get_scsi_pt_status_response(const struct sg_pt_base * vp) { const struct sg_pt_win32_scsi * psp = &vp->impl; return psp->scsi_status; } -int get_scsi_pt_sense_len(const struct sg_pt_base * vp) +int +get_scsi_pt_sense_len(const struct sg_pt_base * vp) { const struct sg_pt_win32_scsi * psp = &vp->impl; int len; @@ -492,21 +514,24 @@ int get_scsi_pt_sense_len(const struct sg_pt_base * vp) return (len > 0) ? len : 0; } -int get_scsi_pt_duration_ms(const struct sg_pt_base * vp __attribute__ ((unused))) +int +get_scsi_pt_duration_ms(const struct sg_pt_base * vp __attribute__ ((unused))) { // const struct sg_pt_freebsd_scsi * psp = &vp->impl; return -1; } -int get_scsi_pt_transport_err(const struct sg_pt_base * vp) +int +get_scsi_pt_transport_err(const struct sg_pt_base * vp) { const struct sg_pt_win32_scsi * psp = &vp->impl; return psp->transport_err; } -int get_scsi_pt_os_err(const struct sg_pt_base * vp) +int +get_scsi_pt_os_err(const struct sg_pt_base * vp) { const struct sg_pt_win32_scsi * psp = &vp->impl; @@ -514,8 +539,9 @@ int get_scsi_pt_os_err(const struct sg_pt_base * vp) } -char * get_scsi_pt_transport_err_str(const struct sg_pt_base * vp, - int max_b_len, char * b) +char * +get_scsi_pt_transport_err_str(const struct sg_pt_base * vp, int max_b_len, + char * b) { struct sg_pt_win32_scsi * psp = (struct sg_pt_win32_scsi *)&vp->impl; LPVOID lpMsgBuf; @@ -549,8 +575,8 @@ char * get_scsi_pt_transport_err_str(const struct sg_pt_base * vp, return b; } -char * get_scsi_pt_os_err_str(const struct sg_pt_base * vp, - int max_b_len, char * b) +char * +get_scsi_pt_os_err_str(const struct sg_pt_base * vp, int max_b_len, char * b) { const struct sg_pt_win32_scsi * psp = &vp->impl; const char * cp; |