88 xsvc_getinfo, /* devo_getinfo */
89 nulldev, /* devo_identify */
90 nulldev, /* devo_probe */
91 xsvc_attach, /* devo_attach */
92 xsvc_detach, /* devo_detach */
93 nodev, /* devo_reset */
94 &xsvc_cb_ops, /* devo_cb_ops */
95 NULL, /* devo_bus_ops */
96 NULL, /* power */
97 ddi_quiesce_not_needed, /* quiesce */
98 };
99
100 static struct modldrv xsvc_modldrv = {
101 &mod_driverops, /* Type of module. This one is a driver */
102 "xsvc driver", /* Name of the module. */
103 &xsvc_dev_ops, /* driver ops */
104 };
105
106 static struct modlinkage xsvc_modlinkage = {
107 MODREV_1,
108 (void *) &xsvc_modldrv,
109 NULL
110 };
111
112
113 static int xsvc_ioctl_alloc_memory(xsvc_state_t *state, void *arg, int mode);
114 static int xsvc_ioctl_flush_memory(xsvc_state_t *state, void *arg, int mode);
115 static int xsvc_ioctl_free_memory(xsvc_state_t *state, void *arg, int mode);
116 static int xsvc_mem_alloc(xsvc_state_t *state, uint64_t key,
117 xsvc_mem_t **mp);
118 static void xsvc_mem_free(xsvc_state_t *state, xsvc_mem_t *mp);
119 static xsvc_mem_t *xsvc_mem_lookup(xsvc_state_t *state,
120 uint64_t key);
121 static int xsvc_mnode_key_compare(const void *q, const void *e);
122 static int xsvc_umem_cookie_alloc(caddr_t kva, size_t size, int flags,
123 ddi_umem_cookie_t *cookiep);
124 static void xsvc_umem_cookie_free(ddi_umem_cookie_t *cookiep);
125
126
127 void *xsvc_statep;
128
129 static ddi_device_acc_attr_t xsvc_device_attr = {
|
88 xsvc_getinfo, /* devo_getinfo */
89 nulldev, /* devo_identify */
90 nulldev, /* devo_probe */
91 xsvc_attach, /* devo_attach */
92 xsvc_detach, /* devo_detach */
93 nodev, /* devo_reset */
94 &xsvc_cb_ops, /* devo_cb_ops */
95 NULL, /* devo_bus_ops */
96 NULL, /* power */
97 ddi_quiesce_not_needed, /* quiesce */
98 };
99
100 static struct modldrv xsvc_modldrv = {
101 &mod_driverops, /* Type of module. This one is a driver */
102 "xsvc driver", /* Name of the module. */
103 &xsvc_dev_ops, /* driver ops */
104 };
105
106 static struct modlinkage xsvc_modlinkage = {
107 MODREV_1,
108 { (void *) &xsvc_modldrv, NULL }
109 };
110
111
112 static int xsvc_ioctl_alloc_memory(xsvc_state_t *state, void *arg, int mode);
113 static int xsvc_ioctl_flush_memory(xsvc_state_t *state, void *arg, int mode);
114 static int xsvc_ioctl_free_memory(xsvc_state_t *state, void *arg, int mode);
115 static int xsvc_mem_alloc(xsvc_state_t *state, uint64_t key,
116 xsvc_mem_t **mp);
117 static void xsvc_mem_free(xsvc_state_t *state, xsvc_mem_t *mp);
118 static xsvc_mem_t *xsvc_mem_lookup(xsvc_state_t *state,
119 uint64_t key);
120 static int xsvc_mnode_key_compare(const void *q, const void *e);
121 static int xsvc_umem_cookie_alloc(caddr_t kva, size_t size, int flags,
122 ddi_umem_cookie_t *cookiep);
123 static void xsvc_umem_cookie_free(ddi_umem_cookie_t *cookiep);
124
125
126 void *xsvc_statep;
127
128 static ddi_device_acc_attr_t xsvc_device_attr = {
|