github.com/Cloud-Foundations/Dominator@v0.3.4/lib/wsyscall/wrappers_darwin.go (about) 1 package wsyscall 2 3 import ( 4 "os" 5 "syscall" 6 ) 7 8 const ( 9 S_IFBLK = syscall.S_IFBLK 10 S_IFCHR = syscall.S_IFCHR 11 S_IFDIR = syscall.S_IFDIR 12 S_IFIFO = syscall.S_IFIFO 13 S_IFLNK = syscall.S_IFLNK 14 S_IFMT = syscall.S_IFMT 15 S_IFREG = syscall.S_IFREG 16 S_IFSOCK = syscall.S_IFSOCK 17 S_IREAD = syscall.S_IREAD 18 S_IRGRP = syscall.S_IRGRP 19 S_IROTH = syscall.S_IROTH 20 S_IRUSR = syscall.S_IRUSR 21 S_IRWXG = syscall.S_IRWXG 22 S_IRWXO = syscall.S_IRWXO 23 S_IRWXU = syscall.S_IRWXU 24 S_ISGID = syscall.S_ISGID 25 S_ISUID = syscall.S_ISUID 26 S_ISVTX = syscall.S_ISVTX 27 S_IWGRP = syscall.S_IWGRP 28 S_IWOTH = syscall.S_IWOTH 29 S_IWRITE = syscall.S_IWRITE 30 S_IWUSR = syscall.S_IWUSR 31 S_IXGRP = syscall.S_IXGRP 32 S_IXOTH = syscall.S_IXOTH 33 S_IXUSR = syscall.S_IXUSR 34 ) 35 36 func convertStat(dest *Stat_t, source *syscall.Stat_t) { 37 dest.Dev = uint64(source.Dev) 38 dest.Ino = source.Ino 39 dest.Nlink = uint64(source.Nlink) 40 dest.Mode = uint32(source.Mode) 41 dest.Uid = source.Uid 42 dest.Gid = source.Gid 43 dest.Rdev = uint64(source.Rdev) 44 dest.Size = source.Size 45 dest.Blksize = int64(source.Blksize) 46 dest.Blocks = source.Blocks 47 dest.Atim = source.Atimespec 48 dest.Mtim = source.Mtimespec 49 dest.Ctim = source.Ctimespec 50 } 51 52 func dup(oldfd int) (int, error) { 53 return syscall.Dup(oldfd) 54 } 55 56 func dup2(oldfd int, newfd int) error { 57 return syscall.Dup2(oldfd, newfd) 58 } 59 60 func dup3(oldfd int, newfd int, flags int) error { 61 if flags == 0 { 62 return syscall.Dup2(oldfd, newfd) 63 } 64 return syscall.ENOTSUP 65 } 66 67 func getFileDescriptorLimit() (uint64, uint64, error) { 68 var rlim syscall.Rlimit 69 if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rlim); err != nil { 70 return 0, 0, err 71 } 72 return rlim.Cur, rlim.Max, nil 73 } 74 75 func getrusage(who int, rusage *Rusage) error { 76 switch who { 77 case RUSAGE_CHILDREN: 78 who = syscall.RUSAGE_CHILDREN 79 case RUSAGE_SELF: 80 who = syscall.RUSAGE_SELF 81 default: 82 return syscall.ENOTSUP 83 } 84 var syscallRusage syscall.Rusage 85 if err := syscall.Getrusage(who, &syscallRusage); err != nil { 86 return err 87 } 88 rusage.Utime.Sec = int64(syscallRusage.Utime.Sec) 89 rusage.Utime.Usec = int64(syscallRusage.Utime.Usec) 90 rusage.Stime.Sec = int64(syscallRusage.Stime.Sec) 91 rusage.Stime.Usec = int64(syscallRusage.Stime.Usec) 92 rusage.Maxrss = int64(syscallRusage.Maxrss) >> 10 93 rusage.Ixrss = int64(syscallRusage.Ixrss) >> 10 94 rusage.Idrss = int64(syscallRusage.Idrss) >> 10 95 rusage.Minflt = int64(syscallRusage.Minflt) 96 rusage.Majflt = int64(syscallRusage.Majflt) 97 rusage.Nswap = int64(syscallRusage.Nswap) 98 rusage.Inblock = int64(syscallRusage.Inblock) 99 rusage.Oublock = int64(syscallRusage.Oublock) 100 rusage.Msgsnd = int64(syscallRusage.Msgsnd) 101 rusage.Msgrcv = int64(syscallRusage.Msgrcv) 102 rusage.Nsignals = int64(syscallRusage.Nsignals) 103 rusage.Nvcsw = int64(syscallRusage.Nvcsw) 104 rusage.Nivcsw = int64(syscallRusage.Nivcsw) 105 return nil 106 } 107 108 func fallocate(fd int, mode uint32, off int64, len int64) error { 109 return syscall.ENOTSUP 110 } 111 112 func ioctl(fd int, request, argp uintptr) error { 113 _, _, errno := syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), request, 114 argp) 115 if errno != 0 { 116 return os.NewSyscallError("ioctl", errno) 117 } 118 return nil 119 } 120 121 func lstat(path string, statbuf *Stat_t) error { 122 var rawStatbuf syscall.Stat_t 123 if err := syscall.Lstat(path, &rawStatbuf); err != nil { 124 return err 125 } 126 convertStat(statbuf, &rawStatbuf) 127 return nil 128 } 129 130 func mount(source string, target string, fstype string, flags uintptr, 131 data string) error { 132 return syscall.ENOTSUP 133 } 134 135 func reboot() error { 136 return syscall.ENOTSUP 137 } 138 139 func setAllGid(gid int) error { 140 return syscall.Setregid(gid, gid) 141 } 142 143 func setAllUid(uid int) error { 144 return syscall.Setreuid(uid, uid) 145 } 146 147 func setMyPriority(priority int) error { 148 return syscall.Setpriority(syscall.PRIO_PROCESS, 0, priority) 149 } 150 151 func setNetNamespace(namespaceFd int) error { 152 return syscall.ENOTSUP 153 } 154 155 func stat(path string, statbuf *Stat_t) error { 156 var rawStatbuf syscall.Stat_t 157 if err := syscall.Stat(path, &rawStatbuf); err != nil { 158 return err 159 } 160 convertStat(statbuf, &rawStatbuf) 161 return nil 162 } 163 164 func sync() error { 165 return syscall.Sync() 166 } 167 168 func unshareNetNamespace() (int, int, error) { 169 return -1, -1, syscall.ENOTSUP 170 } 171 172 func unshareMountNamespace() error { 173 return syscall.ENOTSUP 174 }