.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / sys@v0.0.0-20210124154548-22da62e12c0c / unix / sockcmsg_unix_other.go
1 // Copyright 2019 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 // +build aix darwin freebsd linux netbsd openbsd solaris
6
7 package unix
8
9 import (
10         "runtime"
11 )
12
13 // Round the length of a raw sockaddr up to align it properly.
14 func cmsgAlignOf(salen int) int {
15         salign := SizeofPtr
16
17         // dragonfly needs to check ABI version at runtime, see cmsgAlignOf in
18         // sockcmsg_dragonfly.go
19         switch runtime.GOOS {
20         case "aix":
21                 // There is no alignment on AIX.
22                 salign = 1
23         case "darwin", "ios", "illumos", "solaris":
24                 // NOTE: It seems like 64-bit Darwin, Illumos and Solaris
25                 // kernels still require 32-bit aligned access to network
26                 // subsystem.
27                 if SizeofPtr == 8 {
28                         salign = 4
29                 }
30         case "netbsd", "openbsd":
31                 // NetBSD and OpenBSD armv7 require 64-bit alignment.
32                 if runtime.GOARCH == "arm" {
33                         salign = 8
34                 }
35                 // NetBSD aarch64 requires 128-bit alignment.
36                 if runtime.GOOS == "netbsd" && runtime.GOARCH == "arm64" {
37                         salign = 16
38                 }
39         }
40
41         return (salen + salign - 1) & ^(salign - 1)
42 }