Lines Matching refs:st

258 	struct oprom_state *st = oprom_state;
265 if (st->already_open)
266 st++;
268 st->already_open = 1;
272 st->current_id = (pnode_t)0;
273 ASSERT(st->snapshot == NULL && st->size == 0);
274 ASSERT(st->ioc_state == IOC_IDLE);
304 struct oprom_state *st;
306 st = &oprom_state[getminor(dev)];
307 ASSERT(getminor(dev) < MAX_OPENS && st->already_open != 0);
308 if (st->snapshot) {
309 kmem_free(st->snapshot, st->size);
310 st->snapshot = NULL;
311 st->size = 0;
312 st->ioc_state = IOC_IDLE;
315 st->already_open = 0;
346 struct oprom_state *st;
360 struct oprom_state *st;
369 st = argp->st;
379 if ((st->current_id != OBP_NONODE) &&
380 (st->current_id != OBP_BADNODE)) {
381 if (oprom_checknodeid(st->current_id, OBP_NONODE) == 0)
382 st->current_id = OBP_BADNODE;
478 node_id = st->current_id;
481 if (st->snapshot == NULL)
517 return (oprom_copyout(st, arg));
520 return (oprom_snapshot(st, arg));
668 if (oprom_checknodeid(node_id, st->current_id) == 0) {
676 st->current_id = prom_nextnode(node_id);
678 st->current_id = prom_childnode(node_id);
681 st->current_id = node_id;
686 *(pnode_t *)opp->oprom_array = st->current_id;
1094 struct oprom_state *st;
1100 st = &oprom_state[getminor(dev)];
1101 ASSERT(st->already_open);
1102 arg_block.st = st;
1106 return (prom_tree_access(opromioctl_cb, &arg_block, &st->tree_gen));
1181 oprom_copytree(struct oprom_state *st, uint_t flag)
1183 ASSERT(st->snapshot == NULL && st->size == 0);
1185 prom_nextnode(0), flag, &st->snapshot, &st->size));
1189 oprom_snapshot(struct oprom_state *st, intptr_t arg)
1193 if (oprom_setstate(st, IOC_SNAP) == -1)
1198 (oprom_copytree(st, flag) != 0)) {
1199 (void) oprom_setstate(st, IOC_IDLE);
1205 flag = (uint_t)st->size;
1207 kmem_free(st->snapshot, st->size);
1208 st->snapshot = NULL;
1209 st->size = 0;
1210 (void) oprom_setstate(st, IOC_IDLE);
1214 (void) oprom_setstate(st, IOC_DONE);
1219 oprom_copyout(struct oprom_state *st, intptr_t arg)
1224 if (oprom_setstate(st, IOC_COPY) == -1)
1230 else if (size < st->size)
1232 else if (copyout(st->snapshot, (void *)arg, st->size) != 0)
1240 (void) oprom_setstate(st, IOC_DONE);
1244 kmem_free(st->snapshot, st->size);
1245 st->snapshot = NULL;
1246 st->size = 0;
1247 (void) oprom_setstate(st, IOC_IDLE);
1395 oprom_setstate(struct oprom_state *st, int16_t new_state)
1405 if (st->ioc_state != IOC_IDLE)
1409 if (st->ioc_state != IOC_DONE)
1417 st->ioc_state = new_state;
1420 st->ioc_state, new_state);