vendor/golang.org/x/sys/unix/syscall_solaris.go
changeset 265 05c40b36d3b2
parent 262 8d3354485fc3
equal deleted inserted replaced
264:8f478162d991 265:05c40b36d3b2
   588 //sys	Adjtime(delta *Timeval, olddelta *Timeval) (err error)
   588 //sys	Adjtime(delta *Timeval, olddelta *Timeval) (err error)
   589 //sys	Chdir(path string) (err error)
   589 //sys	Chdir(path string) (err error)
   590 //sys	Chmod(path string, mode uint32) (err error)
   590 //sys	Chmod(path string, mode uint32) (err error)
   591 //sys	Chown(path string, uid int, gid int) (err error)
   591 //sys	Chown(path string, uid int, gid int) (err error)
   592 //sys	Chroot(path string) (err error)
   592 //sys	Chroot(path string) (err error)
       
   593 //sys	ClockGettime(clockid int32, time *Timespec) (err error)
   593 //sys	Close(fd int) (err error)
   594 //sys	Close(fd int) (err error)
   594 //sys	Creat(path string, mode uint32) (fd int, err error)
   595 //sys	Creat(path string, mode uint32) (fd int, err error)
   595 //sys	Dup(fd int) (nfd int, err error)
   596 //sys	Dup(fd int) (nfd int, err error)
   596 //sys	Dup2(oldfd int, newfd int) (err error)
   597 //sys	Dup2(oldfd int, newfd int) (err error)
   597 //sys	Exit(code int)
   598 //sys	Exit(code int)
  1024 		}
  1025 		}
  1025 		valid = i + 1
  1026 		valid = i + 1
  1026 	}
  1027 	}
  1027 	return valid, err
  1028 	return valid, err
  1028 }
  1029 }
       
  1030 
       
  1031 //sys	putmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error)
       
  1032 
       
  1033 func Putmsg(fd int, cl []byte, data []byte, flags int) (err error) {
       
  1034 	var clp, datap *strbuf
       
  1035 	if len(cl) > 0 {
       
  1036 		clp = &strbuf{
       
  1037 			Len: int32(len(cl)),
       
  1038 			Buf: (*int8)(unsafe.Pointer(&cl[0])),
       
  1039 		}
       
  1040 	}
       
  1041 	if len(data) > 0 {
       
  1042 		datap = &strbuf{
       
  1043 			Len: int32(len(data)),
       
  1044 			Buf: (*int8)(unsafe.Pointer(&data[0])),
       
  1045 		}
       
  1046 	}
       
  1047 	return putmsg(fd, clp, datap, flags)
       
  1048 }
       
  1049 
       
  1050 //sys	getmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error)
       
  1051 
       
  1052 func Getmsg(fd int, cl []byte, data []byte) (retCl []byte, retData []byte, flags int, err error) {
       
  1053 	var clp, datap *strbuf
       
  1054 	if len(cl) > 0 {
       
  1055 		clp = &strbuf{
       
  1056 			Maxlen: int32(len(cl)),
       
  1057 			Buf:    (*int8)(unsafe.Pointer(&cl[0])),
       
  1058 		}
       
  1059 	}
       
  1060 	if len(data) > 0 {
       
  1061 		datap = &strbuf{
       
  1062 			Maxlen: int32(len(data)),
       
  1063 			Buf:    (*int8)(unsafe.Pointer(&data[0])),
       
  1064 		}
       
  1065 	}
       
  1066 
       
  1067 	if err = getmsg(fd, clp, datap, &flags); err != nil {
       
  1068 		return nil, nil, 0, err
       
  1069 	}
       
  1070 
       
  1071 	if len(cl) > 0 {
       
  1072 		retCl = cl[:clp.Len]
       
  1073 	}
       
  1074 	if len(data) > 0 {
       
  1075 		retData = data[:datap.Len]
       
  1076 	}
       
  1077 	return retCl, retData, flags, nil
       
  1078 }
       
  1079 
       
  1080 func IoctlSetIntRetInt(fd int, req uint, arg int) (int, error) {
       
  1081 	return ioctlRet(fd, req, uintptr(arg))
       
  1082 }
       
  1083 
       
  1084 func IoctlSetString(fd int, req uint, val string) error {
       
  1085 	bs := make([]byte, len(val)+1)
       
  1086 	copy(bs[:len(bs)-1], val)
       
  1087 	err := ioctl(fd, req, uintptr(unsafe.Pointer(&bs[0])))
       
  1088 	runtime.KeepAlive(&bs[0])
       
  1089 	return err
       
  1090 }
       
  1091 
       
  1092 // Lifreq Helpers
       
  1093 
       
  1094 func (l *Lifreq) SetName(name string) error {
       
  1095 	if len(name) >= len(l.Name) {
       
  1096 		return fmt.Errorf("name cannot be more than %d characters", len(l.Name)-1)
       
  1097 	}
       
  1098 	for i := range name {
       
  1099 		l.Name[i] = int8(name[i])
       
  1100 	}
       
  1101 	return nil
       
  1102 }
       
  1103 
       
  1104 func (l *Lifreq) SetLifruInt(d int) {
       
  1105 	*(*int)(unsafe.Pointer(&l.Lifru[0])) = d
       
  1106 }
       
  1107 
       
  1108 func (l *Lifreq) GetLifruInt() int {
       
  1109 	return *(*int)(unsafe.Pointer(&l.Lifru[0]))
       
  1110 }
       
  1111 
       
  1112 func (l *Lifreq) SetLifruUint(d uint) {
       
  1113 	*(*uint)(unsafe.Pointer(&l.Lifru[0])) = d
       
  1114 }
       
  1115 
       
  1116 func (l *Lifreq) GetLifruUint() uint {
       
  1117 	return *(*uint)(unsafe.Pointer(&l.Lifru[0]))
       
  1118 }
       
  1119 
       
  1120 func IoctlLifreq(fd int, req uint, l *Lifreq) error {
       
  1121 	return ioctl(fd, req, uintptr(unsafe.Pointer(l)))
       
  1122 }
       
  1123 
       
  1124 // Strioctl Helpers
       
  1125 
       
  1126 func (s *Strioctl) SetInt(i int) {
       
  1127 	s.Len = int32(unsafe.Sizeof(i))
       
  1128 	s.Dp = (*int8)(unsafe.Pointer(&i))
       
  1129 }
       
  1130 
       
  1131 func IoctlSetStrioctlRetInt(fd int, req uint, s *Strioctl) (int, error) {
       
  1132 	return ioctlRet(fd, req, uintptr(unsafe.Pointer(s)))
       
  1133 }