83 struct streamtab sadinfo = {
84 &sad_rinit, &sad_winit, NULL, NULL
85 };
86
87 DDI_DEFINE_STREAM_OPS(sad_ops, nulldev, nulldev, sad_attach,
88 nodev, nodev, sad_info,
89 D_MP | D_MTPERQ | D_MTOUTPERIM | D_MTOCEXCL, &sadinfo,
90 ddi_quiesce_not_supported);
91
92 /*
93 * Module linkage information for the kernel.
94 */
95
96 static struct modldrv modldrv = {
97 &mod_driverops, /* Type of module. This one is a pseudo driver */
98 "STREAMS Administrative Driver 'sad'",
99 &sad_ops, /* driver ops */
100 };
101
102 static struct modlinkage modlinkage = {
103 MODREV_1, &modldrv, NULL
104 };
105
106 int
107 _init(void)
108 {
109 return (mod_install(&modlinkage));
110 }
111
112 int
113 _fini(void)
114 {
115 return (mod_remove(&modlinkage));
116 }
117
118 int
119 _info(struct modinfo *modinfop)
120 {
121 return (mod_info(&modlinkage, modinfop));
122 }
123
|
83 struct streamtab sadinfo = {
84 &sad_rinit, &sad_winit, NULL, NULL
85 };
86
87 DDI_DEFINE_STREAM_OPS(sad_ops, nulldev, nulldev, sad_attach,
88 nodev, nodev, sad_info,
89 D_MP | D_MTPERQ | D_MTOUTPERIM | D_MTOCEXCL, &sadinfo,
90 ddi_quiesce_not_supported);
91
92 /*
93 * Module linkage information for the kernel.
94 */
95
96 static struct modldrv modldrv = {
97 &mod_driverops, /* Type of module. This one is a pseudo driver */
98 "STREAMS Administrative Driver 'sad'",
99 &sad_ops, /* driver ops */
100 };
101
102 static struct modlinkage modlinkage = {
103 MODREV_1, { &modldrv, NULL }
104 };
105
106 int
107 _init(void)
108 {
109 return (mod_install(&modlinkage));
110 }
111
112 int
113 _fini(void)
114 {
115 return (mod_remove(&modlinkage));
116 }
117
118 int
119 _info(struct modinfo *modinfop)
120 {
121 return (mod_info(&modlinkage, modinfop));
122 }
123
|