Annotation of sys/dev/microcode/uyap/build.c, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: build.c,v 1.3 2005/05/17 18:48:52 jason Exp $ */
! 2:
! 3: /*
! 4: * Copyright (c) 2004 Theo de Raadt <deraadt@openbsd.org>
! 5: *
! 6: * Permission to use, copy, modify, and distribute this software for any
! 7: * purpose with or without fee is hereby granted, provided that the above
! 8: * copyright notice and this permission notice appear in all copies.
! 9: *
! 10: * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
! 11: * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
! 12: * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
! 13: * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
! 14: * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
! 15: * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
! 16: * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
! 17: */
! 18: #include <sys/types.h>
! 19: #include <sys/uio.h>
! 20: #include <fcntl.h>
! 21: #include <sys/param.h>
! 22:
! 23: #include <dev/usb/ezload.h>
! 24: #include "uyap_firmware.h"
! 25: #define FILENAME "uyap"
! 26:
! 27: int
! 28: main(int argc, char *argv[])
! 29: {
! 30: const struct ezdata *ptr;
! 31: u_int16_t address;
! 32: int fd;
! 33:
! 34: printf("creating %s length %d\n", FILENAME, sizeof uyap_firmware);
! 35: fd = open(FILENAME, O_WRONLY|O_CREAT|O_TRUNC, 0644);
! 36: if (fd == -1)
! 37: err(1, "%s", FILENAME);
! 38:
! 39: for (ptr = uyap_firmware; ; ptr++) {
! 40: struct iovec iov[3];
! 41: u_int8_t length;
! 42: ssize_t tlen, rlen;
! 43:
! 44: length = ptr->length;
! 45: iov[0].iov_base = &length;
! 46: iov[0].iov_len = 1;
! 47:
! 48: address = htole16(ptr->address);
! 49: iov[1].iov_base = &address;
! 50: iov[1].iov_len = 2;
! 51:
! 52: iov[2].iov_base = ptr->data;
! 53: iov[2].iov_len = ptr->length;
! 54:
! 55: tlen = iov[0].iov_len + iov[1].iov_len + iov[2].iov_len;
! 56:
! 57: rlen = writev(fd, iov, 3);
! 58: if (rlen == -1)
! 59: err(1, "%s", FILENAME);
! 60: if (rlen != tlen)
! 61: err(1, "%s: short write", FILENAME);
! 62:
! 63: if (ptr->length == 0)
! 64: break;
! 65: }
! 66:
! 67: return 0;
! 68: }
CVSweb