Changeset View
Changeset View
Standalone View
Standalone View
sys/cam/cam_xpt.c
Show First 20 Lines • Show All 3,691 Lines • ▼ Show 20 Lines | else | ||||
return (-1); | return (-1); | ||||
} | } | ||||
return (retval); | return (retval); | ||||
} | } | ||||
void | void | ||||
xpt_print_path(struct cam_path *path) | xpt_print_path(struct cam_path *path) | ||||
{ | { | ||||
struct sbuf sb; | |||||
char buffer[64]; | |||||
if (path == NULL) | sbuf_new(&sb, buffer, 64, SBUF_FIXEDLEN); | ||||
printf("(nopath): "); | xpt_path_sbuf(path, &sb); | ||||
else { | sbuf_finish(&sb); | ||||
if (path->periph != NULL) | printf("%s", sbuf_data(&sb)); | ||||
printf("(%s%d:", path->periph->periph_name, | sbuf_delete(&sb); | ||||
path->periph->unit_number); | |||||
else | |||||
printf("(noperiph:"); | |||||
if (path->bus != NULL) | |||||
printf("%s%d:%d:", path->bus->sim->sim_name, | |||||
path->bus->sim->unit_number, | |||||
path->bus->sim->bus_id); | |||||
else | |||||
printf("nobus:"); | |||||
if (path->target != NULL) | |||||
printf("%d:", path->target->target_id); | |||||
else | |||||
printf("X:"); | |||||
if (path->device != NULL) | |||||
printf("%jx): ", (uintmax_t)path->device->lun_id); | |||||
else | |||||
printf("X): "); | |||||
} | } | ||||
} | |||||
void | void | ||||
xpt_print_device(struct cam_ed *device) | xpt_print_device(struct cam_ed *device) | ||||
{ | { | ||||
if (device == NULL) | if (device == NULL) | ||||
printf("(nopath): "); | printf("(nopath): "); | ||||
else { | else { | ||||
printf("(noperiph:%s%d:%d:%d:%jx): ", device->sim->sim_name, | printf("(noperiph:%s%d:%d:%d:%jx): ", device->sim->sim_name, | ||||
device->sim->unit_number, | device->sim->unit_number, | ||||
device->sim->bus_id, | device->sim->bus_id, | ||||
device->target->target_id, | device->target->target_id, | ||||
(uintmax_t)device->lun_id); | (uintmax_t)device->lun_id); | ||||
} | } | ||||
} | } | ||||
void | void | ||||
xpt_print(struct cam_path *path, const char *fmt, ...) | xpt_print(struct cam_path *path, const char *fmt, ...) | ||||
{ | { | ||||
va_list ap; | va_list ap; | ||||
xpt_print_path(path); | struct sbuf sb; | ||||
char buffer[128]; | |||||
sbuf_new(&sb, buffer, 128, SBUF_FIXEDLEN); | |||||
xpt_path_sbuf(path, &sb); | |||||
va_start(ap, fmt); | va_start(ap, fmt); | ||||
vprintf(fmt, ap); | sbuf_vprintf(&sb, fmt, ap); | ||||
va_end(ap); | va_end(ap); | ||||
sbuf_finish(&sb); | |||||
printf("%s", sbuf_data(&sb)); | |||||
sbuf_delete(&sb); | |||||
} | } | ||||
int | int | ||||
xpt_path_string(struct cam_path *path, char *str, size_t str_len) | xpt_path_string(struct cam_path *path, char *str, size_t str_len) | ||||
{ | { | ||||
struct sbuf sb; | struct sbuf sb; | ||||
int len; | |||||
sbuf_new(&sb, str, str_len, 0); | sbuf_new(&sb, str, str_len, 0); | ||||
len = xpt_path_sbuf(path, &sb); | |||||
sbuf_finish(&sb); | |||||
return (len); | |||||
} | |||||
int | |||||
xpt_path_sbuf(struct cam_path *path, struct sbuf *sb) | |||||
{ | |||||
if (path == NULL) | if (path == NULL) | ||||
sbuf_printf(&sb, "(nopath): "); | sbuf_printf(sb, "(nopath): "); | ||||
else { | else { | ||||
if (path->periph != NULL) | if (path->periph != NULL) | ||||
sbuf_printf(&sb, "(%s%d:", path->periph->periph_name, | sbuf_printf(sb, "(%s%d:", path->periph->periph_name, | ||||
path->periph->unit_number); | path->periph->unit_number); | ||||
else | else | ||||
sbuf_printf(&sb, "(noperiph:"); | sbuf_printf(sb, "(noperiph:"); | ||||
if (path->bus != NULL) | if (path->bus != NULL) | ||||
sbuf_printf(&sb, "%s%d:%d:", path->bus->sim->sim_name, | sbuf_printf(sb, "%s%d:%d:", path->bus->sim->sim_name, | ||||
path->bus->sim->unit_number, | path->bus->sim->unit_number, | ||||
path->bus->sim->bus_id); | path->bus->sim->bus_id); | ||||
else | else | ||||
sbuf_printf(&sb, "nobus:"); | sbuf_printf(sb, "nobus:"); | ||||
if (path->target != NULL) | if (path->target != NULL) | ||||
sbuf_printf(&sb, "%d:", path->target->target_id); | sbuf_printf(sb, "%d:", path->target->target_id); | ||||
else | else | ||||
sbuf_printf(&sb, "X:"); | sbuf_printf(sb, "X:"); | ||||
if (path->device != NULL) | if (path->device != NULL) | ||||
sbuf_printf(&sb, "%jx): ", | sbuf_printf(sb, "%jx): ", | ||||
(uintmax_t)path->device->lun_id); | (uintmax_t)path->device->lun_id); | ||||
else | else | ||||
sbuf_printf(&sb, "X): "); | sbuf_printf(sb, "X): "); | ||||
} | } | ||||
sbuf_finish(&sb); | |||||
return(sbuf_len(&sb)); | return(sbuf_len(sb)); | ||||
} | } | ||||
path_id_t | path_id_t | ||||
xpt_path_path_id(struct cam_path *path) | xpt_path_path_id(struct cam_path *path) | ||||
{ | { | ||||
return(path->bus->path_id); | return(path->bus->path_id); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,657 Lines • Show Last 20 Lines |