Annotation of embedaddon/ntp/kernel/chuinit.c, revision 1.1.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>