Date: Mon, 29 Jun 2009 08:07:52 GMT From: Alexander Motin <mav@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 165368 for review Message-ID: <200906290807.n5T87qBh073615@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=165368 Change 165368 by mav@mav_mavbook on 2009/06/29 08:07:02 Expose ATA functions to user-level. Affected files ... .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_all.c#10 edit .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_all.h#10 edit .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#24 edit .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.h#2 edit Differences ... ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_all.c#10 (text+ko) ==== @@ -36,6 +36,12 @@ #include <sys/libkern.h> #include <sys/kernel.h> #include <sys/sysctl.h> +#else +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#endif #include <cam/cam.h> #include <cam/cam_ccb.h> @@ -45,7 +51,7 @@ #include <cam/ata/ata_all.h> #include <sys/sbuf.h> -static int +int ata_version(int ver) { int bit; @@ -171,4 +177,47 @@ ataio->cmd.sector_count_exp = val >> 32; } -#endif /* _KERNEL */ +void +ata_bswap(int8_t *buf, int len) +{ + u_int16_t *ptr = (u_int16_t*)(buf + len); + + while (--ptr >= (u_int16_t*)buf) + *ptr = ntohs(*ptr); +} + +void +ata_btrim(int8_t *buf, int len) +{ + int8_t *ptr; + + for (ptr = buf; ptr < buf+len; ++ptr) + if (!*ptr || *ptr == '_') + *ptr = ' '; + for (ptr = buf + len - 1; ptr >= buf && *ptr == ' '; --ptr) + *ptr = 0; +} + +void +ata_bpack(int8_t *src, int8_t *dst, int len) +{ + int i, j, blank; + + for (i = j = blank = 0 ; i < len; i++) { + if (blank && src[i] == ' ') continue; + if (blank && src[i] != ' ') { + dst[j++] = src[i]; + blank = 0; + continue; + } + if (src[i] == ' ') { + blank = 1; + if (i == 0) + continue; + } + dst[j++] = src[i]; + } + while (j < len) + dst[j++] = 0x00; +} + ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_all.h#10 (text+ko) ==== @@ -78,6 +78,7 @@ u_int8_t sector_count_exp; }; +int ata_version(int ver); void ata_print_ident(struct ata_params *ident_data); void ata_36bit_cmd(struct ccb_ataio *ataio, uint8_t cmd, uint8_t features, @@ -90,4 +91,8 @@ void ata_pm_read_cmd(struct ccb_ataio *ataio, int reg, int port); void ata_pm_write_cmd(struct ccb_ataio *ataio, int reg, int port, uint64_t val); +void ata_bswap(int8_t *buf, int len); +void ata_btrim(int8_t *buf, int len); +void ata_bpack(int8_t *src, int8_t *dst, int len); + #endif ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#24 (text+ko) ==== @@ -206,50 +206,6 @@ } static void -bswap(int8_t *buf, int len) -{ - u_int16_t *ptr = (u_int16_t*)(buf + len); - - while (--ptr >= (u_int16_t*)buf) - *ptr = ntohs(*ptr); -} - -static void -btrim(int8_t *buf, int len) -{ - int8_t *ptr; - - for (ptr = buf; ptr < buf+len; ++ptr) - if (!*ptr || *ptr == '_') - *ptr = ' '; - for (ptr = buf + len - 1; ptr >= buf && *ptr == ' '; --ptr) - *ptr = 0; -} - -static void -bpack(int8_t *src, int8_t *dst, int len) -{ - int i, j, blank; - - for (i = j = blank = 0 ; i < len; i++) { - if (blank && src[i] == ' ') continue; - if (blank && src[i] != ' ') { - dst[j++] = src[i]; - blank = 0; - continue; - } - if (src[i] == ' ') { - blank = 1; - if (i == 0) - continue; - } - dst[j++] = src[i]; - } - while (j < len) - dst[j++] = 0x00; -} - -static void probe_periph_init() { } @@ -706,16 +662,16 @@ strncmp(ident_buf->model, "NEC", 3) && strncmp(ident_buf->model, "Pioneer", 7) && strncmp(ident_buf->model, "SHARP", 5)) { - bswap(ident_buf->model, sizeof(ident_buf->model)); - bswap(ident_buf->revision, sizeof(ident_buf->revision)); - bswap(ident_buf->serial, sizeof(ident_buf->serial)); + ata_bswap(ident_buf->model, sizeof(ident_buf->model)); + ata_bswap(ident_buf->revision, sizeof(ident_buf->revision)); + ata_bswap(ident_buf->serial, sizeof(ident_buf->serial)); } - btrim(ident_buf->model, sizeof(ident_buf->model)); - bpack(ident_buf->model, ident_buf->model, sizeof(ident_buf->model)); - btrim(ident_buf->revision, sizeof(ident_buf->revision)); - bpack(ident_buf->revision, ident_buf->revision, sizeof(ident_buf->revision)); - btrim(ident_buf->serial, sizeof(ident_buf->serial)); - bpack(ident_buf->serial, ident_buf->serial, sizeof(ident_buf->serial)); + ata_btrim(ident_buf->model, sizeof(ident_buf->model)); + ata_bpack(ident_buf->model, ident_buf->model, sizeof(ident_buf->model)); + ata_btrim(ident_buf->revision, sizeof(ident_buf->revision)); + ata_bpack(ident_buf->revision, ident_buf->revision, sizeof(ident_buf->revision)); + ata_btrim(ident_buf->serial, sizeof(ident_buf->serial)); + ata_bpack(ident_buf->serial, ident_buf->serial, sizeof(ident_buf->serial)); if ((periph->path->device->flags & CAM_DEV_UNCONFIGURED) == 0) { /* Check that it is the same device. */ ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.h#2 (text+ko) ==== @@ -1,0 +1,1 @@ +
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906290807.n5T87qBh073615>