Annotation of embedaddon/ntp/kernel/chuinit.c, revision 1.1
1.1 ! misho 1: /*
! 2: ** dynamically loadable chu driver
! 3: **
! 4: ** william robertson <rob@agate.berkeley.edu>
! 5: */
! 6:
! 7: #include <sys/types.h>
! 8: #include <sys/conf.h>
! 9: #include <sys/errno.h>
! 10: #include <sys/stream.h>
! 11: #include <sys/syslog.h>
! 12:
! 13: #include <sun/openprom.h>
! 14: #include <sun/vddrv.h>
! 15:
! 16: extern int findmod(); /* os/str_io.c */
! 17:
! 18: extern struct streamtab chuinfo;
! 19:
! 20: struct vdldrv vd = {
! 21: VDMAGIC_USER,
! 22: "chu"
! 23: };
! 24:
! 25:
! 26: int
! 27: xxxinit(function_code, vdp, vdi, vds)
! 28: unsigned int function_code;
! 29: struct vddrv *vdp;
! 30: addr_t vdi;
! 31: struct vdstat *vds;
! 32: {
! 33: register int i = 0;
! 34: register int j;
! 35:
! 36: switch (function_code) {
! 37: case VDLOAD:
! 38:
! 39: if (findmod("chu") >= 0) {
! 40: log(LOG_ERR, "chu stream module already loaded\n");
! 41: return (EADDRINUSE);
! 42: }
! 43:
! 44: i = findmod("\0");
! 45:
! 46: if (i == -1 || fmodsw[i].f_name[0] != '\0')
! 47: return(-1);
! 48:
! 49: for (j = 0; vd.Drv_name[j] != '\0'; j++) /* XXX check bounds */
! 50: fmodsw[i].f_name[j] = vd.Drv_name[j];
! 51:
! 52: fmodsw[i].f_name[j] = '\0';
! 53: fmodsw[i].f_str = &chuinfo;
! 54:
! 55: vdp->vdd_vdtab = (struct vdlinkage *) &vd;
! 56:
! 57: return(0);
! 58:
! 59: case VDUNLOAD:
! 60: if ((i = findmod(vd.Drv_name)) == -1)
! 61: return(-1);
! 62:
! 63: fmodsw[i].f_name[0] = '\0';
! 64: fmodsw[i].f_str = 0;
! 65:
! 66: return(0);
! 67:
! 68: case VDSTAT:
! 69: return(0);
! 70:
! 71: default:
! 72: return(EIO);
! 73: }
! 74: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>