Annotation of sys/arch/armish/stand/boot/dev_armish.c, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: dev_armish.c,v 1.1 2006/07/29 15:01:49 kettenis Exp $ */
! 2:
! 3: /*
! 4: * Copyright (c) 2006 Mark Kettenis
! 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:
! 19: #include <sys/param.h>
! 20: #include <dev/cons.h>
! 21:
! 22: #include "libsa.h"
! 23:
! 24: const char cdevs[][4] = {
! 25: "cn", "", "", "", "", "", "", "",
! 26: "", "", "", "", "com"
! 27: };
! 28: const int ncdevs = NENTS(cdevs);
! 29:
! 30: void
! 31: devboot(dev_t dev, char *p)
! 32: {
! 33: strlcpy(p, "wd0a", 5);
! 34: }
! 35:
! 36: int
! 37: cnspeed(dev_t dev, int sp)
! 38: {
! 39: return CONSPEED;
! 40: }
! 41:
! 42: int pch_pos;
! 43:
! 44: void
! 45: putchar(c)
! 46: int c;
! 47: {
! 48: switch(c) {
! 49: case '\177': /* DEL erases */
! 50: cnputc('\b');
! 51: cnputc(' ');
! 52: case '\b':
! 53: cnputc('\b');
! 54: if (pch_pos)
! 55: pch_pos--;
! 56: break;
! 57: case '\t':
! 58: do
! 59: cnputc(' ');
! 60: while(++pch_pos % 8);
! 61: break;
! 62: case '\n':
! 63: case '\r':
! 64: cnputc(c);
! 65: pch_pos=0;
! 66: break;
! 67: default:
! 68: cnputc(c);
! 69: pch_pos++;
! 70: break;
! 71: }
! 72: }
! 73:
! 74: int
! 75: getchar()
! 76: {
! 77: int c = cngetc();
! 78:
! 79: if (c == '\r')
! 80: c = '\n';
! 81:
! 82: if ((c < ' ' && c != '\n') || c == '\177')
! 83: return(c);
! 84:
! 85: putchar(c);
! 86:
! 87: return(c);
! 88: }
! 89:
! 90: char ttyname_buf[8];
! 91:
! 92: char *
! 93: ttyname(int fd)
! 94: {
! 95: snprintf(ttyname_buf, sizeof ttyname_buf, "%s%d",
! 96: cdevs[major(cn_tab->cn_dev)], minor(cn_tab->cn_dev));
! 97:
! 98: return ttyname_buf;
! 99: }
! 100:
! 101: dev_t
! 102: ttydev(char *name)
! 103: {
! 104: int i, unit = -1;
! 105: char *no = name + strlen(name) - 1;
! 106:
! 107: while (no >= name && *no >= '0' && *no <= '9')
! 108: unit = (unit < 0 ? 0 : (unit * 10)) + *no-- - '0';
! 109: if (no < name || unit < 0)
! 110: return NODEV;
! 111: for (i = 0; i < ncdevs; i++)
! 112: if (strncmp(name, cdevs[i], no - name + 1) == 0)
! 113: return (makedev(i, unit));
! 114: return NODEV;
! 115: }
CVSweb