[BACK]Return to dev_armish.c CVS log [TXT][DIR] Up to [local] / sys / arch / armish / stand / boot

Annotation of sys/arch/armish/stand/boot/dev_armish.c, Revision 1.1.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