~ubuntu-branches/ubuntu/utopic/golang/utopic

« back to all changes in this revision

Viewing changes to src/pkg/syscall/syscall_netbsd.go

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2013-08-20 14:06:23 UTC
  • mfrom: (14.1.23 saucy-proposed)
  • Revision ID: package-import@ubuntu.com-20130820140623-b414jfxi3m0qkmrq
Tags: 2:1.1.2-2ubuntu1
* Merge from Debian unstable (LP: #1211749, #1202027). Remaining changes:
  - 016-armhf-elf-header.patch: Use correct ELF header for armhf binaries.
  - d/control,control.cross: Update Breaks/Replaces for Ubuntu
    versions to ensure smooth upgrades, regenerate control file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
        Nlen   uint8
23
23
        Alen   uint8
24
24
        Slen   uint8
25
 
        Data   [24]int8
 
25
        Data   [12]int8
26
26
        raw    RawSockaddrDatalink
27
27
}
28
28
 
29
29
func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno)
30
30
 
 
31
func sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) {
 
32
        var olen uintptr
 
33
 
 
34
        // Get a list of all sysctl nodes below the given MIB by performing
 
35
        // a sysctl for the given MIB with CTL_QUERY appended.
 
36
        mib = append(mib, CTL_QUERY)
 
37
        qnode := Sysctlnode{Flags: SYSCTL_VERS_1}
 
38
        qp := (*byte)(unsafe.Pointer(&qnode))
 
39
        sz := unsafe.Sizeof(qnode)
 
40
        if err = sysctl(mib, nil, &olen, qp, sz); err != nil {
 
41
                return nil, err
 
42
        }
 
43
 
 
44
        // Now that we know the size, get the actual nodes.
 
45
        nodes = make([]Sysctlnode, olen/sz)
 
46
        np := (*byte)(unsafe.Pointer(&nodes[0]))
 
47
        if err = sysctl(mib, np, &olen, qp, sz); err != nil {
 
48
                return nil, err
 
49
        }
 
50
 
 
51
        return nodes, nil
 
52
}
 
53
 
31
54
func nametomib(name string) (mib []_C_int, err error) {
32
 
        return nil, EINVAL
 
55
 
 
56
        // Split name into components.
 
57
        var parts []string
 
58
        last := 0
 
59
        for i := 0; i < len(name); i++ {
 
60
                if name[i] == '.' {
 
61
                        parts = append(parts, name[last:i])
 
62
                        last = i + 1
 
63
                }
 
64
        }
 
65
        parts = append(parts, name[last:])
 
66
 
 
67
        // Discover the nodes and construct the MIB OID.
 
68
        for partno, part := range parts {
 
69
                nodes, err := sysctlNodes(mib)
 
70
                if err != nil {
 
71
                        return nil, err
 
72
                }
 
73
                for _, node := range nodes {
 
74
                        n := make([]byte, 0)
 
75
                        for i := range node.Name {
 
76
                                if node.Name[i] != 0 {
 
77
                                        n = append(n, byte(node.Name[i]))
 
78
                                }
 
79
                        }
 
80
                        if string(n) == part {
 
81
                                mib = append(mib, _C_int(node.Num))
 
82
                                break
 
83
                        }
 
84
                }
 
85
                if len(mib) != partno+1 {
 
86
                        return nil, EINVAL
 
87
                }
 
88
        }
 
89
 
 
90
        return mib, nil
33
91
}
34
92
 
35
93
// ParseDirent parses up to max directory entries in buf,
60
118
        return origlen - len(buf), count, names
61
119
}
62
120
 
63
 
//sysnb pipe2(p *[2]_C_int, flags _C_int) (err error)
 
121
//sysnb pipe() (fd1 int, fd2 int, err error)
64
122
func Pipe(p []int) (err error) {
65
123
        if len(p) != 2 {
66
124
                return EINVAL
67
125
        }
68
 
        var pp [2]_C_int
69
 
        err = pipe2(&pp, 0)
70
 
        p[0] = int(pp[0])
71
 
        p[1] = int(pp[1])
 
126
        p[0], p[1], err = pipe()
72
127
        return
73
128
}
74
129
 
78
133
}
79
134
 
80
135
// TODO
81
 
func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
 
136
func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
82
137
        return -1, ENOSYS
83
138
}
84
139
 
97
152
//sysnb Dup2(from int, to int) (err error)
98
153
//sys   Exit(code int)
99
154
//sys   Fchdir(fd int) (err error)
100
 
//sys   Fchflags(path string, flags int) (err error)
 
155
//sys   Fchflags(fd int, flags int) (err error)
101
156
//sys   Fchmod(fd int, mode uint32) (err error)
102
157
//sys   Fchown(fd int, uid int, gid int) (err error)
103
158
//sys   Flock(fd int, how int) (err error)
133
188
//sys   Pathconf(path string, name int) (val int, err error)
134
189
//sys   Pread(fd int, p []byte, offset int64) (n int, err error)
135
190
//sys   Pwrite(fd int, p []byte, offset int64) (n int, err error)
136
 
//sys   Read(fd int, p []byte) (n int, err error)
 
191
//sys   read(fd int, p []byte) (n int, err error)
137
192
//sys   Readlink(path string, buf []byte) (n int, err error)
138
193
//sys   Rename(from string, to string) (err error)
139
194
//sys   Revoke(path string) (err error)
158
213
//sys   Umask(newmask int) (oldmask int)
159
214
//sys   Unlink(path string) (err error)
160
215
//sys   Unmount(path string, flags int) (err error)
161
 
//sys   Write(fd int, p []byte) (n int, err error)
 
216
//sys   write(fd int, p []byte) (n int, err error)
162
217
//sys   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
163
218
//sys   munmap(addr uintptr, length uintptr) (err error)
164
 
//sys   read(fd int, buf *byte, nbuf int) (n int, err error)
165
 
//sys   write(fd int, buf *byte, nbuf int) (n int, err error)
 
219
//sys   readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
 
220
//sys   writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
166
221
 
167
222
/*
168
223
 * Unimplemented