Lines Matching refs:a_uio

331 user_ssize_t uio_resid( uio_t a_uio )
334 if (a_uio == NULL) {
337 /* if (IS_VALID_UIO_SEGFLG(a_uio->uio_segflg) == 0) { */
343 if (a_uio == NULL) {
347 return( a_uio->uio_resid_64 );
353 void uio_setresid( uio_t a_uio, user_ssize_t a_value )
356 if (a_uio == NULL) {
359 /* if (IS_VALID_UIO_SEGFLG(a_uio->uio_segflg) == 0) { */
364 if (a_uio == NULL) {
368 a_uio->uio_resid_64 = a_value;
376 user_addr_t uio_curriovbase( uio_t a_uio )
379 if (a_uio == NULL) {
384 if (a_uio == NULL || a_uio->uio_iovcnt < 1) {
388 if (UIO_IS_USER_SPACE(a_uio)) {
389 return(a_uio->uio_iovs.uiovp->iov_base);
391 return((user_addr_t)a_uio->uio_iovs.kiovp->iov_base);
399 user_size_t uio_curriovlen( uio_t a_uio )
402 if (a_uio == NULL) {
407 if (a_uio == NULL || a_uio->uio_iovcnt < 1) {
411 if (UIO_IS_USER_SPACE(a_uio)) {
412 return(a_uio->uio_iovs.uiovp->iov_len);
414 return((user_size_t)a_uio->uio_iovs.kiovp->iov_len);
421 __private_extern__ void uio_setcurriovlen( uio_t a_uio, user_size_t a_value )
424 if (a_uio == NULL) {
429 if (a_uio == NULL) {
433 if (UIO_IS_USER_SPACE(a_uio)) {
434 a_uio->uio_iovs.uiovp->iov_len = a_value;
442 a_uio->uio_iovs.kiovp->iov_len = (size_t)a_value;
450 int uio_iovcnt( uio_t a_uio )
453 if (a_uio == NULL) {
458 if (a_uio == NULL) {
462 return( a_uio->uio_iovcnt );
468 off_t uio_offset( uio_t a_uio )
471 if (a_uio == NULL) {
476 if (a_uio == NULL) {
479 return( a_uio->uio_offset );
485 void uio_setoffset( uio_t a_uio, off_t a_offset )
488 if (a_uio == NULL) {
493 if (a_uio == NULL) {
496 a_uio->uio_offset = a_offset;
503 int uio_rw( uio_t a_uio )
506 if (a_uio == NULL) {
511 if (a_uio == NULL) {
514 return( a_uio->uio_rw );
520 void uio_setrw( uio_t a_uio, int a_value )
522 if (a_uio == NULL) {
536 a_uio->uio_rw = a_value;
545 int uio_isuserspace( uio_t a_uio )
547 if (a_uio == NULL) {
554 if (UIO_SEG_IS_USER_SPACE(a_uio->uio_segflg)) {
682 __private_extern__ int uio_spacetype( uio_t a_uio )
684 if (a_uio == NULL) {
691 return( a_uio->uio_segflg );
701 __private_extern__ struct user_iovec * uio_iovsaddr( uio_t a_uio )
705 if (a_uio == NULL) {
709 if (UIO_SEG_IS_USER_SPACE(a_uio->uio_segflg)) {
711 my_addr = (struct user_iovec *) a_uio->uio_iovs.uiovp;
729 void uio_reset( uio_t a_uio,
739 if (a_uio == NULL) {
750 if (a_uio == NULL) {
754 my_size = a_uio->uio_size;
755 my_old_flags = a_uio->uio_flags;
756 my_max_iovs = a_uio->uio_max_iovs;
757 bzero(a_uio, my_size);
758 a_uio->uio_size = my_size;
769 a_uio->uio_segflg = UIO_USERSPACE32;
772 a_uio->uio_segflg = UIO_SYSSPACE;
775 a_uio->uio_segflg = UIO_PHYS_USERSPACE32;
778 a_uio->uio_segflg = a_spacetype;
783 a_uio->uio_iovs.uiovp = (struct user_iovec *)
784 (((uint8_t *)a_uio) + sizeof(struct uio));
787 a_uio->uio_iovs.uiovp = NULL;
790 a_uio->uio_max_iovs = my_max_iovs;
791 a_uio->uio_offset = a_offset;
792 a_uio->uio_rw = a_iodirection;
793 a_uio->uio_flags = my_old_flags;
802 void uio_free( uio_t a_uio )
805 if (a_uio == NULL) {
810 if (a_uio != NULL && (a_uio->uio_flags & UIO_FLAGS_WE_ALLOCED) != 0) {
815 kfree(a_uio, a_uio->uio_size);
827 int uio_addiov( uio_t a_uio, user_addr_t a_baseaddr, user_size_t a_length )
831 if (a_uio == NULL) {
838 if (UIO_IS_USER_SPACE(a_uio)) {
839 for ( i = 0; i < a_uio->uio_max_iovs; i++ ) {
840 if (a_uio->uio_iovs.uiovp[i].iov_len == 0 && a_uio->uio_iovs.uiovp[i].iov_base == 0) {
841 a_uio->uio_iovs.uiovp[i].iov_len = a_length;
842 a_uio->uio_iovs.uiovp[i].iov_base = a_baseaddr;
843 a_uio->uio_iovcnt++;
844 a_uio->uio_resid_64 += a_length;
850 for ( i = 0; i < a_uio->uio_max_iovs; i++ ) {
851 if (a_uio->uio_iovs.kiovp[i].iov_len == 0 && a_uio->uio_iovs.kiovp[i].iov_base == 0) {
852 a_uio->uio_iovs.kiovp[i].iov_len = (u_int64_t)a_length;
853 a_uio->uio_iovs.kiovp[i].iov_base = (u_int64_t)a_baseaddr;
854 a_uio->uio_iovcnt++;
855 a_uio->uio_resid_64 += a_length;
871 int uio_getiov( uio_t a_uio,
876 if (a_uio == NULL) {
882 if ( a_index < 0 || a_index >= a_uio->uio_iovcnt) {
886 if (UIO_IS_USER_SPACE(a_uio)) {
888 *a_baseaddr_p = a_uio->uio_iovs.uiovp[a_index].iov_base;
891 *a_length_p = a_uio->uio_iovs.uiovp[a_index].iov_len;
896 *a_baseaddr_p = a_uio->uio_iovs.kiovp[a_index].iov_base;
899 *a_length_p = a_uio->uio_iovs.kiovp[a_index].iov_len;
910 __private_extern__ int uio_calculateresid( uio_t a_uio )
915 if (a_uio == NULL) {
922 a_uio->uio_iovcnt = a_uio->uio_max_iovs;
923 if (UIO_IS_USER_SPACE(a_uio)) {
924 a_uio->uio_resid_64 = 0;
925 for ( i = 0; i < a_uio->uio_max_iovs; i++ ) {
926 if (a_uio->uio_iovs.uiovp[i].iov_len != 0 && a_uio->uio_iovs.uiovp[i].iov_base != 0) {
927 if (a_uio->uio_iovs.uiovp[i].iov_len > LONG_MAX)
929 resid += a_uio->uio_iovs.uiovp[i].iov_len;
934 a_uio->uio_resid_64 = resid;
937 while (a_uio->uio_iovcnt > 0 && a_uio->uio_iovs.uiovp->iov_len == 0) {
938 a_uio->uio_iovcnt--;
939 if (a_uio->uio_iovcnt > 0) {
940 a_uio->uio_iovs.uiovp++;
945 a_uio->uio_resid_64 = 0;
946 for ( i = 0; i < a_uio->uio_max_iovs; i++ ) {
947 if (a_uio->uio_iovs.kiovp[i].iov_len != 0 && a_uio->uio_iovs.kiovp[i].iov_base != 0) {
948 if (a_uio->uio_iovs.kiovp[i].iov_len > LONG_MAX)
950 resid += a_uio->uio_iovs.kiovp[i].iov_len;
955 a_uio->uio_resid_64 = resid;
958 while (a_uio->uio_iovcnt > 0 && a_uio->uio_iovs.kiovp->iov_len == 0) {
959 a_uio->uio_iovcnt--;
960 if (a_uio->uio_iovcnt > 0) {
961 a_uio->uio_iovs.kiovp++;
978 void uio_update( uio_t a_uio, user_size_t a_count )
981 if (a_uio == NULL) {
984 if (UIO_IS_32_BIT_SPACE(a_uio) && a_count > 0xFFFFFFFFull) {
989 if (a_uio == NULL || a_uio->uio_iovcnt < 1) {
993 if (UIO_IS_USER_SPACE(a_uio)) {
999 if (a_count > a_uio->uio_iovs.uiovp->iov_len) {
1000 a_uio->uio_iovs.uiovp->iov_base += a_uio->uio_iovs.uiovp->iov_len;
1001 a_uio->uio_iovs.uiovp->iov_len = 0;
1004 a_uio->uio_iovs.uiovp->iov_base += a_count;
1005 a_uio->uio_iovs.uiovp->iov_len -= a_count;
1007 if (a_uio->uio_resid_64 < 0) {
1008 a_uio->uio_resid_64 = 0;
1010 if (a_count > (user_size_t)a_uio->uio_resid_64) {
1011 a_uio->uio_offset += a_uio->uio_resid_64;
1012 a_uio->uio_resid_64 = 0;
1015 a_uio->uio_offset += a_count;
1016 a_uio->uio_resid_64 -= a_count;
1022 while (a_uio->uio_iovcnt > 0 && a_uio->uio_iovs.uiovp->iov_len == 0) {
1023 a_uio->uio_iovcnt--;
1024 if (a_uio->uio_iovcnt > 0) {
1025 a_uio->uio_iovs.uiovp++;
1035 if (a_count > a_uio->uio_iovs.kiovp->iov_len) {
1036 a_uio->uio_iovs.kiovp->iov_base += a_uio->uio_iovs.kiovp->iov_len;
1037 a_uio->uio_iovs.kiovp->iov_len = 0;
1040 a_uio->uio_iovs.kiovp->iov_base += a_count;
1041 a_uio->uio_iovs.kiovp->iov_len -= a_count;
1043 if (a_uio->uio_resid_64 < 0) {
1044 a_uio->uio_resid_64 = 0;
1046 if (a_count > (user_size_t)a_uio->uio_resid_64) {
1047 a_uio->uio_offset += a_uio->uio_resid_64;
1048 a_uio->uio_resid_64 = 0;
1051 a_uio->uio_offset += a_count;
1052 a_uio->uio_resid_64 -= a_count;
1058 while (a_uio->uio_iovcnt > 0 && a_uio->uio_iovs.kiovp->iov_len == 0) {
1059 a_uio->uio_iovcnt--;
1060 if (a_uio->uio_iovcnt > 0) {
1061 a_uio->uio_iovs.kiovp++;
1074 __private_extern__ void uio_pushback( uio_t a_uio, user_size_t a_count )
1077 if (a_uio == NULL) {
1080 if (UIO_IS_32_BIT_SPACE(a_uio) && a_count > 0xFFFFFFFFull) {
1085 if (a_uio == NULL || a_count == 0) {
1089 if (a_uio->uio_iovcnt < 1) {
1093 if (UIO_IS_USER_SPACE(a_uio)) {
1094 a_uio->uio_iovs.uiovp->iov_base -= a_count;
1095 a_uio->uio_iovs.uiovp->iov_len += a_count;
1098 a_uio->uio_iovs.kiovp->iov_base -= a_count;
1099 a_uio->uio_iovs.kiovp->iov_len += a_count;
1102 a_uio->uio_offset -= a_count;
1103 a_uio->uio_resid_64 += a_count;
1113 uio_t uio_duplicate( uio_t a_uio )
1118 if (a_uio == NULL) {
1122 my_uio = (uio_t) kalloc(a_uio->uio_size);
1127 bcopy((void *)a_uio, (void *)my_uio, a_uio->uio_size);
1136 if (UIO_IS_USER_SPACE(a_uio)) {