Changeset View
Changeset View
Standalone View
Standalone View
sys/cam/cam.c
| Show First 20 Lines • Show All 117 Lines • ▼ Show 20 Lines | |||||
| int cam_sort_io_queues = CAM_DEFAULT_SORT_IO_QUEUES; | int cam_sort_io_queues = CAM_DEFAULT_SORT_IO_QUEUES; | ||||
| SYSCTL_INT(_kern_cam, OID_AUTO, sort_io_queues, CTLFLAG_RWTUN, | SYSCTL_INT(_kern_cam, OID_AUTO, sort_io_queues, CTLFLAG_RWTUN, | ||||
| &cam_sort_io_queues, 0, "Sort IO queues to try and optimise disk access patterns"); | &cam_sort_io_queues, 0, "Sort IO queues to try and optimise disk access patterns"); | ||||
| #endif | #endif | ||||
| void | void | ||||
| cam_strvis(u_int8_t *dst, const u_int8_t *src, int srclen, int dstlen) | cam_strvis(u_int8_t *dst, const u_int8_t *src, int srclen, int dstlen) | ||||
| { | { | ||||
| cam_strvis_flag(dst, src, srclen, dstlen, | |||||
| CAM_STRVIS_FLAG_NONASCII_ESC); | |||||
| } | |||||
| /* Trim leading/trailing spaces, nulls. */ | void | ||||
| while (srclen > 0 && src[0] == ' ') | cam_strvis_flag(u_int8_t *dst, const u_int8_t *src, int srclen, int dstlen, | ||||
| src++, srclen--; | uint32_t flags) | ||||
| while (srclen > 0 | { | ||||
| && (src[srclen-1] == ' ' || src[srclen-1] == '\0')) | struct sbuf sb; | ||||
| srclen--; | |||||
| while (srclen > 0 && dstlen > 1) { | sbuf_new(&sb, dst, dstlen, SBUF_FIXEDLEN); | ||||
| u_int8_t *cur_pos = dst; | cam_strvis_sbuf(&sb, src, srclen, flags); | ||||
| sbuf_finish(&sb); | |||||
| if (*src < 0x20 || *src >= 0x80) { | |||||
| /* SCSI-II Specifies that these should never occur. */ | |||||
| /* non-printable character */ | |||||
| if (dstlen > 4) { | |||||
| *cur_pos++ = '\\'; | |||||
| *cur_pos++ = ((*src & 0300) >> 6) + '0'; | |||||
| *cur_pos++ = ((*src & 0070) >> 3) + '0'; | |||||
| *cur_pos++ = ((*src & 0007) >> 0) + '0'; | |||||
| } else { | |||||
| *cur_pos++ = '?'; | |||||
| } | |||||
| } else { | |||||
| /* normal character */ | |||||
| *cur_pos++ = *src; | |||||
| } | |||||
| src++; | |||||
| srclen--; | |||||
| dstlen -= cur_pos - dst; | |||||
| dst = cur_pos; | |||||
| } | |||||
| *dst = '\0'; | |||||
| } | } | ||||
| void | void | ||||
| cam_strvis_sbuf(struct sbuf *sb, const u_int8_t *src, int srclen, | cam_strvis_sbuf(struct sbuf *sb, const u_int8_t *src, int srclen, | ||||
| uint32_t flags) | uint32_t flags) | ||||
| { | { | ||||
| /* Trim leading/trailing spaces, nulls. */ | /* Trim leading/trailing spaces, nulls. */ | ||||
| ▲ Show 20 Lines • Show All 427 Lines • Show Last 20 Lines | |||||