Lines Matching refs:ct

509 	door_client_t	*ct;		/* curthread door_data */  in door_call()  local
525 ct = door_my_client(1); in door_call()
532 if (copyin(args, &ct->d_args, sizeof (door_arg_t)) != 0) in door_call()
539 ct->d_args.data_ptr = in door_call()
541 ct->d_args.data_size = da32.data_size; in door_call()
542 ct->d_args.desc_ptr = in door_call()
544 ct->d_args.desc_num = da32.desc_num; in door_call()
545 ct->d_args.rbuf = in door_call()
547 ct->d_args.rsize = da32.rsize; in door_call()
551 ct->d_noresults = 1; in door_call()
552 ct->d_args.data_size = 0; in door_call()
553 ct->d_args.desc_num = 0; in door_call()
554 ct->d_args.rsize = 0; in door_call()
588 error = door_check_limits(dp, &ct->d_args, 0); in door_call()
598 caddr_t rbuf = ct->d_args.rbuf; in door_call()
599 size_t rsize = ct->d_args.rsize; in door_call()
602 ct->d_kernel = 1; in door_call()
603 ct->d_error = DOOR_WAIT; in door_call()
606 if (ct->d_args.desc_num) { in door_call()
631 (*(dp->door_pc))(dp->door_data, &ct->d_args, in door_call()
642 if (ct->d_args.desc_num) { in door_call()
647 ct->d_buf = ct->d_args.rbuf; in door_call()
648 ct->d_bufsize = ct->d_args.rsize; in door_call()
649 if (rsize < (ct->d_args.data_size + in door_call()
650 (ct->d_args.desc_num * sizeof (door_desc_t)))) { in door_call()
652 error = door_overflow(curthread, ct->d_args.data_ptr, in door_call()
653 ct->d_args.data_size, ct->d_args.desc_ptr, in door_call()
654 ct->d_args.desc_num); in door_call()
659 ct->d_args.rbuf = rbuf; in door_call()
660 ct->d_args.rsize = rsize; in door_call()
678 if (ct->d_args.desc_num || ct->d_args.data_size) { in door_call()
700 ct->d_error = DOOR_WAIT; in door_call()
701 ct->d_args_done = 0; in door_call()
709 if ((error = ct->d_error) < 0) { /* DOOR_WAIT or DOOR_EXIT */ in door_call()
733 if (ct->d_error == DOOR_WAIT && in door_call()
762 if (ct->d_error == DOOR_WAIT) { in door_call()
768 } else if (ct->d_error == DOOR_EXIT) { in door_call()
773 error = ct->d_error; in door_call()
780 while (DOOR_T_HELD(ct)) in door_call()
781 cv_wait(&ct->d_cv, &door_knob); in door_call()
787 if (!ct->d_args_done) { in door_call()
789 ct->d_args_done = 1; in door_call()
795 if (ct->d_error == 0) in door_call()
798 ASSERT(ct->d_args_done); in door_call()
806 door_fp_close(ct->d_fpp, ct->d_args.desc_num); in door_call()
813 if (ct->d_noresults) in door_call()
823 door_fp_close(ct->d_fpp, ct->d_args.desc_num); in door_call()
833 if (ct->d_args.data_size) { in door_call()
834 ct->d_args.data_ptr = ct->d_args.rbuf; in door_call()
835 if (ct->d_kernel || (!ct->d_overflow && in door_call()
836 ct->d_args.data_size <= door_max_arg)) { in door_call()
837 if (copyout_nowatch(ct->d_buf, ct->d_args.rbuf, in door_call()
838 ct->d_args.data_size)) { in door_call()
839 door_fp_close(ct->d_fpp, ct->d_args.desc_num); in door_call()
849 if (ct->d_args.desc_num) { in door_call()
852 uint_t n = ct->d_args.desc_num; in door_call()
856 fpp = ct->d_fpp; in door_call()
868 ct->d_args.desc_ptr = (door_desc_t *)(ct->d_args.rbuf + in door_call()
869 roundup(ct->d_args.data_size, sizeof (door_desc_t))); in door_call()
871 if (copyout_nowatch(start, ct->d_args.desc_ptr, dsize)) { in door_call()
881 if (copyout_nowatch(&ct->d_args, args, in door_call()
887 da32.data_ptr = (caddr32_t)(uintptr_t)ct->d_args.data_ptr; in door_call()
888 da32.data_size = ct->d_args.data_size; in door_call()
889 da32.desc_ptr = (caddr32_t)(uintptr_t)ct->d_args.desc_ptr; in door_call()
890 da32.desc_num = ct->d_args.desc_num; in door_call()
891 da32.rbuf = (caddr32_t)(uintptr_t)ct->d_args.rbuf; in door_call()
892 da32.rsize = ct->d_args.rsize; in door_call()
899 ct->d_noresults = 0; in door_call()
902 if (error != 0 && ct->d_overflow) { in door_call()
903 (void) as_unmap(curproc->p_as, ct->d_args.rbuf, in door_call()
904 ct->d_args.rsize); in door_call()
906 ct->d_overflow = 0; in door_call()
910 ASSERT(ct->d_kernel); in door_call()
912 ct->d_buf = NULL; in door_call()
913 ct->d_bufsize = 0; in door_call()
919 if (ct->d_buf) { in door_call()
920 ASSERT(!ct->d_kernel); in door_call()
921 kmem_free(ct->d_buf, ct->d_bufsize); in door_call()
922 ct->d_buf = NULL; in door_call()
923 ct->d_bufsize = 0; in door_call()
925 ct->d_kernel = 0; in door_call()
934 if (ct->d_fpp) { in door_call()
935 kmem_free(ct->d_fpp, ct->d_fpp_size); in door_call()
936 ct->d_fpp = NULL; in door_call()
937 ct->d_fpp_size = 0; in door_call()
1210 door_server_dispatch(door_client_t *ct, door_node_t *dp) in door_server_dispatch() argument
1228 file_t **fpp = ct->d_fpp; in door_server_dispatch()
1233 if (ct != NULL) { in door_server_dispatch()
1234 datap = ct->d_args.data_ptr; in door_server_dispatch()
1235 datasize = ct->d_args.data_size; in door_server_dispatch()
1236 ndesc = ct->d_args.desc_num; in door_server_dispatch()
1246 if (ct->d_upcall != NULL) in door_server_dispatch()
1291 if (ct->d_upcall != NULL || datasize <= door_max_arg) { in door_server_dispatch()
1292 if (door_stack_copyout(ct->d_buf, datap, datasize)) { in door_server_dispatch()
1381 door_client_t *ct; /* caller door_data */ in door_return() local
1421 ct = DOOR_CLIENT(caller->t_door); in door_return()
1423 ct->d_args.data_size = data_size; in door_return()
1424 ct->d_args.desc_num = desc_num; in door_return()
1433 DOOR_T_HOLD(ct); in door_return()
1438 DOOR_T_RELEASE(ct); in door_return()
1458 ct->d_error = error; /* Return any errors */ in door_return()
1506 ct = DOOR_CLIENT(st->d_caller->t_door); in door_return()
1508 DOOR_T_HOLD(ct); in door_return()
1510 error = door_server_dispatch(ct, dp); in door_return()
1512 DOOR_T_RELEASE(ct); in door_return()
1515 ct->d_args_done = 1; in door_return()
1520 ct = DOOR_CLIENT(caller->t_door); in door_return()
1522 ct = NULL; in door_return()
1680 door_client_t *ct; in door_ucred() local
1694 ct = DOOR_CLIENT(caller->t_door); in door_ucred()
1697 DOOR_T_HOLD(ct); in door_ucred()
1706 if ((dup = ct->d_upcall) != NULL) in door_ucred()
1712 DOOR_T_RELEASE(ct); in door_ucred()
2005 door_client_t *ct; in door_slam() local
2014 ct = DOOR_CLIENT(dt); in door_slam()
2019 if (DOOR_T_HELD(ct)) in door_slam()
2020 cv_wait(&ct->d_cv, &door_knob); in door_slam()
2321 door_client_t *ct = DOOR_CLIENT(caller->t_door); in door_overflow() local
2329 ASSERT(DOOR_T_HELD(ct) || ct->d_kernel); in door_overflow()
2345 if (!ct->d_kernel && desc_num > 0) { in door_overflow()
2354 if (ct->d_kernel) in door_overflow()
2391 if (fpp_size > ct->d_fpp_size) { in door_overflow()
2393 if (ct->d_fpp_size) in door_overflow()
2394 kmem_free(ct->d_fpp, ct->d_fpp_size); in door_overflow()
2395 ct->d_fpp_size = fpp_size; in door_overflow()
2396 ct->d_fpp = kmem_alloc(ct->d_fpp_size, KM_SLEEP); in door_overflow()
2398 fpp = ct->d_fpp; in door_overflow()
2407 door_fp_close(ct->d_fpp, fpp - ct->d_fpp); in door_overflow()
2432 ct->d_overflow = 1; in door_overflow()
2433 ct->d_args.rbuf = addr; in door_overflow()
2434 ct->d_args.rsize = rlen; in door_overflow()
2445 door_client_t *ct = DOOR_CLIENT(curthread->t_door); in door_args() local
2453 ndid = ct->d_args.desc_num; in door_args()
2460 error = door_layout(server, ct->d_args.data_size, ndid, is_private); in door_args()
2465 if (ct->d_args.data_size != 0) { in door_args()
2466 if (ct->d_args.data_size <= door_max_arg) { in door_args()
2474 ASSERT(ct->d_buf == NULL); in door_args()
2475 ct->d_bufsize = roundup(ct->d_args.data_size, in door_args()
2477 ct->d_buf = kmem_alloc(ct->d_bufsize, KM_SLEEP); in door_args()
2478 if (copyin_nowatch(ct->d_args.data_ptr, in door_args()
2479 ct->d_buf, ct->d_args.data_size) != 0) { in door_args()
2480 kmem_free(ct->d_buf, ct->d_bufsize); in door_args()
2481 ct->d_buf = NULL; in door_args()
2482 ct->d_bufsize = 0; in door_args()
2489 size_t len = ct->d_args.data_size; in door_args()
2496 src = ct->d_args.data_ptr; in door_args()
2550 if (copyin_nowatch(ct->d_args.desc_ptr, didpp, dsize)) { in door_args()
2554 ct->d_fpp_size = ndid * sizeof (struct file *); in door_args()
2555 ct->d_fpp = kmem_alloc(ct->d_fpp_size, KM_SLEEP); in door_args()
2556 fpp = ct->d_fpp; in door_args()
2565 door_fp_close(ct->d_fpp, fpp - ct->d_fpp); in door_args()
2569 kmem_free(ct->d_fpp, ct->d_fpp_size); in door_args()
2570 ct->d_fpp = NULL; in door_args()
2571 ct->d_fpp_size = 0; in door_args()
2603 door_client_t *ct = DOOR_CLIENT(curthread->t_door); in door_translate_in() local
2607 ndid = ct->d_args.desc_num; in door_translate_in()
2621 if (copyin_nowatch(ct->d_args.desc_ptr, didpp, dsize)) { in door_translate_in()
2661 ct->d_args.desc_ptr = start; in door_translate_in()
2674 door_client_t *ct = DOOR_CLIENT(curthread->t_door); in door_translate_out() local
2678 ndid = ct->d_args.desc_num; in door_translate_out()
2680 door_fd_rele(ct->d_args.desc_ptr, ndid, 1); in door_translate_out()
2687 door_desc_t *didpp = ct->d_args.desc_ptr; in door_translate_out()
2690 ct->d_fpp_size = ndid * sizeof (struct file *); in door_translate_out()
2691 fpp = ct->d_fpp = kmem_alloc(ct->d_fpp_size, KM_SLEEP); in door_translate_out()
2723 door_fp_close(ct->d_fpp, fpp - ct->d_fpp); in door_translate_out()
2726 kmem_free(ct->d_fpp, ct->d_fpp_size); in door_translate_out()
2727 ct->d_fpp = NULL; in door_translate_out()
2728 ct->d_fpp_size = 0; in door_translate_out()
2744 door_client_t *ct = DOOR_CLIENT(caller->t_door); in door_results() local
2745 door_upcall_t *dup = ct->d_upcall; in door_results()
2750 ASSERT(DOOR_T_HELD(ct)); in door_results()
2753 if (ct->d_noresults) in door_results()
2780 if (ct->d_args.rbuf == NULL || ct->d_args.rsize < result_size) { in door_results()
2788 ct->d_args.rsize = result_size; in door_results()
2789 ct->d_args.rbuf = kmem_alloc(result_size, KM_SLEEP); in door_results()
2791 ct->d_args.data_ptr = ct->d_args.rbuf; in door_results()
2793 copyin_nowatch(data_ptr, ct->d_args.data_ptr, in door_results()
2796 } else if (result_size > ct->d_args.rsize) { in door_results()
2804 if (ct->d_buf == NULL) { in door_results()
2805 ct->d_bufsize = data_size; in door_results()
2806 ct->d_buf = kmem_alloc(ct->d_bufsize, KM_SLEEP); in door_results()
2807 } else if (ct->d_bufsize < data_size) { in door_results()
2808 kmem_free(ct->d_buf, ct->d_bufsize); in door_results()
2809 ct->d_bufsize = data_size; in door_results()
2810 ct->d_buf = kmem_alloc(ct->d_bufsize, KM_SLEEP); in door_results()
2812 if (copyin_nowatch(data_ptr, ct->d_buf, data_size) != 0) in door_results()
2816 caddr_t dest = ct->d_args.rbuf; in door_results()
2863 if (fpp_size > ct->d_fpp_size) { in door_results()
2865 if (ct->d_fpp_size) in door_results()
2866 kmem_free(ct->d_fpp, ct->d_fpp_size); in door_results()
2867 ct->d_fpp_size = fpp_size; in door_results()
2868 ct->d_fpp = kmem_alloc(fpp_size, KM_SLEEP); in door_results()
2870 fpp = ct->d_fpp; in door_results()
2880 door_fp_close(ct->d_fpp, fpp - ct->d_fpp); in door_results()
3107 door_client_t *ct; /* curthread door_data */ in door_upcall() local
3119 ct = door_my_client(1); in door_upcall()
3177 ct->d_buf = param->data_ptr; in door_upcall()
3178 ct->d_bufsize = param->data_size; in door_upcall()
3179 ct->d_args = *param; /* structure assignment */ in door_upcall()
3181 if (ct->d_args.desc_num) { in door_upcall()
3201 ct->d_upcall = dup; in door_upcall()
3203 ct->d_noresults = 1; in door_upcall()
3205 ct->d_noresults = 0; in door_upcall()
3209 ct->d_error = DOOR_WAIT; in door_upcall()
3217 if ((error = ct->d_error) < 0) { /* DOOR_WAIT or DOOR_EXIT */ in door_upcall()
3241 if (ct->d_error == DOOR_WAIT && in door_upcall()
3269 if (ct->d_error == DOOR_WAIT) { in door_upcall()
3276 } else if (ct->d_error == DOOR_EXIT) { in door_upcall()
3281 error = ct->d_error; in door_upcall()
3288 while (DOOR_T_HELD(ct)) in door_upcall()
3289 cv_wait(&ct->d_cv, &door_knob); in door_upcall()
3294 if (ct->d_error == 0) in door_upcall()
3309 if (ct->d_noresults) in door_upcall()
3319 door_fp_close(ct->d_fpp, ct->d_args.desc_num); in door_upcall()
3324 if (ct->d_args.desc_num) { in door_upcall()
3328 uint_t n = ct->d_args.desc_num; in door_upcall()
3330 didpp = ct->d_args.desc_ptr = (door_desc_t *)(ct->d_args.rbuf + in door_upcall()
3331 roundup(ct->d_args.data_size, sizeof (door_desc_t))); in door_upcall()
3332 fpp = ct->d_fpp; in door_upcall()
3350 *param = ct->d_args; /* structure assignment */ in door_upcall()
3355 if (ct->d_fpp) { in door_upcall()
3356 kmem_free(ct->d_fpp, ct->d_fpp_size); in door_upcall()
3357 ct->d_fpp = NULL; in door_upcall()
3358 ct->d_fpp_size = 0; in door_upcall()
3361 ct->d_upcall = NULL; in door_upcall()
3362 ct->d_noresults = 0; in door_upcall()
3363 ct->d_buf = NULL; in door_upcall()
3364 ct->d_bufsize = 0; in door_upcall()