├── .circleci
└── config.yml
├── .gitignore
├── Dockerfile
├── Gopkg.lock
├── Gopkg.toml
├── LICENSE
├── README.MD
├── build_image.sh
├── common
├── template.go
└── template_test.go
├── config.yaml
├── example
└── simple-http-config.yml
├── middlewares
├── http.go
├── master.go
├── metrics.go
├── mysql.go
└── mysql_test.go
├── timing.go
├── timing_request-k8s.yaml
├── timing_test.go
├── types
├── types.go
└── types_test.go
└── vendor
├── github.com
├── beorn7
│ └── perks
│ │ ├── LICENSE
│ │ └── quantile
│ │ ├── exampledata.txt
│ │ └── stream.go
├── bitly
│ └── go-simplejson
│ │ ├── .travis.yml
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── simplejson.go
│ │ ├── simplejson_go10.go
│ │ └── simplejson_go11.go
├── fsnotify
│ └── fsnotify
│ │ ├── .editorconfig
│ │ ├── .gitignore
│ │ ├── .travis.yml
│ │ ├── AUTHORS
│ │ ├── CHANGELOG.md
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── fen.go
│ │ ├── fsnotify.go
│ │ ├── inotify.go
│ │ ├── inotify_poller.go
│ │ ├── kqueue.go
│ │ ├── open_mode_bsd.go
│ │ ├── open_mode_darwin.go
│ │ └── windows.go
├── go-sql-driver
│ └── mysql
│ │ ├── .gitignore
│ │ ├── .travis.yml
│ │ ├── AUTHORS
│ │ ├── CHANGELOG.md
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── appengine.go
│ │ ├── auth.go
│ │ ├── buffer.go
│ │ ├── collations.go
│ │ ├── connection.go
│ │ ├── connection_go18.go
│ │ ├── const.go
│ │ ├── driver.go
│ │ ├── dsn.go
│ │ ├── errors.go
│ │ ├── fields.go
│ │ ├── infile.go
│ │ ├── packets.go
│ │ ├── result.go
│ │ ├── rows.go
│ │ ├── statement.go
│ │ ├── transaction.go
│ │ ├── utils.go
│ │ ├── utils_go17.go
│ │ └── utils_go18.go
├── golang
│ ├── glog
│ │ ├── LICENSE
│ │ ├── README
│ │ ├── glog.go
│ │ └── glog_file.go
│ └── protobuf
│ │ ├── AUTHORS
│ │ ├── CONTRIBUTORS
│ │ ├── LICENSE
│ │ └── proto
│ │ ├── clone.go
│ │ ├── decode.go
│ │ ├── discard.go
│ │ ├── encode.go
│ │ ├── equal.go
│ │ ├── extensions.go
│ │ ├── lib.go
│ │ ├── message_set.go
│ │ ├── pointer_reflect.go
│ │ ├── pointer_unsafe.go
│ │ ├── properties.go
│ │ ├── table_marshal.go
│ │ ├── table_merge.go
│ │ ├── table_unmarshal.go
│ │ ├── text.go
│ │ └── text_parser.go
├── matttproud
│ └── golang_protobuf_extensions
│ │ ├── LICENSE
│ │ ├── NOTICE
│ │ └── pbutil
│ │ ├── .gitignore
│ │ ├── Makefile
│ │ ├── decode.go
│ │ ├── doc.go
│ │ └── encode.go
├── prometheus
│ ├── client_golang
│ │ ├── AUTHORS.md
│ │ ├── LICENSE
│ │ ├── NOTICE
│ │ └── prometheus
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── collector.go
│ │ │ ├── counter.go
│ │ │ ├── desc.go
│ │ │ ├── doc.go
│ │ │ ├── expvar_collector.go
│ │ │ ├── fnv.go
│ │ │ ├── gauge.go
│ │ │ ├── go_collector.go
│ │ │ ├── histogram.go
│ │ │ ├── http.go
│ │ │ ├── metric.go
│ │ │ ├── process_collector.go
│ │ │ ├── promhttp
│ │ │ └── http.go
│ │ │ ├── registry.go
│ │ │ ├── summary.go
│ │ │ ├── untyped.go
│ │ │ ├── value.go
│ │ │ └── vec.go
│ ├── client_model
│ │ ├── LICENSE
│ │ ├── NOTICE
│ │ ├── go
│ │ │ └── metrics.pb.go
│ │ └── ruby
│ │ │ └── LICENSE
│ ├── common
│ │ ├── LICENSE
│ │ ├── NOTICE
│ │ ├── expfmt
│ │ │ ├── decode.go
│ │ │ ├── encode.go
│ │ │ ├── expfmt.go
│ │ │ ├── fuzz.go
│ │ │ ├── text_create.go
│ │ │ └── text_parse.go
│ │ ├── internal
│ │ │ └── bitbucket.org
│ │ │ │ └── ww
│ │ │ │ └── goautoneg
│ │ │ │ ├── README.txt
│ │ │ │ └── autoneg.go
│ │ └── model
│ │ │ ├── alert.go
│ │ │ ├── fingerprinting.go
│ │ │ ├── fnv.go
│ │ │ ├── labels.go
│ │ │ ├── labelset.go
│ │ │ ├── metric.go
│ │ │ ├── model.go
│ │ │ ├── signature.go
│ │ │ ├── silence.go
│ │ │ ├── time.go
│ │ │ └── value.go
│ └── procfs
│ │ ├── .gitignore
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── MAINTAINERS.md
│ │ ├── Makefile
│ │ ├── Makefile.common
│ │ ├── NOTICE
│ │ ├── README.md
│ │ ├── buddyinfo.go
│ │ ├── doc.go
│ │ ├── fixtures.ttar
│ │ ├── fs.go
│ │ ├── go.mod
│ │ ├── internal
│ │ └── util
│ │ │ ├── parse.go
│ │ │ └── sysreadfile_linux.go
│ │ ├── ipvs.go
│ │ ├── mdstat.go
│ │ ├── mountstats.go
│ │ ├── net_dev.go
│ │ ├── nfs
│ │ ├── nfs.go
│ │ ├── parse.go
│ │ ├── parse_nfs.go
│ │ └── parse_nfsd.go
│ │ ├── proc.go
│ │ ├── proc_io.go
│ │ ├── proc_limits.go
│ │ ├── proc_ns.go
│ │ ├── proc_stat.go
│ │ ├── stat.go
│ │ ├── ttar
│ │ ├── xfrm.go
│ │ └── xfs
│ │ ├── parse.go
│ │ └── xfs.go
└── vinkdong
│ └── gox
│ ├── LICENSE
│ ├── log
│ └── log.go
│ └── vtime
│ ├── time.go
│ └── types.go
├── golang.org
└── x
│ └── sys
│ ├── AUTHORS
│ ├── CONTRIBUTORS
│ ├── LICENSE
│ ├── PATENTS
│ └── unix
│ ├── .gitignore
│ ├── README.md
│ ├── affinity_linux.go
│ ├── aliases.go
│ ├── asm_aix_ppc64.s
│ ├── asm_darwin_386.s
│ ├── asm_darwin_amd64.s
│ ├── asm_darwin_arm.s
│ ├── asm_darwin_arm64.s
│ ├── asm_dragonfly_amd64.s
│ ├── asm_freebsd_386.s
│ ├── asm_freebsd_amd64.s
│ ├── asm_freebsd_arm.s
│ ├── asm_freebsd_arm64.s
│ ├── asm_linux_386.s
│ ├── asm_linux_amd64.s
│ ├── asm_linux_arm.s
│ ├── asm_linux_arm64.s
│ ├── asm_linux_mips64x.s
│ ├── asm_linux_mipsx.s
│ ├── asm_linux_ppc64x.s
│ ├── asm_linux_s390x.s
│ ├── asm_netbsd_386.s
│ ├── asm_netbsd_amd64.s
│ ├── asm_netbsd_arm.s
│ ├── asm_openbsd_386.s
│ ├── asm_openbsd_amd64.s
│ ├── asm_openbsd_arm.s
│ ├── asm_solaris_amd64.s
│ ├── bluetooth_linux.go
│ ├── cap_freebsd.go
│ ├── constants.go
│ ├── dev_aix_ppc.go
│ ├── dev_aix_ppc64.go
│ ├── dev_darwin.go
│ ├── dev_dragonfly.go
│ ├── dev_freebsd.go
│ ├── dev_linux.go
│ ├── dev_netbsd.go
│ ├── dev_openbsd.go
│ ├── dirent.go
│ ├── endian_big.go
│ ├── endian_little.go
│ ├── env_unix.go
│ ├── errors_freebsd_386.go
│ ├── errors_freebsd_amd64.go
│ ├── errors_freebsd_arm.go
│ ├── fcntl.go
│ ├── fcntl_darwin.go
│ ├── fcntl_linux_32bit.go
│ ├── gccgo.go
│ ├── gccgo_c.c
│ ├── gccgo_linux_amd64.go
│ ├── ioctl.go
│ ├── mkall.sh
│ ├── mkasm_darwin.go
│ ├── mkerrors.sh
│ ├── mkpost.go
│ ├── mksyscall.go
│ ├── mksyscall_aix_ppc.go
│ ├── mksyscall_aix_ppc64.pl
│ ├── mksyscall_solaris.pl
│ ├── mksysctl_openbsd.pl
│ ├── mksysnum.go
│ ├── openbsd_pledge.go
│ ├── openbsd_unveil.go
│ ├── pagesize_unix.go
│ ├── race.go
│ ├── race0.go
│ ├── sockcmsg_linux.go
│ ├── sockcmsg_unix.go
│ ├── str.go
│ ├── syscall.go
│ ├── syscall_aix.go
│ ├── syscall_aix_ppc.go
│ ├── syscall_aix_ppc64.go
│ ├── syscall_bsd.go
│ ├── syscall_darwin.go
│ ├── syscall_darwin_386.go
│ ├── syscall_darwin_amd64.go
│ ├── syscall_darwin_arm.go
│ ├── syscall_darwin_arm64.go
│ ├── syscall_darwin_libSystem.go
│ ├── syscall_dragonfly.go
│ ├── syscall_dragonfly_amd64.go
│ ├── syscall_freebsd.go
│ ├── syscall_freebsd_386.go
│ ├── syscall_freebsd_amd64.go
│ ├── syscall_freebsd_arm.go
│ ├── syscall_freebsd_arm64.go
│ ├── syscall_linux.go
│ ├── syscall_linux_386.go
│ ├── syscall_linux_amd64.go
│ ├── syscall_linux_amd64_gc.go
│ ├── syscall_linux_arm.go
│ ├── syscall_linux_arm64.go
│ ├── syscall_linux_gc.go
│ ├── syscall_linux_gc_386.go
│ ├── syscall_linux_gccgo_386.go
│ ├── syscall_linux_gccgo_arm.go
│ ├── syscall_linux_mips64x.go
│ ├── syscall_linux_mipsx.go
│ ├── syscall_linux_ppc64x.go
│ ├── syscall_linux_riscv64.go
│ ├── syscall_linux_s390x.go
│ ├── syscall_linux_sparc64.go
│ ├── syscall_netbsd.go
│ ├── syscall_netbsd_386.go
│ ├── syscall_netbsd_amd64.go
│ ├── syscall_netbsd_arm.go
│ ├── syscall_openbsd.go
│ ├── syscall_openbsd_386.go
│ ├── syscall_openbsd_amd64.go
│ ├── syscall_openbsd_arm.go
│ ├── syscall_solaris.go
│ ├── syscall_solaris_amd64.go
│ ├── syscall_unix.go
│ ├── syscall_unix_gc.go
│ ├── syscall_unix_gc_ppc64x.go
│ ├── timestruct.go
│ ├── types_aix.go
│ ├── types_darwin.go
│ ├── types_dragonfly.go
│ ├── types_freebsd.go
│ ├── types_netbsd.go
│ ├── types_openbsd.go
│ ├── types_solaris.go
│ ├── xattr_bsd.go
│ ├── zerrors_aix_ppc.go
│ ├── zerrors_aix_ppc64.go
│ ├── zerrors_darwin_386.go
│ ├── zerrors_darwin_amd64.go
│ ├── zerrors_darwin_arm.go
│ ├── zerrors_darwin_arm64.go
│ ├── zerrors_dragonfly_amd64.go
│ ├── zerrors_freebsd_386.go
│ ├── zerrors_freebsd_amd64.go
│ ├── zerrors_freebsd_arm.go
│ ├── zerrors_freebsd_arm64.go
│ ├── zerrors_linux_386.go
│ ├── zerrors_linux_amd64.go
│ ├── zerrors_linux_arm.go
│ ├── zerrors_linux_arm64.go
│ ├── zerrors_linux_mips.go
│ ├── zerrors_linux_mips64.go
│ ├── zerrors_linux_mips64le.go
│ ├── zerrors_linux_mipsle.go
│ ├── zerrors_linux_ppc64.go
│ ├── zerrors_linux_ppc64le.go
│ ├── zerrors_linux_riscv64.go
│ ├── zerrors_linux_s390x.go
│ ├── zerrors_linux_sparc64.go
│ ├── zerrors_netbsd_386.go
│ ├── zerrors_netbsd_amd64.go
│ ├── zerrors_netbsd_arm.go
│ ├── zerrors_openbsd_386.go
│ ├── zerrors_openbsd_amd64.go
│ ├── zerrors_openbsd_arm.go
│ ├── zerrors_solaris_amd64.go
│ ├── zptrace386_linux.go
│ ├── zptracearm_linux.go
│ ├── zptracemips_linux.go
│ ├── zptracemipsle_linux.go
│ ├── zsyscall_aix_ppc.go
│ ├── zsyscall_aix_ppc64.go
│ ├── zsyscall_aix_ppc64_gc.go
│ ├── zsyscall_aix_ppc64_gccgo.go
│ ├── zsyscall_darwin_386.1_11.go
│ ├── zsyscall_darwin_386.go
│ ├── zsyscall_darwin_386.s
│ ├── zsyscall_darwin_amd64.1_11.go
│ ├── zsyscall_darwin_amd64.go
│ ├── zsyscall_darwin_amd64.s
│ ├── zsyscall_darwin_arm.1_11.go
│ ├── zsyscall_darwin_arm.go
│ ├── zsyscall_darwin_arm.s
│ ├── zsyscall_darwin_arm64.1_11.go
│ ├── zsyscall_darwin_arm64.go
│ ├── zsyscall_darwin_arm64.s
│ ├── zsyscall_dragonfly_amd64.go
│ ├── zsyscall_freebsd_386.go
│ ├── zsyscall_freebsd_amd64.go
│ ├── zsyscall_freebsd_arm.go
│ ├── zsyscall_freebsd_arm64.go
│ ├── zsyscall_linux_386.go
│ ├── zsyscall_linux_amd64.go
│ ├── zsyscall_linux_arm.go
│ ├── zsyscall_linux_arm64.go
│ ├── zsyscall_linux_mips.go
│ ├── zsyscall_linux_mips64.go
│ ├── zsyscall_linux_mips64le.go
│ ├── zsyscall_linux_mipsle.go
│ ├── zsyscall_linux_ppc64.go
│ ├── zsyscall_linux_ppc64le.go
│ ├── zsyscall_linux_riscv64.go
│ ├── zsyscall_linux_s390x.go
│ ├── zsyscall_linux_sparc64.go
│ ├── zsyscall_netbsd_386.go
│ ├── zsyscall_netbsd_amd64.go
│ ├── zsyscall_netbsd_arm.go
│ ├── zsyscall_openbsd_386.go
│ ├── zsyscall_openbsd_amd64.go
│ ├── zsyscall_openbsd_arm.go
│ ├── zsyscall_solaris_amd64.go
│ ├── zsysctl_openbsd_386.go
│ ├── zsysctl_openbsd_amd64.go
│ ├── zsysctl_openbsd_arm.go
│ ├── zsysnum_darwin_386.go
│ ├── zsysnum_darwin_amd64.go
│ ├── zsysnum_darwin_arm.go
│ ├── zsysnum_darwin_arm64.go
│ ├── zsysnum_dragonfly_amd64.go
│ ├── zsysnum_freebsd_386.go
│ ├── zsysnum_freebsd_amd64.go
│ ├── zsysnum_freebsd_arm.go
│ ├── zsysnum_freebsd_arm64.go
│ ├── zsysnum_linux_386.go
│ ├── zsysnum_linux_amd64.go
│ ├── zsysnum_linux_arm.go
│ ├── zsysnum_linux_arm64.go
│ ├── zsysnum_linux_mips.go
│ ├── zsysnum_linux_mips64.go
│ ├── zsysnum_linux_mips64le.go
│ ├── zsysnum_linux_mipsle.go
│ ├── zsysnum_linux_ppc64.go
│ ├── zsysnum_linux_ppc64le.go
│ ├── zsysnum_linux_riscv64.go
│ ├── zsysnum_linux_s390x.go
│ ├── zsysnum_linux_sparc64.go
│ ├── zsysnum_netbsd_386.go
│ ├── zsysnum_netbsd_amd64.go
│ ├── zsysnum_netbsd_arm.go
│ ├── zsysnum_openbsd_386.go
│ ├── zsysnum_openbsd_amd64.go
│ ├── zsysnum_openbsd_arm.go
│ ├── ztypes_aix_ppc.go
│ ├── ztypes_aix_ppc64.go
│ ├── ztypes_darwin_386.go
│ ├── ztypes_darwin_amd64.go
│ ├── ztypes_darwin_arm.go
│ ├── ztypes_darwin_arm64.go
│ ├── ztypes_dragonfly_amd64.go
│ ├── ztypes_freebsd_386.go
│ ├── ztypes_freebsd_amd64.go
│ ├── ztypes_freebsd_arm.go
│ ├── ztypes_freebsd_arm64.go
│ ├── ztypes_linux_386.go
│ ├── ztypes_linux_amd64.go
│ ├── ztypes_linux_arm.go
│ ├── ztypes_linux_arm64.go
│ ├── ztypes_linux_mips.go
│ ├── ztypes_linux_mips64.go
│ ├── ztypes_linux_mips64le.go
│ ├── ztypes_linux_mipsle.go
│ ├── ztypes_linux_ppc64.go
│ ├── ztypes_linux_ppc64le.go
│ ├── ztypes_linux_riscv64.go
│ ├── ztypes_linux_s390x.go
│ ├── ztypes_linux_sparc64.go
│ ├── ztypes_netbsd_386.go
│ ├── ztypes_netbsd_amd64.go
│ ├── ztypes_netbsd_arm.go
│ ├── ztypes_openbsd_386.go
│ ├── ztypes_openbsd_amd64.go
│ ├── ztypes_openbsd_arm.go
│ └── ztypes_solaris_amd64.go
├── google.golang.org
└── appengine
│ ├── LICENSE
│ └── cloudsql
│ ├── cloudsql.go
│ ├── cloudsql_classic.go
│ └── cloudsql_vm.go
└── gopkg.in
└── yaml.v2
├── .travis.yml
├── LICENSE
├── LICENSE.libyaml
├── NOTICE
├── README.md
├── apic.go
├── decode.go
├── emitterc.go
├── encode.go
├── go.mod
├── parserc.go
├── readerc.go
├── resolve.go
├── scannerc.go
├── sorter.go
├── writerc.go
├── yaml.go
├── yamlh.go
└── yamlprivateh.go
/.circleci/config.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | jobs:
3 | build:
4 | docker:
5 | - image: circleci/golang:1.8
6 | working_directory: /go/src/github.com/vinkdong/timing
7 |
8 | steps:
9 | - checkout
10 |
11 | - run: go get -d
12 | - run: go build -o timing
13 |
14 | - setup_remote_docker:
15 | version: 17.05.0-ce
16 |
17 | - run: |
18 | docker build -t vinkdong/timing .
19 | docker login -u $REPO_USER -p $REPO_PASS
20 | docker push vinkdong/timing
21 |
22 | test:
23 | build:
24 | docker:
25 | - image: circleci/golang:1.8.1
26 | steps:
27 | - checkout
28 | - run:
29 | name: Test
30 | command: go test -v ./...
31 |
32 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM golang:1.11.4-alpine3.8 as builder
2 | WORKDIR /go/src/github.com/vinkdong/timing
3 | ADD . .
4 |
5 | RUN \
6 | apk add gcc build-base
7 | RUN \
8 | go build .
9 |
10 |
11 | FROM alpine:latest
12 | RUN \
13 | mkdir timingconf && \
14 | apk add libc6-compat
15 |
16 | RUN \
17 | set -ex \
18 | && apk add --no-cache ca-certificates
19 |
20 | COPY --from=builder /go/src/github.com/vinkdong/timing/timing /timing
21 |
22 | COPY config.yaml /etc/config.yml
23 | EXPOSE 9980
24 | CMD [ "./timing","--conf","/etc/config.yml","--enable_metrics" ]
--------------------------------------------------------------------------------
/Gopkg.toml:
--------------------------------------------------------------------------------
1 | # Gopkg.toml example
2 | #
3 | # Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md
4 | # for detailed Gopkg.toml documentation.
5 | #
6 | # required = ["github.com/user/thing/cmd/thing"]
7 | # ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
8 | #
9 | # [[constraint]]
10 | # name = "github.com/user/project"
11 | # version = "1.0.0"
12 | #
13 | # [[constraint]]
14 | # name = "github.com/user/project2"
15 | # branch = "dev"
16 | # source = "github.com/myfork/project2"
17 | #
18 | # [[override]]
19 | # name = "github.com/x/y"
20 | # version = "2.4.0"
21 | #
22 | # [prune]
23 | # non-go = false
24 | # go-tests = true
25 | # unused-packages = true
26 |
27 |
28 | [[constraint]]
29 | name = "github.com/bitly/go-simplejson"
30 | version = "0.5.0"
31 |
32 | [[constraint]]
33 | name = "github.com/go-sql-driver/mysql"
34 | version = "1.3.0"
35 |
36 | [[constraint]]
37 | name = "github.com/prometheus/client_golang"
38 | version = "0.8.0"
39 |
40 | [[constraint]]
41 | branch = "master"
42 | name = "github.com/vinkdong/gox"
43 |
44 | [[constraint]]
45 | branch = "v2"
46 | name = "gopkg.in/yaml.v2"
47 |
48 | [prune]
49 | go-tests = true
50 | unused-packages = true
51 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.MD:
--------------------------------------------------------------------------------
1 | # Timing Request
2 |
3 | [](https://circleci.com/gh/vinkdong/timing/tree/master)
4 |
5 | ## Introduction
6 |
7 | Timing is used for send http request timing
8 |
9 | ## Quick Start
10 |
11 | - get code
12 |
13 | ```bash
14 | go get -v github.com/vinkdong/timing
15 | ```
16 |
17 | - build execute file
18 |
19 | ```bash
20 | go build
21 | ```
22 |
23 | - edit config file
24 |
25 | you can find a example conf file at [`./config.yaml`](https://github.com/VinkDong/TimingRequest/blob/master/config.yaml), config file is under the yaml format you can use follow keys:
26 |
27 | - url: address you want requested
28 | - method: request method you need
29 | - body: request body, if you have 2 or more bodies it will send with difference body
30 | - range: special time period you want to send request, you can use `hour`,`minute`,`second`,`microseconds`,`month` and `weekday`, from now,then you can use `gt`,`lt`,`gte`,`lte` and `eq` as condition,they're AND relationship,Time is UTC time, and Sunday in weekday is `0`, Monday is `1` by parity of reasoning.
31 | - run_every: interval time for wait next request, you can use `seconds`,`minutes`,`hours` and `days`,if there have 2 or more, they're AND relationship too.
32 | - log_response: whether log response body
33 | - using go templete in request uri and body such as `{{ .RenderRelativeTime "now-15h" "2006-01-02" }}`
34 | - auto reload config when config file changed
35 |
36 | in additional, you can use multi yaml split `---` as multi request entities
37 |
38 | - start program
39 |
40 | ```bash
41 | ./timing --conf path/your/config
42 | ```
43 |
44 | BTW, your can use `--help` to display help information
45 |
46 | ## Monitoring with prometheus
47 |
48 | you can monitoring this process via prometheus, this is a experimental
49 |
50 | - start with prometheus monitoring
51 |
52 | ```bash
53 | .timing --conf path/your/config -enable_metrics --addr :9800
54 | ```
55 |
56 | - additional arguments
57 |
58 | - buckets: prometheus buckets, default is `0.1, 0.3, 1.2, 5.0`
59 |
60 | - then your can scape metrics by prometheus
61 |
62 | ```yaml
63 | scrape_configs:
64 | - job_name: 'TimingRequest'
65 | static_configs:
66 | - targets:
67 | - '127.0.0.1:9800'
68 | ```
69 |
--------------------------------------------------------------------------------
/build_image.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 | GOOS=linux GOARCH=amd64 go build timing.go
3 | docker build -t timing .
--------------------------------------------------------------------------------
/common/template.go:
--------------------------------------------------------------------------------
1 | package common
2 |
3 | import (
4 | "regexp"
5 | "fmt"
6 | "strings"
7 | "text/template"
8 | "github.com/vinkdong/gox/log"
9 | "github.com/vinkdong/gox/vtime"
10 | "bytes"
11 | "time"
12 | )
13 |
14 | const templateSpec = "vk.[a-z].[a-z]+(\\{[a-z0-9A-Z\\.]+\\})?"
15 | const TEMPLATE = " vk.[a-z]+(.[a-z]+)?(\\{[a-z0-9A-Z\\.]+\\})? "
16 | const templateFuc = "(list|random)"
17 |
18 | type VTemplate struct {
19 | origin string
20 | result string
21 | register map[string]string
22 | Time vtime.Time
23 | }
24 |
25 | type Register struct {
26 | start string
27 | end string
28 | next string
29 | }
30 |
31 | func (t *VTemplate) RenderTime(format string) string {
32 | return time.Now().Format(format)
33 | }
34 |
35 | func (t *VTemplate) RenderRelativeTime(formula, format string) string {
36 | vt := vtime.Time{}
37 | vt.FromRelativeTime(formula)
38 | return vt.Time.Format(format)
39 | }
40 |
41 |
42 | func (t *VTemplate) Execute(origin string) string {
43 | if checkTemplate(origin){
44 | t.execute(origin)
45 | }
46 | return t.renderOriginTemplate(origin)
47 | }
48 |
49 | /**
50 | use official template
51 | */
52 | func (t *VTemplate) renderOriginTemplate(origin string) string {
53 | tmpl, err := template.New("origin").Parse(origin)
54 | if err != nil {
55 | log.Error(err)
56 | return origin
57 | }
58 | br := &bytes.Buffer{}
59 | err = tmpl.Execute(br, t)
60 | if err != nil {
61 | log.Error(err)
62 | return origin
63 | }
64 | return br.String()
65 | }
66 |
67 | func (t *VTemplate) execute(origin string) string {
68 | val, pos := RegisterTemplate(origin)
69 | for index, v := range val {
70 | fmt.Println(pos,index,v)
71 | }
72 | return ""
73 | }
74 |
75 | func (t *VTemplate) splitTemplate(template string) {
76 | reg := regexp.MustCompile(templateSpec)
77 | if reg.MatchString(template) {
78 | t.processSpec(template)
79 | } else {
80 | process(template)
81 | }
82 | }
83 |
84 |
85 |
86 | func (t *VTemplate) processSpec(template string) {
87 | tmpList := strings.Split(template,".")
88 | register := tmpList[1]
89 | t.register[register] = ""
90 | }
91 |
92 |
93 |
94 | func process(template string) {
95 |
96 | }
97 |
98 |
99 | // split as list{} and list
100 | func SplitFucArgs(mixed string){
101 | reg := regexp.MustCompile(templateFuc)
102 | for k,v := range "abcdefg"{
103 | fmt.Println(k,v,reg)
104 | }
105 | }
106 |
107 | func checkTemplate(origin string) bool {
108 | reg := regexp.MustCompile(TEMPLATE)
109 | return reg.MatchString(origin)
110 | }
111 |
112 | func randomInt(start, end int) {
113 |
114 | }
115 |
116 | func randomString(string, end string) {
117 |
118 | }
119 |
120 | func RegisterTemplate(origin string) ([]string, [][]int) {
121 | reg := regexp.MustCompile(TEMPLATE)
122 | return reg.FindAllString(origin, -1), reg.FindAllStringIndex(origin, -1)
123 | }
124 |
--------------------------------------------------------------------------------
/common/template_test.go:
--------------------------------------------------------------------------------
1 | package common
2 |
3 | import (
4 | "testing"
5 | "fmt"
6 | "github.com/vinkdong/gox/vtime"
7 | "time"
8 | "regexp"
9 | )
10 |
11 | func TestCheckExistTemplate(t *testing.T) {
12 | origin := "this is a test vk.a.list{1..2} and this is vk.random{1..3} and this is vk.random "
13 | fmt.Println(RegisterTemplate(origin))
14 | }
15 |
16 | func TestExecute(t *testing.T){
17 |
18 | }
19 |
20 | func TestSplitFucArgs(t *testing.T) {
21 | SplitFucArgs("la go la")
22 | }
23 |
24 | func TestVTemplate_Execute(t *testing.T) {
25 | vt := VTemplate{Time: vtime.Time{Time: time.Now()}}
26 | result := vt.Execute(`this is a test string {{ .RenderRelativeTime "now-15h" "2006-01-02" }}`)
27 | reg := regexp.MustCompile("this is a test string \\d{4}-\\d{2}-\\d{2}")
28 | if !reg.MatchString(result){
29 | t.Errorf("not much, got: %s",result)
30 | }
31 | }
--------------------------------------------------------------------------------
/config.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | url: http://example.com/receive
3 | method: PUT
4 | header:
5 | Accept: application/json, text/plain, */*
6 | Referer: http://vinkdong.com/
7 | body:
8 | bodyone: |
9 | {
10 | "properties": {
11 | "ServerIP": {
12 | "type": "text",
13 | "fielddata": true
14 | }
15 | }
16 | }
17 | bodytwo: |
18 | {
19 | "properties": {
20 | "ServerIP": {
21 | "type": "text",
22 | "fielddata": true
23 | }
24 | }
25 | }
26 | log_response: false
27 | range:
28 | hour:
29 | gte: 0
30 | lte: 13
31 | run_every:
32 | seconds: 30
33 | checker:
34 | - type: json
35 | rule:
36 | - $.status = "green"
37 | - $.number_of_data_nodes = 2
38 |
39 | ---
40 | url: https://vinkdong.com/{{ .RenderRelativeTime "now-15h" "2006-01-02" }}
41 | method: GET
42 | header:
43 | Accept: application/json, text/plain, */*
44 | Referer: http://vinkdong.com/
45 | body:
46 | bodyone2: |
47 | {
48 | "properties": {
49 | "ServerIP": {
50 | "type": "text",
51 | "fielddata": true
52 | }
53 | }
54 | }
55 | range:
56 | hour:
57 | gte: 8
58 | lte: 13
59 | month:
60 | gte: 10
61 | lte: 12
62 | weekday:
63 | gte: 0
64 | lte: 5
65 | run_every:
66 | seconds: 30
67 |
68 | #---
69 | # type: database
70 | # database:
71 | # type: mysql
72 | # host: 192.168.99.100
73 | # port: 3306
74 | # database: d01
75 | # username: root
76 | # password: admin
77 | # sql:
78 | # execute:
79 | # - INSERT INTO t01 (name, date) VALUES ("zhans",NOW());
80 | # query:
81 | # run_count: 100
82 | # run_thread: 20
83 | #run_every:
84 | # microsecond: 10
--------------------------------------------------------------------------------
/example/simple-http-config.yml:
--------------------------------------------------------------------------------
1 | ---
2 | url: https://vinkdong.com/{{ .RenderRelativeTime "now-15h" "2006-01-02" }}
3 | method: GET
4 | header:
5 | Accept: application/json, text/plain, */*
6 | Referer: http://vinkdong.com/
7 | body:
8 | bodyone2: |
9 | {
10 | "properties": {
11 | "ServerIP": {
12 | "type": "text",
13 | "fielddata": true
14 | }
15 | }
16 | }
17 | range:
18 | hour:
19 | gte: 1
20 | lte: 16
21 | month:
22 | gte: 8
23 | lte: 12
24 | weekday:
25 | gte: 0
26 | lte: 5
27 | run_every:
28 | seconds: 30
--------------------------------------------------------------------------------
/middlewares/http.go:
--------------------------------------------------------------------------------
1 | package middlewares
2 |
3 | import (
4 | "net/http"
5 | "strings"
6 | "time"
7 | "io/ioutil"
8 | "github.com/vinkdong/timing/types"
9 | "github.com/vinkdong/gox/log"
10 | "github.com/vinkdong/timing/common"
11 | "compress/gzip"
12 | "io"
13 | )
14 |
15 | type HttpMiddleware struct {
16 | Name string
17 | Rule *types.Rule
18 | Template common.VTemplate
19 | }
20 |
21 | func (hm *HttpMiddleware) Init(rule *types.Rule) {
22 | hm.Rule = rule
23 | }
24 |
25 | func (hm *HttpMiddleware) Process() {
26 | // render template
27 | hm.Rule.Url = hm.Template.Execute(hm.Rule.Url)
28 | for body := range hm.Rule.Bodies {
29 | log.Infof("%s to %s ... ", hm.Rule.Method, hm.Rule.Url)
30 | hm.SendRequest(*hm.Rule, body)
31 | }
32 | if len(hm.Rule.Bodies) == 0 {
33 | log.Infof("%s to %s ... ", hm.Rule.Method, hm.Rule.Url)
34 | hm.SendRequest(*hm.Rule, "")
35 | }
36 | }
37 |
38 | /**
39 | send http request
40 | */
41 | func (hm *HttpMiddleware) SendRequest(r types.Rule, entity string) {
42 | client := &http.Client{}
43 | body := r.Bodies[entity]
44 |
45 | //render template
46 | body = hm.Template.Execute(body)
47 | req, err := http.NewRequest(r.Method, r.Url, strings.NewReader(body))
48 | for k, v := range r.Headers {
49 | req.Header.Set(k, v)
50 | }
51 | if err != nil {
52 | log.Error(err)
53 | return
54 | }
55 | start := time.Now()
56 | resp, err := client.Do(req)
57 | ProcessMiddleware(err, resp, r, entity, start)
58 | if err != nil {
59 | return
60 | }
61 |
62 | if r.LogResp {
63 | var r io.Reader
64 | switch resp.Header.Get("Content-Encoding") {
65 | case "gzip":
66 | r, err = gzip.NewReader(resp.Body)
67 | if err != nil {
68 | log.Error(err)
69 | }
70 | default:
71 | r = resp.Body
72 | }
73 |
74 | data, err := ioutil.ReadAll(r)
75 | if err != nil {
76 | log.Error(err)
77 | }
78 | log.Infof("%s", data)
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/middlewares/master.go:
--------------------------------------------------------------------------------
1 | package middlewares
2 |
3 | import (
4 | "net/http"
5 | "strconv"
6 | "github.com/vinkdong/gox/log"
7 | "strings"
8 | "github.com/vinkdong/timing/types"
9 | "time"
10 | )
11 |
12 | type Rule struct {
13 | Method string
14 | Url string
15 | Bodies map[string]string `yaml:"body"`
16 | Range map[string]map[string]int
17 | Every map[string]int `yaml:"run_every"`
18 | LogResp bool `yaml:"log_response"`
19 | Prometheus map[string]string
20 | }
21 |
22 | type Middleware interface {
23 | Process()
24 | Init(rule *types.Rule)
25 | }
26 |
27 | var (
28 | sysEnableMetrics = false
29 | )
30 |
31 | func InitMiddleware(enableMetrics *bool, addr, buckets *string) {
32 | if *enableMetrics {
33 | go startPrometheus(addr)
34 | prometheusInit()
35 | initHistogram(ConvStringListToFloat64List(
36 | strings.Split(strings.Replace(*buckets, " ", "", -1), ",")))
37 | sysEnableMetrics = true
38 | }
39 | }
40 |
41 | func ConvStringListToFloat64List(sList []string) []float64 {
42 | fList := make([]float64, 0)
43 | for _, v := range sList {
44 | unit, err := strconv.ParseFloat(v,64)
45 | if err != nil {
46 | return nil
47 | }
48 | fList = append(fList, unit)
49 | }
50 | return fList
51 | }
52 |
53 | func ProcessMiddleware(err error, resp *http.Response, r types.Rule, entity string, start time.Time) {
54 | url := r.Url
55 | method := r.Method
56 | if err != nil {
57 | log.Error(err)
58 | httpSendFail.WithLabelValues(url, method, entity, "CLIENT_ERR_019")
59 | return
60 | }
61 | resqCode := resp.StatusCode
62 | if sysEnableMetrics {
63 | if resqCode >= 200 && resqCode < 400 {
64 | httpSendSuccess.WithLabelValues(url, method, entity, strconv.Itoa(resqCode)).Inc()
65 | } else {
66 | httpSendFail.WithLabelValues(url, method, entity, strconv.Itoa(resqCode)).Inc()
67 | }
68 | reqDurationHistogram.WithLabelValues(r.Url,r.Method,entity,strconv.Itoa(resqCode)).Observe(time.Since(start).Seconds())
69 | }
70 | }
71 |
72 | func SelectMiddleware(rule *types.Rule) Middleware {
73 | var hd Middleware
74 | if rule.Type == "database" {
75 | switch rule.Database.Type {
76 | case "mysql":
77 | hd = new(MysqlMiddleware)
78 | break
79 | default:
80 | log.Errorf("can't find database of type %s", rule.Database.Type)
81 | }
82 | }
83 | if rule.Type == "" || rule.Type == "http" {
84 | hd = new(HttpMiddleware)
85 | }
86 | hd.Init(rule)
87 | return hd
88 | }
89 |
--------------------------------------------------------------------------------
/middlewares/metrics.go:
--------------------------------------------------------------------------------
1 | package middlewares
2 |
3 | import (
4 | "github.com/prometheus/client_golang/prometheus/promhttp"
5 | "github.com/prometheus/client_golang/prometheus"
6 | "github.com/vinkdong/gox/log"
7 | "net/http"
8 | )
9 |
10 | const (
11 | metricPrefix = "timing_request"
12 | reqSuccessTotalName = metricPrefix + "_success_total"
13 | reqFailTotalName = metricPrefix + "_fail_total"
14 | reqDurationName = metricPrefix + "_duration_seconds"
15 | )
16 |
17 | var (
18 | httpSendSuccess = prometheus.NewCounterVec(
19 | prometheus.CounterOpts{
20 | Help: "HTTP send success counter",
21 | Name: reqSuccessTotalName}, []string{"url", "method", "entity", "respCode"})
22 | httpSendFail = prometheus.NewCounterVec(
23 | prometheus.CounterOpts{
24 | Help: "HTTP send fail counter",
25 | Name: reqFailTotalName}, []string{"url", "method", "entity", "respCode"})
26 | reqDurationHistogram = &prometheus.HistogramVec{}
27 | )
28 |
29 | func initHistogram(buckets []float64) {
30 | reqDurationHistogram = prometheus.NewHistogramVec(prometheus.HistogramOpts{
31 | Name: reqDurationName,
32 | Help: "How long it took to process the request.",
33 | Buckets: buckets,
34 | }, []string{"url", "method", "entity", "respCode"})
35 | prometheus.MustRegister(reqDurationHistogram)
36 | }
37 |
38 | func prometheusInit() {
39 | prometheus.MustRegister(httpSendSuccess)
40 | prometheus.MustRegister(httpSendFail)
41 | }
42 |
43 | func startPrometheus(addr *string) {
44 | http.Handle("/metrics", promhttp.Handler())
45 | log.Info(http.ListenAndServe(*addr, nil))
46 | }
--------------------------------------------------------------------------------
/middlewares/mysql.go:
--------------------------------------------------------------------------------
1 | package middlewares
2 |
3 | import (
4 | "database/sql"
5 | "fmt"
6 | _ "github.com/go-sql-driver/mysql"
7 | "github.com/vinkdong/gox/log"
8 | "github.com/vinkdong/timing/types"
9 | "sync"
10 | "time"
11 | )
12 |
13 | type MysqlMiddleware struct {
14 | Host string
15 | Port int
16 | Database string
17 | Username string
18 | Password string
19 | db *sql.DB
20 | Rule *types.Rule
21 | }
22 |
23 | const mysqlConnectScheme = "%s:%s@tcp(%s:%d)/%s"
24 |
25 | func (m *MysqlMiddleware) Init(rule *types.Rule) {
26 | m.Rule = rule
27 | }
28 |
29 | func (m *MysqlMiddleware) Process() {
30 | if m.Rule.Count != 0 && m.Rule.Executed >= m.Rule.Count {
31 | return
32 | }
33 | m.init()
34 | defer m.db.Close()
35 | for _, sql := range m.Rule.Sql.Execute {
36 | if m.Rule.Thread > 0 {
37 | m.MultiThreadExecute(sql)
38 | }else {
39 | m.Execute(sql)
40 | }
41 | }
42 | }
43 |
44 | func (m *MysqlMiddleware) MultiThreadExecute(sql string) {
45 | var k int16
46 | var wg sync.WaitGroup
47 | wg.Add(int(m.Rule.Thread))
48 | for k = 0; k < m.Rule.Thread; k++ {
49 | go func() {
50 | defer wg.Done()
51 | m.Execute(sql)
52 | }()
53 | }
54 | wg.Wait()
55 | }
56 |
57 | func (m *MysqlMiddleware) checkProcessed() bool {
58 | fmt.Println(m.Rule.Executed)
59 | if m.Rule.Count != 0 && m.Rule.Executed > m.Rule.Count {
60 | spent := time.Now().UnixNano() - m.Rule.Started
61 | thtime := time.Duration(spent) * time.Nanosecond
62 | log.Info("request count is over limit stopped")
63 | log.Infof("spent %s", thtime.String())
64 | return true
65 | }
66 | return false
67 | }
68 |
69 | func (m *MysqlMiddleware) init() {
70 | if m.db != nil{
71 | return
72 | }
73 | dbConfig := m.Rule.Database
74 | db, err := sql.Open("mysql", fmt.Sprintf(mysqlConnectScheme,
75 | dbConfig.Username, dbConfig.Password, dbConfig.Host, dbConfig.Port, dbConfig.Database))
76 | if err != nil {
77 | panic(err.Error())
78 | }
79 | m.db = db
80 | }
81 |
82 | func (m *MysqlMiddleware) Execute(sql string) sql.Result {
83 | if m.checkProcessed(){
84 | log.Info("request count is over limit stopped")
85 | m.Rule.Skip = true
86 | return nil
87 | }
88 | if m.db == nil{
89 | m.init()
90 | }
91 | result, err := m.db.Exec(sql)
92 | if err != nil {
93 | log.Error(err.Error())
94 | } else {
95 | m.Rule.Executed += 1
96 | //log.Info("executed")
97 | }
98 | return result
99 | }
100 |
--------------------------------------------------------------------------------
/middlewares/mysql_test.go:
--------------------------------------------------------------------------------
1 | package middlewares
2 |
3 | import "testing"
4 |
5 | func TestMysqlConnect(t *testing.T) {
6 | m := MysqlMiddleware{Host:"192.168.99.100"}
7 | m.init()
8 | }
--------------------------------------------------------------------------------
/timing_request-k8s.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: v1
3 | kind: ConfigMap
4 | metadata:
5 | name: timing-request
6 | data:
7 | config.yaml: |
8 | ---
9 | url: http://elasticsearch.logging.svc
10 | method: PUT
11 | body:
12 | bodyone: |
13 | {
14 | "properties": {
15 | "ServerIP": {
16 | "type": "text",
17 | "fielddata": true
18 | }
19 | }
20 | }
21 | bodytwo: |
22 | {
23 | "properties": {
24 | "ServerIP": {
25 | "type": "text",
26 | "fielddata": true
27 | }
28 | }
29 | }
30 | range:
31 | hour:
32 | gte: 0
33 | lte: 12
34 | run_every:
35 | minutes: 5
36 |
37 | ---
38 | apiVersion: extensions/v1beta1
39 | kind: Deployment
40 | metadata:
41 | name: timing-request
42 | spec:
43 | replicas: 2
44 | template:
45 | metadata:
46 | labels:
47 | name: timing-request
48 | spec:
49 | volumes:
50 | - name: config
51 | configMap:
52 | name: timing-request
53 | items:
54 | - key: config.yaml
55 | path: config.yaml
56 | defaultMode: 420
57 | containers:
58 | - name: timing-request
59 | image: hand/timing_request
60 | volumeMounts:
61 | - name: config
62 | mountPath: /timingconf
63 | ports:
64 | - containerPort: 9800
65 | protocol: TCP
66 |
67 | ---
68 | kind: Service
69 | apiVersion: v1
70 | metadata:
71 | labels:
72 | app: timing-request
73 | annotations:
74 | prometheus.io/scrape: 'true'
75 | name: timing-request
76 | spec:
77 | ports:
78 | - port: 9800
79 | targetPort: 9800
80 | protocol: TCP
81 | selector:
82 | name: timing-request
--------------------------------------------------------------------------------
/timing_test.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "testing"
5 | "github.com/vinkdong/timing/types"
6 | )
7 |
8 | func TestParseYaml(t *testing.T) {
9 | rList := make([]types.Rule,0)
10 | parseYaml(&rList,"./config.yaml")
11 | r := rList[0]
12 | if r.Method != "PUT"{
13 | t.Errorf("test parse yaml file faild expect method is PUT but got %s",r.Method)
14 | }
15 |
16 | if r.Range["hour"]["gte"] != 0{
17 | t.Errorf("test parse yaml file faild expect range hour is gte 7 but go %d",r.Range["hour"]["gte"])
18 | }
19 | }
--------------------------------------------------------------------------------
/types/types.go:
--------------------------------------------------------------------------------
1 | package types
2 |
3 | import (
4 | "github.com/vinkdong/gox/log"
5 | "net/http"
6 | "github.com/bitly/go-simplejson"
7 | "text/template"
8 | "bytes"
9 | "fmt"
10 | )
11 |
12 | type Rule struct {
13 | Method string
14 | Url string
15 | Bodies map[string]string `yaml:"body"`
16 | Headers map[string]string `yaml:"header"`
17 | Range map[string]map[string]int
18 | Every map[string]int `yaml:"run_every"`
19 | Count int64 `yaml:"run_count"`
20 | Thread int16 `yaml:"run_thread"`
21 | LogResp bool `yaml:"log_response"`
22 | Prometheus map[string]string
23 | Check []Checker `yaml: "checker"`
24 | Type string
25 | Database Database `yaml:"database"`
26 | Sql TSql `yaml: "sql"`
27 | Executed int64
28 | Skip bool
29 | Started int64
30 | }
31 |
32 | type Database struct {
33 | Type string
34 | Host string
35 | Port int16
36 | Username string
37 | Password string
38 | Database string
39 | }
40 |
41 | type TSql struct {
42 | Execute []string
43 | Query []string
44 | }
45 |
46 | type Checker struct {
47 | Type string `yaml:"type"`
48 | Name string `yaml:"name"`
49 | Rule []string `yaml:"rule"`
50 | }
51 |
52 | func (c *Checker) Check(response http.Response) {
53 |
54 | }
55 |
56 | func (c *Checker) CheckJson(js *simplejson.Json) {
57 |
58 | templ, err := template.New(c.Name).Parse("")
59 | if err != nil{
60 | log.Errorf("checker %s init failed", c.Name)
61 | }
62 | var tpl bytes.Buffer
63 |
64 | templ.Execute(&tpl, js)
65 | fmt.Println(tpl.String())
66 | }
67 |
68 | func (r *Rule) LogNotIn(period string) {
69 | log.Infof("%s%s%s's %s not in request period", "\x1b[33;1m", r.Url, "\x1b[0m", period)
70 | }
--------------------------------------------------------------------------------
/types/types_test.go:
--------------------------------------------------------------------------------
1 | package types
2 |
3 | import (
4 | "testing"
5 | "github.com/bitly/go-simplejson"
6 | )
7 |
8 | func TestChecker_CheckJson(t *testing.T) {
9 | c := Checker{
10 | Name: "test_check",
11 | Type: "json",
12 | }
13 | js, _ := simplejson.NewJson([]byte(`{
14 | "cluster_name" : "logging",
15 | "status" : "green",
16 | "timed_out" : false,
17 | "number_of_nodes" : 6,
18 | "number_of_data_nodes" : 2,
19 | "active_primary_shards" : 3973,
20 | "active_shards" : 7946,
21 | "relocating_shards" : 0,
22 | "initializing_shards" : 0,
23 | "unassigned_shards" : 0,
24 | "delayed_unassigned_shards" : 0,
25 | "number_of_pending_tasks" : 0,
26 | "number_of_in_flight_fetch" : 0,
27 | "task_max_waiting_in_queue_millis" : 0,
28 | "active_shards_percent_as_number" : 100.0
29 | }`))
30 | c.CheckJson(js)
31 | }
32 |
--------------------------------------------------------------------------------
/vendor/github.com/beorn7/perks/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (C) 2013 Blake Mizerany
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining
4 | a copy of this software and associated documentation files (the
5 | "Software"), to deal in the Software without restriction, including
6 | without limitation the rights to use, copy, modify, merge, publish,
7 | distribute, sublicense, and/or sell copies of the Software, and to
8 | permit persons to whom the Software is furnished to do so, subject to
9 | the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be
12 | included in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/vendor/github.com/bitly/go-simplejson/.travis.yml:
--------------------------------------------------------------------------------
1 | language: go
2 | go:
3 | - 1.0.3
4 | - 1.1.2
5 | - 1.2
6 | - tip
7 | install:
8 | - go get github.com/bmizerany/assert
9 | notifications:
10 | email: false
11 |
--------------------------------------------------------------------------------
/vendor/github.com/bitly/go-simplejson/LICENSE:
--------------------------------------------------------------------------------
1 | Permission is hereby granted, free of charge, to any person obtaining a copy
2 | of this software and associated documentation files (the "Software"), to deal
3 | in the Software without restriction, including without limitation the rights
4 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
5 | copies of the Software, and to permit persons to whom the Software is
6 | furnished to do so, subject to the following conditions:
7 |
8 | The above copyright notice and this permission notice shall be included in
9 | all copies or substantial portions of the Software.
10 |
11 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
17 | THE SOFTWARE.
18 |
--------------------------------------------------------------------------------
/vendor/github.com/bitly/go-simplejson/README.md:
--------------------------------------------------------------------------------
1 | ### go-simplejson
2 |
3 | a Go package to interact with arbitrary JSON
4 |
5 | [](http://travis-ci.org/bitly/go-simplejson)
6 |
7 | ### Importing
8 |
9 | import github.com/bitly/go-simplejson
10 |
11 | ### Documentation
12 |
13 | Visit the docs on [gopkgdoc](http://godoc.org/github.com/bitly/go-simplejson)
14 |
--------------------------------------------------------------------------------
/vendor/github.com/bitly/go-simplejson/simplejson_go10.go:
--------------------------------------------------------------------------------
1 | // +build !go1.1
2 |
3 | package simplejson
4 |
5 | import (
6 | "encoding/json"
7 | "errors"
8 | "io"
9 | "reflect"
10 | )
11 |
12 | // NewFromReader returns a *Json by decoding from an io.Reader
13 | func NewFromReader(r io.Reader) (*Json, error) {
14 | j := new(Json)
15 | dec := json.NewDecoder(r)
16 | err := dec.Decode(&j.data)
17 | return j, err
18 | }
19 |
20 | // Implements the json.Unmarshaler interface.
21 | func (j *Json) UnmarshalJSON(p []byte) error {
22 | return json.Unmarshal(p, &j.data)
23 | }
24 |
25 | // Float64 coerces into a float64
26 | func (j *Json) Float64() (float64, error) {
27 | switch j.data.(type) {
28 | case float32, float64:
29 | return reflect.ValueOf(j.data).Float(), nil
30 | case int, int8, int16, int32, int64:
31 | return float64(reflect.ValueOf(j.data).Int()), nil
32 | case uint, uint8, uint16, uint32, uint64:
33 | return float64(reflect.ValueOf(j.data).Uint()), nil
34 | }
35 | return 0, errors.New("invalid value type")
36 | }
37 |
38 | // Int coerces into an int
39 | func (j *Json) Int() (int, error) {
40 | switch j.data.(type) {
41 | case float32, float64:
42 | return int(reflect.ValueOf(j.data).Float()), nil
43 | case int, int8, int16, int32, int64:
44 | return int(reflect.ValueOf(j.data).Int()), nil
45 | case uint, uint8, uint16, uint32, uint64:
46 | return int(reflect.ValueOf(j.data).Uint()), nil
47 | }
48 | return 0, errors.New("invalid value type")
49 | }
50 |
51 | // Int64 coerces into an int64
52 | func (j *Json) Int64() (int64, error) {
53 | switch j.data.(type) {
54 | case float32, float64:
55 | return int64(reflect.ValueOf(j.data).Float()), nil
56 | case int, int8, int16, int32, int64:
57 | return reflect.ValueOf(j.data).Int(), nil
58 | case uint, uint8, uint16, uint32, uint64:
59 | return int64(reflect.ValueOf(j.data).Uint()), nil
60 | }
61 | return 0, errors.New("invalid value type")
62 | }
63 |
64 | // Uint64 coerces into an uint64
65 | func (j *Json) Uint64() (uint64, error) {
66 | switch j.data.(type) {
67 | case float32, float64:
68 | return uint64(reflect.ValueOf(j.data).Float()), nil
69 | case int, int8, int16, int32, int64:
70 | return uint64(reflect.ValueOf(j.data).Int()), nil
71 | case uint, uint8, uint16, uint32, uint64:
72 | return reflect.ValueOf(j.data).Uint(), nil
73 | }
74 | return 0, errors.New("invalid value type")
75 | }
76 |
--------------------------------------------------------------------------------
/vendor/github.com/bitly/go-simplejson/simplejson_go11.go:
--------------------------------------------------------------------------------
1 | // +build go1.1
2 |
3 | package simplejson
4 |
5 | import (
6 | "bytes"
7 | "encoding/json"
8 | "errors"
9 | "io"
10 | "reflect"
11 | "strconv"
12 | )
13 |
14 | // Implements the json.Unmarshaler interface.
15 | func (j *Json) UnmarshalJSON(p []byte) error {
16 | dec := json.NewDecoder(bytes.NewBuffer(p))
17 | dec.UseNumber()
18 | return dec.Decode(&j.data)
19 | }
20 |
21 | // NewFromReader returns a *Json by decoding from an io.Reader
22 | func NewFromReader(r io.Reader) (*Json, error) {
23 | j := new(Json)
24 | dec := json.NewDecoder(r)
25 | dec.UseNumber()
26 | err := dec.Decode(&j.data)
27 | return j, err
28 | }
29 |
30 | // Float64 coerces into a float64
31 | func (j *Json) Float64() (float64, error) {
32 | switch j.data.(type) {
33 | case json.Number:
34 | return j.data.(json.Number).Float64()
35 | case float32, float64:
36 | return reflect.ValueOf(j.data).Float(), nil
37 | case int, int8, int16, int32, int64:
38 | return float64(reflect.ValueOf(j.data).Int()), nil
39 | case uint, uint8, uint16, uint32, uint64:
40 | return float64(reflect.ValueOf(j.data).Uint()), nil
41 | }
42 | return 0, errors.New("invalid value type")
43 | }
44 |
45 | // Int coerces into an int
46 | func (j *Json) Int() (int, error) {
47 | switch j.data.(type) {
48 | case json.Number:
49 | i, err := j.data.(json.Number).Int64()
50 | return int(i), err
51 | case float32, float64:
52 | return int(reflect.ValueOf(j.data).Float()), nil
53 | case int, int8, int16, int32, int64:
54 | return int(reflect.ValueOf(j.data).Int()), nil
55 | case uint, uint8, uint16, uint32, uint64:
56 | return int(reflect.ValueOf(j.data).Uint()), nil
57 | }
58 | return 0, errors.New("invalid value type")
59 | }
60 |
61 | // Int64 coerces into an int64
62 | func (j *Json) Int64() (int64, error) {
63 | switch j.data.(type) {
64 | case json.Number:
65 | return j.data.(json.Number).Int64()
66 | case float32, float64:
67 | return int64(reflect.ValueOf(j.data).Float()), nil
68 | case int, int8, int16, int32, int64:
69 | return reflect.ValueOf(j.data).Int(), nil
70 | case uint, uint8, uint16, uint32, uint64:
71 | return int64(reflect.ValueOf(j.data).Uint()), nil
72 | }
73 | return 0, errors.New("invalid value type")
74 | }
75 |
76 | // Uint64 coerces into an uint64
77 | func (j *Json) Uint64() (uint64, error) {
78 | switch j.data.(type) {
79 | case json.Number:
80 | return strconv.ParseUint(j.data.(json.Number).String(), 10, 64)
81 | case float32, float64:
82 | return uint64(reflect.ValueOf(j.data).Float()), nil
83 | case int, int8, int16, int32, int64:
84 | return uint64(reflect.ValueOf(j.data).Int()), nil
85 | case uint, uint8, uint16, uint32, uint64:
86 | return reflect.ValueOf(j.data).Uint(), nil
87 | }
88 | return 0, errors.New("invalid value type")
89 | }
90 |
--------------------------------------------------------------------------------
/vendor/github.com/fsnotify/fsnotify/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = tab
5 | indent_size = 4
6 |
--------------------------------------------------------------------------------
/vendor/github.com/fsnotify/fsnotify/.gitignore:
--------------------------------------------------------------------------------
1 | # Setup a Global .gitignore for OS and editor generated files:
2 | # https://help.github.com/articles/ignoring-files
3 | # git config --global core.excludesfile ~/.gitignore_global
4 |
5 | .vagrant
6 | *.sublime-project
7 |
--------------------------------------------------------------------------------
/vendor/github.com/fsnotify/fsnotify/.travis.yml:
--------------------------------------------------------------------------------
1 | sudo: false
2 | language: go
3 |
4 | go:
5 | - 1.8.x
6 | - 1.9.x
7 | - tip
8 |
9 | matrix:
10 | allow_failures:
11 | - go: tip
12 | fast_finish: true
13 |
14 | before_script:
15 | - go get -u github.com/golang/lint/golint
16 |
17 | script:
18 | - go test -v --race ./...
19 |
20 | after_script:
21 | - test -z "$(gofmt -s -l -w . | tee /dev/stderr)"
22 | - test -z "$(golint ./... | tee /dev/stderr)"
23 | - go vet ./...
24 |
25 | os:
26 | - linux
27 | - osx
28 |
29 | notifications:
30 | email: false
31 |
--------------------------------------------------------------------------------
/vendor/github.com/fsnotify/fsnotify/AUTHORS:
--------------------------------------------------------------------------------
1 | # Names should be added to this file as
2 | # Name or Organization
3 | # The email address is not required for organizations.
4 |
5 | # You can update this list using the following command:
6 | #
7 | # $ git shortlog -se | awk '{print $2 " " $3 " " $4}'
8 |
9 | # Please keep the list sorted.
10 |
11 | Aaron L
12 | Adrien Bustany
13 | Amit Krishnan
14 | Anmol Sethi
15 | Bjørn Erik Pedersen
16 | Bruno Bigras
17 | Caleb Spare
18 | Case Nelson
19 | Chris Howey
20 | Christoffer Buchholz
21 | Daniel Wagner-Hall
22 | Dave Cheney
23 | Evan Phoenix
24 | Francisco Souza
25 | Hari haran
26 | John C Barstow
27 | Kelvin Fo
28 | Ken-ichirou MATSUZAWA
29 | Matt Layher
30 | Nathan Youngman
31 | Nickolai Zeldovich
32 | Patrick
33 | Paul Hammond
34 | Pawel Knap
35 | Pieter Droogendijk
36 | Pursuit92
37 | Riku Voipio
38 | Rob Figueiredo
39 | Rodrigo Chiossi
40 | Slawek Ligus
41 | Soge Zhang
42 | Tiffany Jernigan
43 | Tilak Sharma
44 | Tom Payne
45 | Travis Cline
46 | Tudor Golubenco
47 | Vahe Khachikyan
48 | Yukang
49 | bronze1man
50 | debrando
51 | henrikedwards
52 | 铁哥
53 |
--------------------------------------------------------------------------------
/vendor/github.com/fsnotify/fsnotify/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2012 The Go Authors. All rights reserved.
2 | Copyright (c) 2012 fsnotify Authors. All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions are
6 | met:
7 |
8 | * Redistributions of source code must retain the above copyright
9 | notice, this list of conditions and the following disclaimer.
10 | * Redistributions in binary form must reproduce the above
11 | copyright notice, this list of conditions and the following disclaimer
12 | in the documentation and/or other materials provided with the
13 | distribution.
14 | * Neither the name of Google Inc. nor the names of its
15 | contributors may be used to endorse or promote products derived from
16 | this software without specific prior written permission.
17 |
18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 |
--------------------------------------------------------------------------------
/vendor/github.com/fsnotify/fsnotify/fen.go:
--------------------------------------------------------------------------------
1 | // Copyright 2010 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 solaris
6 |
7 | package fsnotify
8 |
9 | import (
10 | "errors"
11 | )
12 |
13 | // Watcher watches a set of files, delivering events to a channel.
14 | type Watcher struct {
15 | Events chan Event
16 | Errors chan error
17 | }
18 |
19 | // NewWatcher establishes a new watcher with the underlying OS and begins waiting for events.
20 | func NewWatcher() (*Watcher, error) {
21 | return nil, errors.New("FEN based watcher not yet supported for fsnotify\n")
22 | }
23 |
24 | // Close removes all watches and closes the events channel.
25 | func (w *Watcher) Close() error {
26 | return nil
27 | }
28 |
29 | // Add starts watching the named file or directory (non-recursively).
30 | func (w *Watcher) Add(name string) error {
31 | return nil
32 | }
33 |
34 | // Remove stops watching the the named file or directory (non-recursively).
35 | func (w *Watcher) Remove(name string) error {
36 | return nil
37 | }
38 |
--------------------------------------------------------------------------------
/vendor/github.com/fsnotify/fsnotify/fsnotify.go:
--------------------------------------------------------------------------------
1 | // Copyright 2012 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 !plan9
6 |
7 | // Package fsnotify provides a platform-independent interface for file system notifications.
8 | package fsnotify
9 |
10 | import (
11 | "bytes"
12 | "errors"
13 | "fmt"
14 | )
15 |
16 | // Event represents a single file system notification.
17 | type Event struct {
18 | Name string // Relative path to the file or directory.
19 | Op Op // File operation that triggered the event.
20 | }
21 |
22 | // Op describes a set of file operations.
23 | type Op uint32
24 |
25 | // These are the generalized file operations that can trigger a notification.
26 | const (
27 | Create Op = 1 << iota
28 | Write
29 | Remove
30 | Rename
31 | Chmod
32 | )
33 |
34 | func (op Op) String() string {
35 | // Use a buffer for efficient string concatenation
36 | var buffer bytes.Buffer
37 |
38 | if op&Create == Create {
39 | buffer.WriteString("|CREATE")
40 | }
41 | if op&Remove == Remove {
42 | buffer.WriteString("|REMOVE")
43 | }
44 | if op&Write == Write {
45 | buffer.WriteString("|WRITE")
46 | }
47 | if op&Rename == Rename {
48 | buffer.WriteString("|RENAME")
49 | }
50 | if op&Chmod == Chmod {
51 | buffer.WriteString("|CHMOD")
52 | }
53 | if buffer.Len() == 0 {
54 | return ""
55 | }
56 | return buffer.String()[1:] // Strip leading pipe
57 | }
58 |
59 | // String returns a string representation of the event in the form
60 | // "file: REMOVE|WRITE|..."
61 | func (e Event) String() string {
62 | return fmt.Sprintf("%q: %s", e.Name, e.Op.String())
63 | }
64 |
65 | // Common errors that can be reported by a watcher
66 | var ErrEventOverflow = errors.New("fsnotify queue overflow")
67 |
--------------------------------------------------------------------------------
/vendor/github.com/fsnotify/fsnotify/open_mode_bsd.go:
--------------------------------------------------------------------------------
1 | // Copyright 2013 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 freebsd openbsd netbsd dragonfly
6 |
7 | package fsnotify
8 |
9 | import "golang.org/x/sys/unix"
10 |
11 | const openMode = unix.O_NONBLOCK | unix.O_RDONLY
12 |
--------------------------------------------------------------------------------
/vendor/github.com/fsnotify/fsnotify/open_mode_darwin.go:
--------------------------------------------------------------------------------
1 | // Copyright 2013 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 darwin
6 |
7 | package fsnotify
8 |
9 | import "golang.org/x/sys/unix"
10 |
11 | // note: this constant is not defined on BSD
12 | const openMode = unix.O_EVTONLY
13 |
--------------------------------------------------------------------------------
/vendor/github.com/go-sql-driver/mysql/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .DS_Store?
3 | ._*
4 | .Spotlight-V100
5 | .Trashes
6 | Icon?
7 | ehthumbs.db
8 | Thumbs.db
9 | .idea
10 |
--------------------------------------------------------------------------------
/vendor/github.com/go-sql-driver/mysql/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing Guidelines
2 |
3 | ## Reporting Issues
4 |
5 | Before creating a new Issue, please check first if a similar Issue [already exists](https://github.com/go-sql-driver/mysql/issues?state=open) or was [recently closed](https://github.com/go-sql-driver/mysql/issues?direction=desc&page=1&sort=updated&state=closed).
6 |
7 | ## Contributing Code
8 |
9 | By contributing to this project, you share your code under the Mozilla Public License 2, as specified in the LICENSE file.
10 | Don't forget to add yourself to the AUTHORS file.
11 |
12 | ### Code Review
13 |
14 | Everyone is invited to review and comment on pull requests.
15 | If it looks fine to you, comment with "LGTM" (Looks good to me).
16 |
17 | If changes are required, notice the reviewers with "PTAL" (Please take another look) after committing the fixes.
18 |
19 | Before merging the Pull Request, at least one [team member](https://github.com/go-sql-driver?tab=members) must have commented with "LGTM".
20 |
21 | ## Development Ideas
22 |
23 | If you are looking for ideas for code contributions, please check our [Development Ideas](https://github.com/go-sql-driver/mysql/wiki/Development-Ideas) Wiki page.
24 |
--------------------------------------------------------------------------------
/vendor/github.com/go-sql-driver/mysql/appengine.go:
--------------------------------------------------------------------------------
1 | // Go MySQL Driver - A MySQL-Driver for Go's database/sql package
2 | //
3 | // Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved.
4 | //
5 | // This Source Code Form is subject to the terms of the Mozilla Public
6 | // License, v. 2.0. If a copy of the MPL was not distributed with this file,
7 | // You can obtain one at http://mozilla.org/MPL/2.0/.
8 |
9 | // +build appengine
10 |
11 | package mysql
12 |
13 | import (
14 | "google.golang.org/appengine/cloudsql"
15 | )
16 |
17 | func init() {
18 | RegisterDial("cloudsql", cloudsql.Dial)
19 | }
20 |
--------------------------------------------------------------------------------
/vendor/github.com/go-sql-driver/mysql/errors.go:
--------------------------------------------------------------------------------
1 | // Go MySQL Driver - A MySQL-Driver for Go's database/sql package
2 | //
3 | // Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved.
4 | //
5 | // This Source Code Form is subject to the terms of the Mozilla Public
6 | // License, v. 2.0. If a copy of the MPL was not distributed with this file,
7 | // You can obtain one at http://mozilla.org/MPL/2.0/.
8 |
9 | package mysql
10 |
11 | import (
12 | "errors"
13 | "fmt"
14 | "log"
15 | "os"
16 | )
17 |
18 | // Various errors the driver might return. Can change between driver versions.
19 | var (
20 | ErrInvalidConn = errors.New("invalid connection")
21 | ErrMalformPkt = errors.New("malformed packet")
22 | ErrNoTLS = errors.New("TLS requested but server does not support TLS")
23 | ErrCleartextPassword = errors.New("this user requires clear text authentication. If you still want to use it, please add 'allowCleartextPasswords=1' to your DSN")
24 | ErrNativePassword = errors.New("this user requires mysql native password authentication.")
25 | ErrOldPassword = errors.New("this user requires old password authentication. If you still want to use it, please add 'allowOldPasswords=1' to your DSN. See also https://github.com/go-sql-driver/mysql/wiki/old_passwords")
26 | ErrUnknownPlugin = errors.New("this authentication plugin is not supported")
27 | ErrOldProtocol = errors.New("MySQL server does not support required protocol 41+")
28 | ErrPktSync = errors.New("commands out of sync. You can't run this command now")
29 | ErrPktSyncMul = errors.New("commands out of sync. Did you run multiple statements at once?")
30 | ErrPktTooLarge = errors.New("packet for query is too large. Try adjusting the 'max_allowed_packet' variable on the server")
31 | ErrBusyBuffer = errors.New("busy buffer")
32 |
33 | // errBadConnNoWrite is used for connection errors where nothing was sent to the database yet.
34 | // If this happens first in a function starting a database interaction, it should be replaced by driver.ErrBadConn
35 | // to trigger a resend.
36 | // See https://github.com/go-sql-driver/mysql/pull/302
37 | errBadConnNoWrite = errors.New("bad connection")
38 | )
39 |
40 | var errLog = Logger(log.New(os.Stderr, "[mysql] ", log.Ldate|log.Ltime|log.Lshortfile))
41 |
42 | // Logger is used to log critical error messages.
43 | type Logger interface {
44 | Print(v ...interface{})
45 | }
46 |
47 | // SetLogger is used to set the logger for critical errors.
48 | // The initial logger is os.Stderr.
49 | func SetLogger(logger Logger) error {
50 | if logger == nil {
51 | return errors.New("logger is nil")
52 | }
53 | errLog = logger
54 | return nil
55 | }
56 |
57 | // MySQLError is an error type which represents a single MySQL error
58 | type MySQLError struct {
59 | Number uint16
60 | Message string
61 | }
62 |
63 | func (me *MySQLError) Error() string {
64 | return fmt.Sprintf("Error %d: %s", me.Number, me.Message)
65 | }
66 |
--------------------------------------------------------------------------------
/vendor/github.com/go-sql-driver/mysql/result.go:
--------------------------------------------------------------------------------
1 | // Go MySQL Driver - A MySQL-Driver for Go's database/sql package
2 | //
3 | // Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.
4 | //
5 | // This Source Code Form is subject to the terms of the Mozilla Public
6 | // License, v. 2.0. If a copy of the MPL was not distributed with this file,
7 | // You can obtain one at http://mozilla.org/MPL/2.0/.
8 |
9 | package mysql
10 |
11 | type mysqlResult struct {
12 | affectedRows int64
13 | insertId int64
14 | }
15 |
16 | func (res *mysqlResult) LastInsertId() (int64, error) {
17 | return res.insertId, nil
18 | }
19 |
20 | func (res *mysqlResult) RowsAffected() (int64, error) {
21 | return res.affectedRows, nil
22 | }
23 |
--------------------------------------------------------------------------------
/vendor/github.com/go-sql-driver/mysql/transaction.go:
--------------------------------------------------------------------------------
1 | // Go MySQL Driver - A MySQL-Driver for Go's database/sql package
2 | //
3 | // Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.
4 | //
5 | // This Source Code Form is subject to the terms of the Mozilla Public
6 | // License, v. 2.0. If a copy of the MPL was not distributed with this file,
7 | // You can obtain one at http://mozilla.org/MPL/2.0/.
8 |
9 | package mysql
10 |
11 | type mysqlTx struct {
12 | mc *mysqlConn
13 | }
14 |
15 | func (tx *mysqlTx) Commit() (err error) {
16 | if tx.mc == nil || tx.mc.closed.IsSet() {
17 | return ErrInvalidConn
18 | }
19 | err = tx.mc.exec("COMMIT")
20 | tx.mc = nil
21 | return
22 | }
23 |
24 | func (tx *mysqlTx) Rollback() (err error) {
25 | if tx.mc == nil || tx.mc.closed.IsSet() {
26 | return ErrInvalidConn
27 | }
28 | err = tx.mc.exec("ROLLBACK")
29 | tx.mc = nil
30 | return
31 | }
32 |
--------------------------------------------------------------------------------
/vendor/github.com/go-sql-driver/mysql/utils_go17.go:
--------------------------------------------------------------------------------
1 | // Go MySQL Driver - A MySQL-Driver for Go's database/sql package
2 | //
3 | // Copyright 2017 The Go-MySQL-Driver Authors. All rights reserved.
4 | //
5 | // This Source Code Form is subject to the terms of the Mozilla Public
6 | // License, v. 2.0. If a copy of the MPL was not distributed with this file,
7 | // You can obtain one at http://mozilla.org/MPL/2.0/.
8 |
9 | // +build go1.7
10 | // +build !go1.8
11 |
12 | package mysql
13 |
14 | import "crypto/tls"
15 |
16 | func cloneTLSConfig(c *tls.Config) *tls.Config {
17 | return &tls.Config{
18 | Rand: c.Rand,
19 | Time: c.Time,
20 | Certificates: c.Certificates,
21 | NameToCertificate: c.NameToCertificate,
22 | GetCertificate: c.GetCertificate,
23 | RootCAs: c.RootCAs,
24 | NextProtos: c.NextProtos,
25 | ServerName: c.ServerName,
26 | ClientAuth: c.ClientAuth,
27 | ClientCAs: c.ClientCAs,
28 | InsecureSkipVerify: c.InsecureSkipVerify,
29 | CipherSuites: c.CipherSuites,
30 | PreferServerCipherSuites: c.PreferServerCipherSuites,
31 | SessionTicketsDisabled: c.SessionTicketsDisabled,
32 | SessionTicketKey: c.SessionTicketKey,
33 | ClientSessionCache: c.ClientSessionCache,
34 | MinVersion: c.MinVersion,
35 | MaxVersion: c.MaxVersion,
36 | CurvePreferences: c.CurvePreferences,
37 | DynamicRecordSizingDisabled: c.DynamicRecordSizingDisabled,
38 | Renegotiation: c.Renegotiation,
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/vendor/github.com/go-sql-driver/mysql/utils_go18.go:
--------------------------------------------------------------------------------
1 | // Go MySQL Driver - A MySQL-Driver for Go's database/sql package
2 | //
3 | // Copyright 2017 The Go-MySQL-Driver Authors. All rights reserved.
4 | //
5 | // This Source Code Form is subject to the terms of the Mozilla Public
6 | // License, v. 2.0. If a copy of the MPL was not distributed with this file,
7 | // You can obtain one at http://mozilla.org/MPL/2.0/.
8 |
9 | // +build go1.8
10 |
11 | package mysql
12 |
13 | import (
14 | "crypto/tls"
15 | "database/sql"
16 | "database/sql/driver"
17 | "errors"
18 | "fmt"
19 | )
20 |
21 | func cloneTLSConfig(c *tls.Config) *tls.Config {
22 | return c.Clone()
23 | }
24 |
25 | func namedValueToValue(named []driver.NamedValue) ([]driver.Value, error) {
26 | dargs := make([]driver.Value, len(named))
27 | for n, param := range named {
28 | if len(param.Name) > 0 {
29 | // TODO: support the use of Named Parameters #561
30 | return nil, errors.New("mysql: driver does not support the use of Named Parameters")
31 | }
32 | dargs[n] = param.Value
33 | }
34 | return dargs, nil
35 | }
36 |
37 | func mapIsolationLevel(level driver.IsolationLevel) (string, error) {
38 | switch sql.IsolationLevel(level) {
39 | case sql.LevelRepeatableRead:
40 | return "REPEATABLE READ", nil
41 | case sql.LevelReadCommitted:
42 | return "READ COMMITTED", nil
43 | case sql.LevelReadUncommitted:
44 | return "READ UNCOMMITTED", nil
45 | case sql.LevelSerializable:
46 | return "SERIALIZABLE", nil
47 | default:
48 | return "", fmt.Errorf("mysql: unsupported isolation level: %v", level)
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/vendor/github.com/golang/glog/README:
--------------------------------------------------------------------------------
1 | glog
2 | ====
3 |
4 | Leveled execution logs for Go.
5 |
6 | This is an efficient pure Go implementation of leveled logs in the
7 | manner of the open source C++ package
8 | https://github.com/google/glog
9 |
10 | By binding methods to booleans it is possible to use the log package
11 | without paying the expense of evaluating the arguments to the log.
12 | Through the -vmodule flag, the package also provides fine-grained
13 | control over logging at the file level.
14 |
15 | The comment from glog.go introduces the ideas:
16 |
17 | Package glog implements logging analogous to the Google-internal
18 | C++ INFO/ERROR/V setup. It provides functions Info, Warning,
19 | Error, Fatal, plus formatting variants such as Infof. It
20 | also provides V-style logging controlled by the -v and
21 | -vmodule=file=2 flags.
22 |
23 | Basic examples:
24 |
25 | glog.Info("Prepare to repel boarders")
26 |
27 | glog.Fatalf("Initialization failed: %s", err)
28 |
29 | See the documentation for the V function for an explanation
30 | of these examples:
31 |
32 | if glog.V(2) {
33 | glog.Info("Starting transaction...")
34 | }
35 |
36 | glog.V(2).Infoln("Processed", nItems, "elements")
37 |
38 |
39 | The repository contains an open source version of the log package
40 | used inside Google. The master copy of the source lives inside
41 | Google, not here. The code in this repo is for export only and is not itself
42 | under development. Feature requests will be ignored.
43 |
44 | Send bug reports to golang-nuts@googlegroups.com.
45 |
--------------------------------------------------------------------------------
/vendor/github.com/golang/protobuf/AUTHORS:
--------------------------------------------------------------------------------
1 | # This source code refers to The Go Authors for copyright purposes.
2 | # The master list of authors is in the main Go distribution,
3 | # visible at http://tip.golang.org/AUTHORS.
4 |
--------------------------------------------------------------------------------
/vendor/github.com/golang/protobuf/CONTRIBUTORS:
--------------------------------------------------------------------------------
1 | # This source code was written by the Go contributors.
2 | # The master list of contributors is in the main Go distribution,
3 | # visible at http://tip.golang.org/CONTRIBUTORS.
4 |
--------------------------------------------------------------------------------
/vendor/github.com/golang/protobuf/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2010 The Go Authors. All rights reserved.
2 |
3 | Redistribution and use in source and binary forms, with or without
4 | modification, are permitted provided that the following conditions are
5 | met:
6 |
7 | * Redistributions of source code must retain the above copyright
8 | notice, this list of conditions and the following disclaimer.
9 | * Redistributions in binary form must reproduce the above
10 | copyright notice, this list of conditions and the following disclaimer
11 | in the documentation and/or other materials provided with the
12 | distribution.
13 | * Neither the name of Google Inc. nor the names of its
14 | contributors may be used to endorse or promote products derived from
15 | this software without specific prior written permission.
16 |
17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 |
29 |
--------------------------------------------------------------------------------
/vendor/github.com/matttproud/golang_protobuf_extensions/NOTICE:
--------------------------------------------------------------------------------
1 | Copyright 2012 Matt T. Proud (matt.proud@gmail.com)
2 |
--------------------------------------------------------------------------------
/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/.gitignore:
--------------------------------------------------------------------------------
1 | cover.dat
2 |
--------------------------------------------------------------------------------
/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/Makefile:
--------------------------------------------------------------------------------
1 | all:
2 |
3 | cover:
4 | go test -cover -v -coverprofile=cover.dat ./...
5 | go tool cover -func cover.dat
6 |
7 | .PHONY: cover
8 |
--------------------------------------------------------------------------------
/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/doc.go:
--------------------------------------------------------------------------------
1 | // Copyright 2013 Matt T. Proud
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | // Package pbutil provides record length-delimited Protocol Buffer streaming.
16 | package pbutil
17 |
--------------------------------------------------------------------------------
/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/encode.go:
--------------------------------------------------------------------------------
1 | // Copyright 2013 Matt T. Proud
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | package pbutil
16 |
17 | import (
18 | "encoding/binary"
19 | "io"
20 |
21 | "github.com/golang/protobuf/proto"
22 | )
23 |
24 | // WriteDelimited encodes and dumps a message to the provided writer prefixed
25 | // with a 32-bit varint indicating the length of the encoded message, producing
26 | // a length-delimited record stream, which can be used to chain together
27 | // encoded messages of the same type together in a file. It returns the total
28 | // number of bytes written and any applicable error. This is roughly
29 | // equivalent to the companion Java API's MessageLite#writeDelimitedTo.
30 | func WriteDelimited(w io.Writer, m proto.Message) (n int, err error) {
31 | buffer, err := proto.Marshal(m)
32 | if err != nil {
33 | return 0, err
34 | }
35 |
36 | var buf [binary.MaxVarintLen32]byte
37 | encodedLength := binary.PutUvarint(buf[:], uint64(len(buffer)))
38 |
39 | sync, err := w.Write(buf[:encodedLength])
40 | if err != nil {
41 | return sync, err
42 | }
43 |
44 | n, err = w.Write(buffer)
45 | return n + sync, err
46 | }
47 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/client_golang/AUTHORS.md:
--------------------------------------------------------------------------------
1 | The Prometheus project was started by Matt T. Proud (emeritus) and
2 | Julius Volz in 2012.
3 |
4 | Maintainers of this repository:
5 |
6 | * Björn Rabenstein
7 |
8 | The following individuals have contributed code to this repository
9 | (listed in alphabetical order):
10 |
11 | * Bernerd Schaefer
12 | * Björn Rabenstein
13 | * Daniel Bornkessel
14 | * Jeff Younker
15 | * Julius Volz
16 | * Matt T. Proud
17 | * Tobias Schmidt
18 |
19 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/client_golang/NOTICE:
--------------------------------------------------------------------------------
1 | Prometheus instrumentation library for Go applications
2 | Copyright 2012-2015 The Prometheus Authors
3 |
4 | This product includes software developed at
5 | SoundCloud Ltd. (http://soundcloud.com/).
6 |
7 |
8 | The following components are included in this product:
9 |
10 | perks - a fork of https://github.com/bmizerany/perks
11 | https://github.com/beorn7/perks
12 | Copyright 2013-2015 Blake Mizerany, Björn Rabenstein
13 | See https://github.com/beorn7/perks/blob/master/README.md for license details.
14 |
15 | Go support for Protocol Buffers - Google's data interchange format
16 | http://github.com/golang/protobuf/
17 | Copyright 2010 The Go Authors
18 | See source code for license details.
19 |
20 | Support for streaming Protocol Buffer messages for the Go language (golang).
21 | https://github.com/matttproud/golang_protobuf_extensions
22 | Copyright 2013 Matt T. Proud
23 | Licensed under the Apache License, Version 2.0
24 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/client_golang/prometheus/.gitignore:
--------------------------------------------------------------------------------
1 | command-line-arguments.test
2 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/client_golang/prometheus/README.md:
--------------------------------------------------------------------------------
1 | See [](https://godoc.org/github.com/prometheus/client_golang/prometheus).
2 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/client_golang/prometheus/fnv.go:
--------------------------------------------------------------------------------
1 | package prometheus
2 |
3 | // Inline and byte-free variant of hash/fnv's fnv64a.
4 |
5 | const (
6 | offset64 = 14695981039346656037
7 | prime64 = 1099511628211
8 | )
9 |
10 | // hashNew initializies a new fnv64a hash value.
11 | func hashNew() uint64 {
12 | return offset64
13 | }
14 |
15 | // hashAdd adds a string to a fnv64a hash value, returning the updated hash.
16 | func hashAdd(h uint64, s string) uint64 {
17 | for i := 0; i < len(s); i++ {
18 | h ^= uint64(s[i])
19 | h *= prime64
20 | }
21 | return h
22 | }
23 |
24 | // hashAddByte adds a byte to a fnv64a hash value, returning the updated hash.
25 | func hashAddByte(h uint64, b byte) uint64 {
26 | h ^= uint64(b)
27 | h *= prime64
28 | return h
29 | }
30 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/client_model/NOTICE:
--------------------------------------------------------------------------------
1 | Data model artifacts for Prometheus.
2 | Copyright 2012-2015 The Prometheus Authors
3 |
4 | This product includes software developed at
5 | SoundCloud Ltd. (http://soundcloud.com/).
6 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/common/NOTICE:
--------------------------------------------------------------------------------
1 | Common libraries shared by Prometheus Go components.
2 | Copyright 2015 The Prometheus Authors
3 |
4 | This product includes software developed at
5 | SoundCloud Ltd. (http://soundcloud.com/).
6 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/common/expfmt/encode.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 The Prometheus Authors
2 | // Licensed under the Apache License, Version 2.0 (the "License");
3 | // you may not use this file except in compliance with the License.
4 | // You may obtain a copy of the License at
5 | //
6 | // http://www.apache.org/licenses/LICENSE-2.0
7 | //
8 | // Unless required by applicable law or agreed to in writing, software
9 | // distributed under the License is distributed on an "AS IS" BASIS,
10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | // See the License for the specific language governing permissions and
12 | // limitations under the License.
13 |
14 | package expfmt
15 |
16 | import (
17 | "fmt"
18 | "io"
19 | "net/http"
20 |
21 | "github.com/golang/protobuf/proto"
22 | "github.com/matttproud/golang_protobuf_extensions/pbutil"
23 | "github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg"
24 |
25 | dto "github.com/prometheus/client_model/go"
26 | )
27 |
28 | // Encoder types encode metric families into an underlying wire protocol.
29 | type Encoder interface {
30 | Encode(*dto.MetricFamily) error
31 | }
32 |
33 | type encoder func(*dto.MetricFamily) error
34 |
35 | func (e encoder) Encode(v *dto.MetricFamily) error {
36 | return e(v)
37 | }
38 |
39 | // Negotiate returns the Content-Type based on the given Accept header.
40 | // If no appropriate accepted type is found, FmtText is returned.
41 | func Negotiate(h http.Header) Format {
42 | for _, ac := range goautoneg.ParseAccept(h.Get(hdrAccept)) {
43 | // Check for protocol buffer
44 | if ac.Type+"/"+ac.SubType == ProtoType && ac.Params["proto"] == ProtoProtocol {
45 | switch ac.Params["encoding"] {
46 | case "delimited":
47 | return FmtProtoDelim
48 | case "text":
49 | return FmtProtoText
50 | case "compact-text":
51 | return FmtProtoCompact
52 | }
53 | }
54 | // Check for text format.
55 | ver := ac.Params["version"]
56 | if ac.Type == "text" && ac.SubType == "plain" && (ver == TextVersion || ver == "") {
57 | return FmtText
58 | }
59 | }
60 | return FmtText
61 | }
62 |
63 | // NewEncoder returns a new encoder based on content type negotiation.
64 | func NewEncoder(w io.Writer, format Format) Encoder {
65 | switch format {
66 | case FmtProtoDelim:
67 | return encoder(func(v *dto.MetricFamily) error {
68 | _, err := pbutil.WriteDelimited(w, v)
69 | return err
70 | })
71 | case FmtProtoCompact:
72 | return encoder(func(v *dto.MetricFamily) error {
73 | _, err := fmt.Fprintln(w, v.String())
74 | return err
75 | })
76 | case FmtProtoText:
77 | return encoder(func(v *dto.MetricFamily) error {
78 | _, err := fmt.Fprintln(w, proto.MarshalTextString(v))
79 | return err
80 | })
81 | case FmtText:
82 | return encoder(func(v *dto.MetricFamily) error {
83 | _, err := MetricFamilyToText(w, v)
84 | return err
85 | })
86 | }
87 | panic("expfmt.NewEncoder: unknown format")
88 | }
89 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/common/expfmt/expfmt.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 The Prometheus Authors
2 | // Licensed under the Apache License, Version 2.0 (the "License");
3 | // you may not use this file except in compliance with the License.
4 | // You may obtain a copy of the License at
5 | //
6 | // http://www.apache.org/licenses/LICENSE-2.0
7 | //
8 | // Unless required by applicable law or agreed to in writing, software
9 | // distributed under the License is distributed on an "AS IS" BASIS,
10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | // See the License for the specific language governing permissions and
12 | // limitations under the License.
13 |
14 | // Package expfmt contains tools for reading and writing Prometheus metrics.
15 | package expfmt
16 |
17 | // Format specifies the HTTP content type of the different wire protocols.
18 | type Format string
19 |
20 | // Constants to assemble the Content-Type values for the different wire protocols.
21 | const (
22 | TextVersion = "0.0.4"
23 | ProtoType = `application/vnd.google.protobuf`
24 | ProtoProtocol = `io.prometheus.client.MetricFamily`
25 | ProtoFmt = ProtoType + "; proto=" + ProtoProtocol + ";"
26 |
27 | // The Content-Type values for the different wire protocols.
28 | FmtUnknown Format = ``
29 | FmtText Format = `text/plain; version=` + TextVersion + `; charset=utf-8`
30 | FmtProtoDelim Format = ProtoFmt + ` encoding=delimited`
31 | FmtProtoText Format = ProtoFmt + ` encoding=text`
32 | FmtProtoCompact Format = ProtoFmt + ` encoding=compact-text`
33 | )
34 |
35 | const (
36 | hdrContentType = "Content-Type"
37 | hdrAccept = "Accept"
38 | )
39 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/common/expfmt/fuzz.go:
--------------------------------------------------------------------------------
1 | // Copyright 2014 The Prometheus Authors
2 | // Licensed under the Apache License, Version 2.0 (the "License");
3 | // you may not use this file except in compliance with the License.
4 | // You may obtain a copy of the License at
5 | //
6 | // http://www.apache.org/licenses/LICENSE-2.0
7 | //
8 | // Unless required by applicable law or agreed to in writing, software
9 | // distributed under the License is distributed on an "AS IS" BASIS,
10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | // See the License for the specific language governing permissions and
12 | // limitations under the License.
13 |
14 | // Build only when actually fuzzing
15 | // +build gofuzz
16 |
17 | package expfmt
18 |
19 | import "bytes"
20 |
21 | // Fuzz text metric parser with with github.com/dvyukov/go-fuzz:
22 | //
23 | // go-fuzz-build github.com/prometheus/common/expfmt
24 | // go-fuzz -bin expfmt-fuzz.zip -workdir fuzz
25 | //
26 | // Further input samples should go in the folder fuzz/corpus.
27 | func Fuzz(in []byte) int {
28 | parser := TextParser{}
29 | _, err := parser.TextToMetricFamilies(bytes.NewReader(in))
30 |
31 | if err != nil {
32 | return 0
33 | }
34 |
35 | return 1
36 | }
37 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/README.txt:
--------------------------------------------------------------------------------
1 | PACKAGE
2 |
3 | package goautoneg
4 | import "bitbucket.org/ww/goautoneg"
5 |
6 | HTTP Content-Type Autonegotiation.
7 |
8 | The functions in this package implement the behaviour specified in
9 | http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
10 |
11 | Copyright (c) 2011, Open Knowledge Foundation Ltd.
12 | All rights reserved.
13 |
14 | Redistribution and use in source and binary forms, with or without
15 | modification, are permitted provided that the following conditions are
16 | met:
17 |
18 | Redistributions of source code must retain the above copyright
19 | notice, this list of conditions and the following disclaimer.
20 |
21 | Redistributions in binary form must reproduce the above copyright
22 | notice, this list of conditions and the following disclaimer in
23 | the documentation and/or other materials provided with the
24 | distribution.
25 |
26 | Neither the name of the Open Knowledge Foundation Ltd. nor the
27 | names of its contributors may be used to endorse or promote
28 | products derived from this software without specific prior written
29 | permission.
30 |
31 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
34 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
36 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
37 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
38 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
39 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
40 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
41 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
42 |
43 |
44 | FUNCTIONS
45 |
46 | func Negotiate(header string, alternatives []string) (content_type string)
47 | Negotiate the most appropriate content_type given the accept header
48 | and a list of alternatives.
49 |
50 | func ParseAccept(header string) (accept []Accept)
51 | Parse an Accept Header string returning a sorted list
52 | of clauses
53 |
54 |
55 | TYPES
56 |
57 | type Accept struct {
58 | Type, SubType string
59 | Q float32
60 | Params map[string]string
61 | }
62 | Structure to represent a clause in an HTTP Accept Header
63 |
64 |
65 | SUBDIRECTORIES
66 |
67 | .hg
68 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/common/model/fingerprinting.go:
--------------------------------------------------------------------------------
1 | // Copyright 2013 The Prometheus Authors
2 | // Licensed under the Apache License, Version 2.0 (the "License");
3 | // you may not use this file except in compliance with the License.
4 | // You may obtain a copy of the License at
5 | //
6 | // http://www.apache.org/licenses/LICENSE-2.0
7 | //
8 | // Unless required by applicable law or agreed to in writing, software
9 | // distributed under the License is distributed on an "AS IS" BASIS,
10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | // See the License for the specific language governing permissions and
12 | // limitations under the License.
13 |
14 | package model
15 |
16 | import (
17 | "fmt"
18 | "strconv"
19 | )
20 |
21 | // Fingerprint provides a hash-capable representation of a Metric.
22 | // For our purposes, FNV-1A 64-bit is used.
23 | type Fingerprint uint64
24 |
25 | // FingerprintFromString transforms a string representation into a Fingerprint.
26 | func FingerprintFromString(s string) (Fingerprint, error) {
27 | num, err := strconv.ParseUint(s, 16, 64)
28 | return Fingerprint(num), err
29 | }
30 |
31 | // ParseFingerprint parses the input string into a fingerprint.
32 | func ParseFingerprint(s string) (Fingerprint, error) {
33 | num, err := strconv.ParseUint(s, 16, 64)
34 | if err != nil {
35 | return 0, err
36 | }
37 | return Fingerprint(num), nil
38 | }
39 |
40 | func (f Fingerprint) String() string {
41 | return fmt.Sprintf("%016x", uint64(f))
42 | }
43 |
44 | // Fingerprints represents a collection of Fingerprint subject to a given
45 | // natural sorting scheme. It implements sort.Interface.
46 | type Fingerprints []Fingerprint
47 |
48 | // Len implements sort.Interface.
49 | func (f Fingerprints) Len() int {
50 | return len(f)
51 | }
52 |
53 | // Less implements sort.Interface.
54 | func (f Fingerprints) Less(i, j int) bool {
55 | return f[i] < f[j]
56 | }
57 |
58 | // Swap implements sort.Interface.
59 | func (f Fingerprints) Swap(i, j int) {
60 | f[i], f[j] = f[j], f[i]
61 | }
62 |
63 | // FingerprintSet is a set of Fingerprints.
64 | type FingerprintSet map[Fingerprint]struct{}
65 |
66 | // Equal returns true if both sets contain the same elements (and not more).
67 | func (s FingerprintSet) Equal(o FingerprintSet) bool {
68 | if len(s) != len(o) {
69 | return false
70 | }
71 |
72 | for k := range s {
73 | if _, ok := o[k]; !ok {
74 | return false
75 | }
76 | }
77 |
78 | return true
79 | }
80 |
81 | // Intersection returns the elements contained in both sets.
82 | func (s FingerprintSet) Intersection(o FingerprintSet) FingerprintSet {
83 | myLength, otherLength := len(s), len(o)
84 | if myLength == 0 || otherLength == 0 {
85 | return FingerprintSet{}
86 | }
87 |
88 | subSet := s
89 | superSet := o
90 |
91 | if otherLength < myLength {
92 | subSet = o
93 | superSet = s
94 | }
95 |
96 | out := FingerprintSet{}
97 |
98 | for k := range subSet {
99 | if _, ok := superSet[k]; ok {
100 | out[k] = struct{}{}
101 | }
102 | }
103 |
104 | return out
105 | }
106 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/common/model/fnv.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 The Prometheus Authors
2 | // Licensed under the Apache License, Version 2.0 (the "License");
3 | // you may not use this file except in compliance with the License.
4 | // You may obtain a copy of the License at
5 | //
6 | // http://www.apache.org/licenses/LICENSE-2.0
7 | //
8 | // Unless required by applicable law or agreed to in writing, software
9 | // distributed under the License is distributed on an "AS IS" BASIS,
10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | // See the License for the specific language governing permissions and
12 | // limitations under the License.
13 |
14 | package model
15 |
16 | // Inline and byte-free variant of hash/fnv's fnv64a.
17 |
18 | const (
19 | offset64 = 14695981039346656037
20 | prime64 = 1099511628211
21 | )
22 |
23 | // hashNew initializies a new fnv64a hash value.
24 | func hashNew() uint64 {
25 | return offset64
26 | }
27 |
28 | // hashAdd adds a string to a fnv64a hash value, returning the updated hash.
29 | func hashAdd(h uint64, s string) uint64 {
30 | for i := 0; i < len(s); i++ {
31 | h ^= uint64(s[i])
32 | h *= prime64
33 | }
34 | return h
35 | }
36 |
37 | // hashAddByte adds a byte to a fnv64a hash value, returning the updated hash.
38 | func hashAddByte(h uint64, b byte) uint64 {
39 | h ^= uint64(b)
40 | h *= prime64
41 | return h
42 | }
43 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/common/model/model.go:
--------------------------------------------------------------------------------
1 | // Copyright 2013 The Prometheus Authors
2 | // Licensed under the Apache License, Version 2.0 (the "License");
3 | // you may not use this file except in compliance with the License.
4 | // You may obtain a copy of the License at
5 | //
6 | // http://www.apache.org/licenses/LICENSE-2.0
7 | //
8 | // Unless required by applicable law or agreed to in writing, software
9 | // distributed under the License is distributed on an "AS IS" BASIS,
10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | // See the License for the specific language governing permissions and
12 | // limitations under the License.
13 |
14 | // Package model contains common data structures that are shared across
15 | // Prometheus components and libraries.
16 | package model
17 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/procfs/.gitignore:
--------------------------------------------------------------------------------
1 | /fixtures/
2 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/procfs/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | Prometheus uses GitHub to manage reviews of pull requests.
4 |
5 | * If you have a trivial fix or improvement, go ahead and create a pull request,
6 | addressing (with `@...`) the maintainer of this repository (see
7 | [MAINTAINERS.md](MAINTAINERS.md)) in the description of the pull request.
8 |
9 | * If you plan to do something more involved, first discuss your ideas
10 | on our [mailing list](https://groups.google.com/forum/?fromgroups#!forum/prometheus-developers).
11 | This will avoid unnecessary work and surely give you and us a good deal
12 | of inspiration.
13 |
14 | * Relevant coding style guidelines are the [Go Code Review
15 | Comments](https://code.google.com/p/go-wiki/wiki/CodeReviewComments)
16 | and the _Formatting and style_ section of Peter Bourgon's [Go: Best
17 | Practices for Production
18 | Environments](http://peter.bourgon.org/go-in-production/#formatting-and-style).
19 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/procfs/MAINTAINERS.md:
--------------------------------------------------------------------------------
1 | * Tobias Schmidt @grobie
2 | * Johannes 'fish' Ziemke @discordianfish
3 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/procfs/Makefile:
--------------------------------------------------------------------------------
1 | # Copyright 2018 The Prometheus Authors
2 | # Licensed under the Apache License, Version 2.0 (the "License");
3 | # you may not use this file except in compliance with the License.
4 | # You may obtain a copy of the License at
5 | #
6 | # http://www.apache.org/licenses/LICENSE-2.0
7 | #
8 | # Unless required by applicable law or agreed to in writing, software
9 | # distributed under the License is distributed on an "AS IS" BASIS,
10 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | # See the License for the specific language governing permissions and
12 | # limitations under the License.
13 |
14 | include Makefile.common
15 |
16 | %/.unpacked: %.ttar
17 | ./ttar -C $(dir $*) -x -f $*.ttar
18 | touch $@
19 |
20 | update_fixtures: fixtures.ttar sysfs/fixtures.ttar
21 |
22 | %fixtures.ttar: %/fixtures
23 | rm -v $(dir $*)fixtures/.unpacked
24 | ./ttar -C $(dir $*) -c -f $*fixtures.ttar fixtures/
25 |
26 | .PHONY: build
27 | build:
28 |
29 | .PHONY: test
30 | test: fixtures/.unpacked sysfs/fixtures/.unpacked common-test
31 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/procfs/NOTICE:
--------------------------------------------------------------------------------
1 | procfs provides functions to retrieve system, kernel and process
2 | metrics from the pseudo-filesystem proc.
3 |
4 | Copyright 2014-2015 The Prometheus Authors
5 |
6 | This product includes software developed at
7 | SoundCloud Ltd. (http://soundcloud.com/).
8 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/procfs/README.md:
--------------------------------------------------------------------------------
1 | # procfs
2 |
3 | This procfs package provides functions to retrieve system, kernel and process
4 | metrics from the pseudo-filesystem proc.
5 |
6 | *WARNING*: This package is a work in progress. Its API may still break in
7 | backwards-incompatible ways without warnings. Use it at your own risk.
8 |
9 | [](https://godoc.org/github.com/prometheus/procfs)
10 | [](https://travis-ci.org/prometheus/procfs)
11 | [](https://goreportcard.com/report/github.com/prometheus/procfs)
12 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/procfs/buddyinfo.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 The Prometheus Authors
2 | // Licensed under the Apache License, Version 2.0 (the "License");
3 | // you may not use this file except in compliance with the License.
4 | // You may obtain a copy of the License at
5 | //
6 | // http://www.apache.org/licenses/LICENSE-2.0
7 | //
8 | // Unless required by applicable law or agreed to in writing, software
9 | // distributed under the License is distributed on an "AS IS" BASIS,
10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | // See the License for the specific language governing permissions and
12 | // limitations under the License.
13 |
14 | package procfs
15 |
16 | import (
17 | "bufio"
18 | "fmt"
19 | "io"
20 | "os"
21 | "strconv"
22 | "strings"
23 | )
24 |
25 | // A BuddyInfo is the details parsed from /proc/buddyinfo.
26 | // The data is comprised of an array of free fragments of each size.
27 | // The sizes are 2^n*PAGE_SIZE, where n is the array index.
28 | type BuddyInfo struct {
29 | Node string
30 | Zone string
31 | Sizes []float64
32 | }
33 |
34 | // NewBuddyInfo reads the buddyinfo statistics.
35 | func NewBuddyInfo() ([]BuddyInfo, error) {
36 | fs, err := NewFS(DefaultMountPoint)
37 | if err != nil {
38 | return nil, err
39 | }
40 |
41 | return fs.NewBuddyInfo()
42 | }
43 |
44 | // NewBuddyInfo reads the buddyinfo statistics from the specified `proc` filesystem.
45 | func (fs FS) NewBuddyInfo() ([]BuddyInfo, error) {
46 | file, err := os.Open(fs.Path("buddyinfo"))
47 | if err != nil {
48 | return nil, err
49 | }
50 | defer file.Close()
51 |
52 | return parseBuddyInfo(file)
53 | }
54 |
55 | func parseBuddyInfo(r io.Reader) ([]BuddyInfo, error) {
56 | var (
57 | buddyInfo = []BuddyInfo{}
58 | scanner = bufio.NewScanner(r)
59 | bucketCount = -1
60 | )
61 |
62 | for scanner.Scan() {
63 | var err error
64 | line := scanner.Text()
65 | parts := strings.Fields(line)
66 |
67 | if len(parts) < 4 {
68 | return nil, fmt.Errorf("invalid number of fields when parsing buddyinfo")
69 | }
70 |
71 | node := strings.TrimRight(parts[1], ",")
72 | zone := strings.TrimRight(parts[3], ",")
73 | arraySize := len(parts[4:])
74 |
75 | if bucketCount == -1 {
76 | bucketCount = arraySize
77 | } else {
78 | if bucketCount != arraySize {
79 | return nil, fmt.Errorf("mismatch in number of buddyinfo buckets, previous count %d, new count %d", bucketCount, arraySize)
80 | }
81 | }
82 |
83 | sizes := make([]float64, arraySize)
84 | for i := 0; i < arraySize; i++ {
85 | sizes[i], err = strconv.ParseFloat(parts[i+4], 64)
86 | if err != nil {
87 | return nil, fmt.Errorf("invalid value in buddyinfo: %s", err)
88 | }
89 | }
90 |
91 | buddyInfo = append(buddyInfo, BuddyInfo{node, zone, sizes})
92 | }
93 |
94 | return buddyInfo, scanner.Err()
95 | }
96 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/procfs/doc.go:
--------------------------------------------------------------------------------
1 | // Copyright 2014 Prometheus Team
2 | // Licensed under the Apache License, Version 2.0 (the "License");
3 | // you may not use this file except in compliance with the License.
4 | // You may obtain a copy of the License at
5 | //
6 | // http://www.apache.org/licenses/LICENSE-2.0
7 | //
8 | // Unless required by applicable law or agreed to in writing, software
9 | // distributed under the License is distributed on an "AS IS" BASIS,
10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | // See the License for the specific language governing permissions and
12 | // limitations under the License.
13 |
14 | // Package procfs provides functions to retrieve system, kernel and process
15 | // metrics from the pseudo-filesystem proc.
16 | //
17 | // Example:
18 | //
19 | // package main
20 | //
21 | // import (
22 | // "fmt"
23 | // "log"
24 | //
25 | // "github.com/prometheus/procfs"
26 | // )
27 | //
28 | // func main() {
29 | // p, err := procfs.Self()
30 | // if err != nil {
31 | // log.Fatalf("could not get process: %s", err)
32 | // }
33 | //
34 | // stat, err := p.NewStat()
35 | // if err != nil {
36 | // log.Fatalf("could not get process stat: %s", err)
37 | // }
38 | //
39 | // fmt.Printf("command: %s\n", stat.Comm)
40 | // fmt.Printf("cpu time: %fs\n", stat.CPUTime())
41 | // fmt.Printf("vsize: %dB\n", stat.VirtualMemory())
42 | // fmt.Printf("rss: %dB\n", stat.ResidentMemory())
43 | // }
44 | //
45 | package procfs
46 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/procfs/fs.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 The Prometheus Authors
2 | // Licensed under the Apache License, Version 2.0 (the "License");
3 | // you may not use this file except in compliance with the License.
4 | // You may obtain a copy of the License at
5 | //
6 | // http://www.apache.org/licenses/LICENSE-2.0
7 | //
8 | // Unless required by applicable law or agreed to in writing, software
9 | // distributed under the License is distributed on an "AS IS" BASIS,
10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | // See the License for the specific language governing permissions and
12 | // limitations under the License.
13 |
14 | package procfs
15 |
16 | import (
17 | "fmt"
18 | "os"
19 | "path"
20 |
21 | "github.com/prometheus/procfs/nfs"
22 | "github.com/prometheus/procfs/xfs"
23 | )
24 |
25 | // FS represents the pseudo-filesystem proc, which provides an interface to
26 | // kernel data structures.
27 | type FS string
28 |
29 | // DefaultMountPoint is the common mount point of the proc filesystem.
30 | const DefaultMountPoint = "/proc"
31 |
32 | // NewFS returns a new FS mounted under the given mountPoint. It will error
33 | // if the mount point can't be read.
34 | func NewFS(mountPoint string) (FS, error) {
35 | info, err := os.Stat(mountPoint)
36 | if err != nil {
37 | return "", fmt.Errorf("could not read %s: %s", mountPoint, err)
38 | }
39 | if !info.IsDir() {
40 | return "", fmt.Errorf("mount point %s is not a directory", mountPoint)
41 | }
42 |
43 | return FS(mountPoint), nil
44 | }
45 |
46 | // Path returns the path of the given subsystem relative to the procfs root.
47 | func (fs FS) Path(p ...string) string {
48 | return path.Join(append([]string{string(fs)}, p...)...)
49 | }
50 |
51 | // XFSStats retrieves XFS filesystem runtime statistics.
52 | func (fs FS) XFSStats() (*xfs.Stats, error) {
53 | f, err := os.Open(fs.Path("fs/xfs/stat"))
54 | if err != nil {
55 | return nil, err
56 | }
57 | defer f.Close()
58 |
59 | return xfs.ParseStats(f)
60 | }
61 |
62 | // NFSClientRPCStats retrieves NFS client RPC statistics.
63 | func (fs FS) NFSClientRPCStats() (*nfs.ClientRPCStats, error) {
64 | f, err := os.Open(fs.Path("net/rpc/nfs"))
65 | if err != nil {
66 | return nil, err
67 | }
68 | defer f.Close()
69 |
70 | return nfs.ParseClientRPCStats(f)
71 | }
72 |
73 | // NFSdServerRPCStats retrieves NFS daemon RPC statistics.
74 | func (fs FS) NFSdServerRPCStats() (*nfs.ServerRPCStats, error) {
75 | f, err := os.Open(fs.Path("net/rpc/nfsd"))
76 | if err != nil {
77 | return nil, err
78 | }
79 | defer f.Close()
80 |
81 | return nfs.ParseServerRPCStats(f)
82 | }
83 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/procfs/go.mod:
--------------------------------------------------------------------------------
1 | module github.com/prometheus/procfs
2 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/procfs/internal/util/parse.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 The Prometheus Authors
2 | // Licensed under the Apache License, Version 2.0 (the "License");
3 | // you may not use this file except in compliance with the License.
4 | // You may obtain a copy of the License at
5 | //
6 | // http://www.apache.org/licenses/LICENSE-2.0
7 | //
8 | // Unless required by applicable law or agreed to in writing, software
9 | // distributed under the License is distributed on an "AS IS" BASIS,
10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | // See the License for the specific language governing permissions and
12 | // limitations under the License.
13 |
14 | package util
15 |
16 | import (
17 | "io/ioutil"
18 | "strconv"
19 | "strings"
20 | )
21 |
22 | // ParseUint32s parses a slice of strings into a slice of uint32s.
23 | func ParseUint32s(ss []string) ([]uint32, error) {
24 | us := make([]uint32, 0, len(ss))
25 | for _, s := range ss {
26 | u, err := strconv.ParseUint(s, 10, 32)
27 | if err != nil {
28 | return nil, err
29 | }
30 |
31 | us = append(us, uint32(u))
32 | }
33 |
34 | return us, nil
35 | }
36 |
37 | // ParseUint64s parses a slice of strings into a slice of uint64s.
38 | func ParseUint64s(ss []string) ([]uint64, error) {
39 | us := make([]uint64, 0, len(ss))
40 | for _, s := range ss {
41 | u, err := strconv.ParseUint(s, 10, 64)
42 | if err != nil {
43 | return nil, err
44 | }
45 |
46 | us = append(us, u)
47 | }
48 |
49 | return us, nil
50 | }
51 |
52 | // ReadUintFromFile reads a file and attempts to parse a uint64 from it.
53 | func ReadUintFromFile(path string) (uint64, error) {
54 | data, err := ioutil.ReadFile(path)
55 | if err != nil {
56 | return 0, err
57 | }
58 | return strconv.ParseUint(strings.TrimSpace(string(data)), 10, 64)
59 | }
60 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/procfs/internal/util/sysreadfile_linux.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 The Prometheus Authors
2 | // Licensed under the Apache License, Version 2.0 (the "License");
3 | // you may not use this file except in compliance with the License.
4 | // You may obtain a copy of the License at
5 | //
6 | // http://www.apache.org/licenses/LICENSE-2.0
7 | //
8 | // Unless required by applicable law or agreed to in writing, software
9 | // distributed under the License is distributed on an "AS IS" BASIS,
10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | // See the License for the specific language governing permissions and
12 | // limitations under the License.
13 |
14 | // +build !windows
15 |
16 | package util
17 |
18 | import (
19 | "bytes"
20 | "os"
21 | "syscall"
22 | )
23 |
24 | // SysReadFile is a simplified ioutil.ReadFile that invokes syscall.Read directly.
25 | // https://github.com/prometheus/node_exporter/pull/728/files
26 | func SysReadFile(file string) (string, error) {
27 | f, err := os.Open(file)
28 | if err != nil {
29 | return "", err
30 | }
31 | defer f.Close()
32 |
33 | // On some machines, hwmon drivers are broken and return EAGAIN. This causes
34 | // Go's ioutil.ReadFile implementation to poll forever.
35 | //
36 | // Since we either want to read data or bail immediately, do the simplest
37 | // possible read using syscall directly.
38 | b := make([]byte, 128)
39 | n, err := syscall.Read(int(f.Fd()), b)
40 | if err != nil {
41 | return "", err
42 | }
43 |
44 | return string(bytes.TrimSpace(b[:n])), nil
45 | }
46 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/procfs/nfs/parse_nfs.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 The Prometheus Authors
2 | // Licensed under the Apache License, Version 2.0 (the "License");
3 | // you may not use this file except in compliance with the License.
4 | // You may obtain a copy of the License at
5 | //
6 | // http://www.apache.org/licenses/LICENSE-2.0
7 | //
8 | // Unless required by applicable law or agreed to in writing, software
9 | // distributed under the License is distributed on an "AS IS" BASIS,
10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | // See the License for the specific language governing permissions and
12 | // limitations under the License.
13 |
14 | package nfs
15 |
16 | import (
17 | "bufio"
18 | "fmt"
19 | "io"
20 | "strings"
21 |
22 | "github.com/prometheus/procfs/internal/util"
23 | )
24 |
25 | // ParseClientRPCStats returns stats read from /proc/net/rpc/nfs
26 | func ParseClientRPCStats(r io.Reader) (*ClientRPCStats, error) {
27 | stats := &ClientRPCStats{}
28 |
29 | scanner := bufio.NewScanner(r)
30 | for scanner.Scan() {
31 | line := scanner.Text()
32 | parts := strings.Fields(scanner.Text())
33 | // require at least
34 | if len(parts) < 2 {
35 | return nil, fmt.Errorf("invalid NFS metric line %q", line)
36 | }
37 |
38 | values, err := util.ParseUint64s(parts[1:])
39 | if err != nil {
40 | return nil, fmt.Errorf("error parsing NFS metric line: %s", err)
41 | }
42 |
43 | switch metricLine := parts[0]; metricLine {
44 | case "net":
45 | stats.Network, err = parseNetwork(values)
46 | case "rpc":
47 | stats.ClientRPC, err = parseClientRPC(values)
48 | case "proc2":
49 | stats.V2Stats, err = parseV2Stats(values)
50 | case "proc3":
51 | stats.V3Stats, err = parseV3Stats(values)
52 | case "proc4":
53 | stats.ClientV4Stats, err = parseClientV4Stats(values)
54 | default:
55 | return nil, fmt.Errorf("unknown NFS metric line %q", metricLine)
56 | }
57 | if err != nil {
58 | return nil, fmt.Errorf("errors parsing NFS metric line: %s", err)
59 | }
60 | }
61 |
62 | if err := scanner.Err(); err != nil {
63 | return nil, fmt.Errorf("error scanning NFS file: %s", err)
64 | }
65 |
66 | return stats, nil
67 | }
68 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/procfs/nfs/parse_nfsd.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 The Prometheus Authors
2 | // Licensed under the Apache License, Version 2.0 (the "License");
3 | // you may not use this file except in compliance with the License.
4 | // You may obtain a copy of the License at
5 | //
6 | // http://www.apache.org/licenses/LICENSE-2.0
7 | //
8 | // Unless required by applicable law or agreed to in writing, software
9 | // distributed under the License is distributed on an "AS IS" BASIS,
10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | // See the License for the specific language governing permissions and
12 | // limitations under the License.
13 |
14 | package nfs
15 |
16 | import (
17 | "bufio"
18 | "fmt"
19 | "io"
20 | "strings"
21 |
22 | "github.com/prometheus/procfs/internal/util"
23 | )
24 |
25 | // ParseServerRPCStats returns stats read from /proc/net/rpc/nfsd
26 | func ParseServerRPCStats(r io.Reader) (*ServerRPCStats, error) {
27 | stats := &ServerRPCStats{}
28 |
29 | scanner := bufio.NewScanner(r)
30 | for scanner.Scan() {
31 | line := scanner.Text()
32 | parts := strings.Fields(scanner.Text())
33 | // require at least
34 | if len(parts) < 2 {
35 | return nil, fmt.Errorf("invalid NFSd metric line %q", line)
36 | }
37 | label := parts[0]
38 |
39 | var values []uint64
40 | var err error
41 | if label == "th" {
42 | if len(parts) < 3 {
43 | return nil, fmt.Errorf("invalid NFSd th metric line %q", line)
44 | }
45 | values, err = util.ParseUint64s(parts[1:3])
46 | } else {
47 | values, err = util.ParseUint64s(parts[1:])
48 | }
49 | if err != nil {
50 | return nil, fmt.Errorf("error parsing NFSd metric line: %s", err)
51 | }
52 |
53 | switch metricLine := parts[0]; metricLine {
54 | case "rc":
55 | stats.ReplyCache, err = parseReplyCache(values)
56 | case "fh":
57 | stats.FileHandles, err = parseFileHandles(values)
58 | case "io":
59 | stats.InputOutput, err = parseInputOutput(values)
60 | case "th":
61 | stats.Threads, err = parseThreads(values)
62 | case "ra":
63 | stats.ReadAheadCache, err = parseReadAheadCache(values)
64 | case "net":
65 | stats.Network, err = parseNetwork(values)
66 | case "rpc":
67 | stats.ServerRPC, err = parseServerRPC(values)
68 | case "proc2":
69 | stats.V2Stats, err = parseV2Stats(values)
70 | case "proc3":
71 | stats.V3Stats, err = parseV3Stats(values)
72 | case "proc4":
73 | stats.ServerV4Stats, err = parseServerV4Stats(values)
74 | case "proc4ops":
75 | stats.V4Ops, err = parseV4Ops(values)
76 | default:
77 | return nil, fmt.Errorf("unknown NFSd metric line %q", metricLine)
78 | }
79 | if err != nil {
80 | return nil, fmt.Errorf("errors parsing NFSd metric line: %s", err)
81 | }
82 | }
83 |
84 | if err := scanner.Err(); err != nil {
85 | return nil, fmt.Errorf("error scanning NFSd file: %s", err)
86 | }
87 |
88 | return stats, nil
89 | }
90 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/procfs/proc_io.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 The Prometheus Authors
2 | // Licensed under the Apache License, Version 2.0 (the "License");
3 | // you may not use this file except in compliance with the License.
4 | // You may obtain a copy of the License at
5 | //
6 | // http://www.apache.org/licenses/LICENSE-2.0
7 | //
8 | // Unless required by applicable law or agreed to in writing, software
9 | // distributed under the License is distributed on an "AS IS" BASIS,
10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | // See the License for the specific language governing permissions and
12 | // limitations under the License.
13 |
14 | package procfs
15 |
16 | import (
17 | "fmt"
18 | "io/ioutil"
19 | "os"
20 | )
21 |
22 | // ProcIO models the content of /proc//io.
23 | type ProcIO struct {
24 | // Chars read.
25 | RChar uint64
26 | // Chars written.
27 | WChar uint64
28 | // Read syscalls.
29 | SyscR uint64
30 | // Write syscalls.
31 | SyscW uint64
32 | // Bytes read.
33 | ReadBytes uint64
34 | // Bytes written.
35 | WriteBytes uint64
36 | // Bytes written, but taking into account truncation. See
37 | // Documentation/filesystems/proc.txt in the kernel sources for
38 | // detailed explanation.
39 | CancelledWriteBytes int64
40 | }
41 |
42 | // NewIO creates a new ProcIO instance from a given Proc instance.
43 | func (p Proc) NewIO() (ProcIO, error) {
44 | pio := ProcIO{}
45 |
46 | f, err := os.Open(p.path("io"))
47 | if err != nil {
48 | return pio, err
49 | }
50 | defer f.Close()
51 |
52 | data, err := ioutil.ReadAll(f)
53 | if err != nil {
54 | return pio, err
55 | }
56 |
57 | ioFormat := "rchar: %d\nwchar: %d\nsyscr: %d\nsyscw: %d\n" +
58 | "read_bytes: %d\nwrite_bytes: %d\n" +
59 | "cancelled_write_bytes: %d\n"
60 |
61 | _, err = fmt.Sscanf(string(data), ioFormat, &pio.RChar, &pio.WChar, &pio.SyscR,
62 | &pio.SyscW, &pio.ReadBytes, &pio.WriteBytes, &pio.CancelledWriteBytes)
63 |
64 | return pio, err
65 | }
66 |
--------------------------------------------------------------------------------
/vendor/github.com/prometheus/procfs/proc_ns.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 The Prometheus Authors
2 | // Licensed under the Apache License, Version 2.0 (the "License");
3 | // you may not use this file except in compliance with the License.
4 | // You may obtain a copy of the License at
5 | //
6 | // http://www.apache.org/licenses/LICENSE-2.0
7 | //
8 | // Unless required by applicable law or agreed to in writing, software
9 | // distributed under the License is distributed on an "AS IS" BASIS,
10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | // See the License for the specific language governing permissions and
12 | // limitations under the License.
13 |
14 | package procfs
15 |
16 | import (
17 | "fmt"
18 | "os"
19 | "strconv"
20 | "strings"
21 | )
22 |
23 | // Namespace represents a single namespace of a process.
24 | type Namespace struct {
25 | Type string // Namespace type.
26 | Inode uint32 // Inode number of the namespace. If two processes are in the same namespace their inodes will match.
27 | }
28 |
29 | // Namespaces contains all of the namespaces that the process is contained in.
30 | type Namespaces map[string]Namespace
31 |
32 | // NewNamespaces reads from /proc/[pid/ns/* to get the namespaces of which the
33 | // process is a member.
34 | func (p Proc) NewNamespaces() (Namespaces, error) {
35 | d, err := os.Open(p.path("ns"))
36 | if err != nil {
37 | return nil, err
38 | }
39 | defer d.Close()
40 |
41 | names, err := d.Readdirnames(-1)
42 | if err != nil {
43 | return nil, fmt.Errorf("failed to read contents of ns dir: %v", err)
44 | }
45 |
46 | ns := make(Namespaces, len(names))
47 | for _, name := range names {
48 | target, err := os.Readlink(p.path("ns", name))
49 | if err != nil {
50 | return nil, err
51 | }
52 |
53 | fields := strings.SplitN(target, ":", 2)
54 | if len(fields) != 2 {
55 | return nil, fmt.Errorf("failed to parse namespace type and inode from '%v'", target)
56 | }
57 |
58 | typ := fields[0]
59 | inode, err := strconv.ParseUint(strings.Trim(fields[1], "[]"), 10, 32)
60 | if err != nil {
61 | return nil, fmt.Errorf("failed to parse inode from '%v': %v", fields[1], err)
62 | }
63 |
64 | ns[name] = Namespace{typ, uint32(inode)}
65 | }
66 |
67 | return ns, nil
68 | }
69 |
--------------------------------------------------------------------------------
/vendor/github.com/vinkdong/gox/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/vendor/github.com/vinkdong/gox/vtime/time.go:
--------------------------------------------------------------------------------
1 | package vtime
2 |
3 | import "time"
4 |
5 | func ParserTimestampMs(timestampMs int64) time.Time {
6 | return time.Unix(0, timestampMs*10e5)
7 | }
8 |
9 | func ParserTimestampNs(timestampNs int64) time.Time {
10 | return time.Unix(0, timestampNs)
11 | }
12 |
13 | func ParserTimestampS(timestampS int64) time.Time {
14 | return time.Unix(timestampS, 0)
15 | }
16 |
--------------------------------------------------------------------------------
/vendor/github.com/vinkdong/gox/vtime/types.go:
--------------------------------------------------------------------------------
1 | package vtime
2 |
3 | import (
4 | "strconv"
5 | "time"
6 | "strings"
7 | "github.com/vinkdong/gox/log"
8 | )
9 |
10 | type Time struct {
11 | Format string // timestamp or time layout
12 | Unit string // if format is timestamp it can be ms ns s ..
13 | Value string // a string formatted time value
14 | Time time.Time // the standard time
15 | TZ string // if don't set timezoo
16 | }
17 |
18 | func (t *Time) ToSpecFormat(format string) string {
19 | return t.Time.Format(format)
20 | }
21 |
22 | func (t *Time) FromRelativeTime(relative string) error {
23 | if strings.HasPrefix(relative, "now") {
24 |
25 | var (
26 | now = time.Now().UTC()
27 | duration time.Duration
28 | err error
29 | )
30 | duration, err = time.ParseDuration(strings.TrimPrefix(relative, "now"))
31 | if err != nil {
32 | log.Error(err)
33 | return err
34 | }
35 |
36 | t.Time = now.Add(duration)
37 | t.FromTime(t.Time)
38 | }
39 | return nil
40 | }
41 |
42 | /**
43 | transfer a time format to another format
44 | */
45 | func (t *Time) Transfer(to *Time) error {
46 | stdTime, err := t.Parser()
47 | if err != nil {
48 | return err
49 | }
50 | to.FromTime(stdTime)
51 | return nil
52 | }
53 |
54 | // Parser VTime Format to time
55 | func (t *Time) Parser() (time.Time, error) {
56 | var err error
57 | if t.Format == "timestamp" {
58 | formTimeValue, err := strconv.ParseInt(t.Value, 0, 64)
59 | switch t.Unit {
60 | case "ms":
61 | t.Time = ParserTimestampMs(formTimeValue)
62 | break
63 | case "ns":
64 | t.Time = ParserTimestampNs(formTimeValue)
65 | case "s":
66 | t.Time = ParserTimestampS(formTimeValue)
67 | default:
68 | t.Time = time.Now()
69 | }
70 | return t.Time, err
71 | } else {
72 | if t.TZ != "" {
73 | loc, err := time.LoadLocation(t.TZ)
74 | if err == nil {
75 | t.Time, err = time.ParseInLocation(t.Format, t.Value, loc)
76 | return t.Time, err
77 | }
78 | }
79 | t.Time, err = time.Parse(t.Format, t.Value)
80 | }
81 | return t.Time, err
82 | }
83 |
84 | /**
85 | parser time to vtime
86 | */
87 | func (t *Time) FromTime(stdTime time.Time) {
88 | if t.Format == "timestamp" {
89 | switch t.Unit {
90 | case "ms":
91 | ttime := stdTime.UnixNano()
92 | t.Value = strconv.FormatInt(ttime, 0)
93 | return
94 | case "ns":
95 | ttime := stdTime.UnixNano()
96 | t.Value = strconv.FormatInt(ttime, 0)
97 | return
98 | case "s":
99 | ttime := stdTime.Unix()
100 | t.Value = strconv.FormatInt(ttime, 0)
101 | default:
102 | return
103 | }
104 | } else {
105 | if t.Format == ""{
106 | t.Format = "2006-01-02 15:04:05"
107 | }
108 | if t.TZ != ""{
109 | loc, err := time.LoadLocation(t.TZ)
110 | if err == nil{
111 | t.Value = stdTime.In(loc).Format(t.Format)
112 | return
113 | }
114 | }
115 | t.Value = stdTime.Format(t.Format)
116 | }
117 | }
118 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/AUTHORS:
--------------------------------------------------------------------------------
1 | # This source code refers to The Go Authors for copyright purposes.
2 | # The master list of authors is in the main Go distribution,
3 | # visible at http://tip.golang.org/AUTHORS.
4 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/CONTRIBUTORS:
--------------------------------------------------------------------------------
1 | # This source code was written by the Go contributors.
2 | # The master list of contributors is in the main Go distribution,
3 | # visible at http://tip.golang.org/CONTRIBUTORS.
4 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2009 The Go Authors. All rights reserved.
2 |
3 | Redistribution and use in source and binary forms, with or without
4 | modification, are permitted provided that the following conditions are
5 | met:
6 |
7 | * Redistributions of source code must retain the above copyright
8 | notice, this list of conditions and the following disclaimer.
9 | * Redistributions in binary form must reproduce the above
10 | copyright notice, this list of conditions and the following disclaimer
11 | in the documentation and/or other materials provided with the
12 | distribution.
13 | * Neither the name of Google Inc. nor the names of its
14 | contributors may be used to endorse or promote products derived from
15 | this software without specific prior written permission.
16 |
17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/PATENTS:
--------------------------------------------------------------------------------
1 | Additional IP Rights Grant (Patents)
2 |
3 | "This implementation" means the copyrightable works distributed by
4 | Google as part of the Go project.
5 |
6 | Google hereby grants to You a perpetual, worldwide, non-exclusive,
7 | no-charge, royalty-free, irrevocable (except as stated in this section)
8 | patent license to make, have made, use, offer to sell, sell, import,
9 | transfer and otherwise run, modify and propagate the contents of this
10 | implementation of Go, where such license applies only to those patent
11 | claims, both currently owned or controlled by Google and acquired in
12 | the future, licensable by Google that are necessarily infringed by this
13 | implementation of Go. This grant does not include claims that would be
14 | infringed only as a consequence of further modification of this
15 | implementation. If you or your agent or exclusive licensee institute or
16 | order or agree to the institution of patent litigation against any
17 | entity (including a cross-claim or counterclaim in a lawsuit) alleging
18 | that this implementation of Go or any code incorporated within this
19 | implementation of Go constitutes direct or contributory patent
20 | infringement, or inducement of patent infringement, then any patent
21 | rights granted to you under this License for this implementation of Go
22 | shall terminate as of the date such litigation is filed.
23 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/.gitignore:
--------------------------------------------------------------------------------
1 | _obj/
2 | unix.test
3 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/aliases.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 dragonfly freebsd linux netbsd openbsd solaris
6 | // +build go1.9
7 |
8 | package unix
9 |
10 | import "syscall"
11 |
12 | type Signal = syscall.Signal
13 | type Errno = syscall.Errno
14 | type SysProcAttr = syscall.SysProcAttr
15 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System calls for ppc64, AIX are implemented in runtime/syscall_aix.go
11 | //
12 |
13 | TEXT ·syscall6(SB),NOSPLIT,$0-88
14 | JMP syscall·syscall6(SB)
15 |
16 | TEXT ·rawSyscall6(SB),NOSPLIT,$0-88
17 | JMP syscall·rawSyscall6(SB)
18 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_darwin_386.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for 386, Darwin
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for AMD64, Darwin
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_darwin_arm.s:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 !gccgo
6 | // +build arm,darwin
7 |
8 | #include "textflag.h"
9 |
10 | //
11 | // System call support for ARM, Darwin
12 | //
13 |
14 | // Just jump to package syscall's implementation for all these functions.
15 | // The runtime may know about them.
16 |
17 | TEXT ·Syscall(SB),NOSPLIT,$0-28
18 | B syscall·Syscall(SB)
19 |
20 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
21 | B syscall·Syscall6(SB)
22 |
23 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
24 | B syscall·Syscall9(SB)
25 |
26 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
27 | B syscall·RawSyscall(SB)
28 |
29 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
30 | B syscall·RawSyscall6(SB)
31 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 !gccgo
6 | // +build arm64,darwin
7 |
8 | #include "textflag.h"
9 |
10 | //
11 | // System call support for AMD64, Darwin
12 | //
13 |
14 | // Just jump to package syscall's implementation for all these functions.
15 | // The runtime may know about them.
16 |
17 | TEXT ·Syscall(SB),NOSPLIT,$0-56
18 | B syscall·Syscall(SB)
19 |
20 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
21 | B syscall·Syscall6(SB)
22 |
23 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
24 | B syscall·Syscall9(SB)
25 |
26 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
27 | B syscall·RawSyscall(SB)
28 |
29 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
30 | B syscall·RawSyscall6(SB)
31 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for AMD64, DragonFly
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_freebsd_386.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for 386, FreeBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for AMD64, FreeBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s:
--------------------------------------------------------------------------------
1 | // Copyright 2012 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 !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for ARM, FreeBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | B syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | B syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | B syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | B syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | B syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for ARM64, FreeBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_386.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System calls for 386, Linux
11 | //
12 |
13 | // See ../runtime/sys_linux_386.s for the reason why we always use int 0x80
14 | // instead of the glibc-specific "CALL 0x10(GS)".
15 | #define INVOKE_SYSCALL INT $0x80
16 |
17 | // Just jump to package syscall's implementation for all these functions.
18 | // The runtime may know about them.
19 |
20 | TEXT ·Syscall(SB),NOSPLIT,$0-28
21 | JMP syscall·Syscall(SB)
22 |
23 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
24 | JMP syscall·Syscall6(SB)
25 |
26 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
27 | CALL runtime·entersyscall(SB)
28 | MOVL trap+0(FP), AX // syscall entry
29 | MOVL a1+4(FP), BX
30 | MOVL a2+8(FP), CX
31 | MOVL a3+12(FP), DX
32 | MOVL $0, SI
33 | MOVL $0, DI
34 | INVOKE_SYSCALL
35 | MOVL AX, r1+16(FP)
36 | MOVL DX, r2+20(FP)
37 | CALL runtime·exitsyscall(SB)
38 | RET
39 |
40 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
41 | JMP syscall·RawSyscall(SB)
42 |
43 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
44 | JMP syscall·RawSyscall6(SB)
45 |
46 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
47 | MOVL trap+0(FP), AX // syscall entry
48 | MOVL a1+4(FP), BX
49 | MOVL a2+8(FP), CX
50 | MOVL a3+12(FP), DX
51 | MOVL $0, SI
52 | MOVL $0, DI
53 | INVOKE_SYSCALL
54 | MOVL AX, r1+16(FP)
55 | MOVL DX, r2+20(FP)
56 | RET
57 |
58 | TEXT ·socketcall(SB),NOSPLIT,$0-36
59 | JMP syscall·socketcall(SB)
60 |
61 | TEXT ·rawsocketcall(SB),NOSPLIT,$0-36
62 | JMP syscall·rawsocketcall(SB)
63 |
64 | TEXT ·seek(SB),NOSPLIT,$0-28
65 | JMP syscall·seek(SB)
66 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System calls for AMD64, Linux
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
23 | CALL runtime·entersyscall(SB)
24 | MOVQ a1+8(FP), DI
25 | MOVQ a2+16(FP), SI
26 | MOVQ a3+24(FP), DX
27 | MOVQ $0, R10
28 | MOVQ $0, R8
29 | MOVQ $0, R9
30 | MOVQ trap+0(FP), AX // syscall entry
31 | SYSCALL
32 | MOVQ AX, r1+32(FP)
33 | MOVQ DX, r2+40(FP)
34 | CALL runtime·exitsyscall(SB)
35 | RET
36 |
37 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
38 | JMP syscall·RawSyscall(SB)
39 |
40 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
41 | JMP syscall·RawSyscall6(SB)
42 |
43 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
44 | MOVQ a1+8(FP), DI
45 | MOVQ a2+16(FP), SI
46 | MOVQ a3+24(FP), DX
47 | MOVQ $0, R10
48 | MOVQ $0, R8
49 | MOVQ $0, R9
50 | MOVQ trap+0(FP), AX // syscall entry
51 | SYSCALL
52 | MOVQ AX, r1+32(FP)
53 | MOVQ DX, r2+40(FP)
54 | RET
55 |
56 | TEXT ·gettimeofday(SB),NOSPLIT,$0-16
57 | JMP syscall·gettimeofday(SB)
58 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_arm.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System calls for arm, Linux
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | B syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | B syscall·Syscall6(SB)
21 |
22 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
23 | BL runtime·entersyscall(SB)
24 | MOVW trap+0(FP), R7
25 | MOVW a1+4(FP), R0
26 | MOVW a2+8(FP), R1
27 | MOVW a3+12(FP), R2
28 | MOVW $0, R3
29 | MOVW $0, R4
30 | MOVW $0, R5
31 | SWI $0
32 | MOVW R0, r1+16(FP)
33 | MOVW $0, R0
34 | MOVW R0, r2+20(FP)
35 | BL runtime·exitsyscall(SB)
36 | RET
37 |
38 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
39 | B syscall·RawSyscall(SB)
40 |
41 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
42 | B syscall·RawSyscall6(SB)
43 |
44 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
45 | MOVW trap+0(FP), R7 // syscall entry
46 | MOVW a1+4(FP), R0
47 | MOVW a2+8(FP), R1
48 | MOVW a3+12(FP), R2
49 | SWI $0
50 | MOVW R0, r1+16(FP)
51 | MOVW $0, R0
52 | MOVW R0, r2+20(FP)
53 | RET
54 |
55 | TEXT ·seek(SB),NOSPLIT,$0-28
56 | B syscall·seek(SB)
57 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_arm64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 linux
6 | // +build arm64
7 | // +build !gccgo
8 |
9 | #include "textflag.h"
10 |
11 | // Just jump to package syscall's implementation for all these functions.
12 | // The runtime may know about them.
13 |
14 | TEXT ·Syscall(SB),NOSPLIT,$0-56
15 | B syscall·Syscall(SB)
16 |
17 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
18 | B syscall·Syscall6(SB)
19 |
20 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
21 | BL runtime·entersyscall(SB)
22 | MOVD a1+8(FP), R0
23 | MOVD a2+16(FP), R1
24 | MOVD a3+24(FP), R2
25 | MOVD $0, R3
26 | MOVD $0, R4
27 | MOVD $0, R5
28 | MOVD trap+0(FP), R8 // syscall entry
29 | SVC
30 | MOVD R0, r1+32(FP) // r1
31 | MOVD R1, r2+40(FP) // r2
32 | BL runtime·exitsyscall(SB)
33 | RET
34 |
35 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
36 | B syscall·RawSyscall(SB)
37 |
38 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
39 | B syscall·RawSyscall6(SB)
40 |
41 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
42 | MOVD a1+8(FP), R0
43 | MOVD a2+16(FP), R1
44 | MOVD a3+24(FP), R2
45 | MOVD $0, R3
46 | MOVD $0, R4
47 | MOVD $0, R5
48 | MOVD trap+0(FP), R8 // syscall entry
49 | SVC
50 | MOVD R0, r1+32(FP)
51 | MOVD R1, r2+40(FP)
52 | RET
53 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 linux
6 | // +build mips64 mips64le
7 | // +build !gccgo
8 |
9 | #include "textflag.h"
10 |
11 | //
12 | // System calls for mips64, Linux
13 | //
14 |
15 | // Just jump to package syscall's implementation for all these functions.
16 | // The runtime may know about them.
17 |
18 | TEXT ·Syscall(SB),NOSPLIT,$0-56
19 | JMP syscall·Syscall(SB)
20 |
21 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
22 | JMP syscall·Syscall6(SB)
23 |
24 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
25 | JAL runtime·entersyscall(SB)
26 | MOVV a1+8(FP), R4
27 | MOVV a2+16(FP), R5
28 | MOVV a3+24(FP), R6
29 | MOVV R0, R7
30 | MOVV R0, R8
31 | MOVV R0, R9
32 | MOVV trap+0(FP), R2 // syscall entry
33 | SYSCALL
34 | MOVV R2, r1+32(FP)
35 | MOVV R3, r2+40(FP)
36 | JAL runtime·exitsyscall(SB)
37 | RET
38 |
39 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
40 | JMP syscall·RawSyscall(SB)
41 |
42 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
43 | JMP syscall·RawSyscall6(SB)
44 |
45 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
46 | MOVV a1+8(FP), R4
47 | MOVV a2+16(FP), R5
48 | MOVV a3+24(FP), R6
49 | MOVV R0, R7
50 | MOVV R0, R8
51 | MOVV R0, R9
52 | MOVV trap+0(FP), R2 // syscall entry
53 | SYSCALL
54 | MOVV R2, r1+32(FP)
55 | MOVV R3, r2+40(FP)
56 | RET
57 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s:
--------------------------------------------------------------------------------
1 | // Copyright 2016 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 linux
6 | // +build mips mipsle
7 | // +build !gccgo
8 |
9 | #include "textflag.h"
10 |
11 | //
12 | // System calls for mips, Linux
13 | //
14 |
15 | // Just jump to package syscall's implementation for all these functions.
16 | // The runtime may know about them.
17 |
18 | TEXT ·Syscall(SB),NOSPLIT,$0-28
19 | JMP syscall·Syscall(SB)
20 |
21 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
22 | JMP syscall·Syscall6(SB)
23 |
24 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
25 | JMP syscall·Syscall9(SB)
26 |
27 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
28 | JAL runtime·entersyscall(SB)
29 | MOVW a1+4(FP), R4
30 | MOVW a2+8(FP), R5
31 | MOVW a3+12(FP), R6
32 | MOVW R0, R7
33 | MOVW trap+0(FP), R2 // syscall entry
34 | SYSCALL
35 | MOVW R2, r1+16(FP) // r1
36 | MOVW R3, r2+20(FP) // r2
37 | JAL runtime·exitsyscall(SB)
38 | RET
39 |
40 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
41 | JMP syscall·RawSyscall(SB)
42 |
43 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
44 | JMP syscall·RawSyscall6(SB)
45 |
46 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
47 | MOVW a1+4(FP), R4
48 | MOVW a2+8(FP), R5
49 | MOVW a3+12(FP), R6
50 | MOVW trap+0(FP), R2 // syscall entry
51 | SYSCALL
52 | MOVW R2, r1+16(FP)
53 | MOVW R3, r2+20(FP)
54 | RET
55 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s:
--------------------------------------------------------------------------------
1 | // Copyright 2014 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 linux
6 | // +build ppc64 ppc64le
7 | // +build !gccgo
8 |
9 | #include "textflag.h"
10 |
11 | //
12 | // System calls for ppc64, Linux
13 | //
14 |
15 | // Just jump to package syscall's implementation for all these functions.
16 | // The runtime may know about them.
17 |
18 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
19 | BL runtime·entersyscall(SB)
20 | MOVD a1+8(FP), R3
21 | MOVD a2+16(FP), R4
22 | MOVD a3+24(FP), R5
23 | MOVD R0, R6
24 | MOVD R0, R7
25 | MOVD R0, R8
26 | MOVD trap+0(FP), R9 // syscall entry
27 | SYSCALL R9
28 | MOVD R3, r1+32(FP)
29 | MOVD R4, r2+40(FP)
30 | BL runtime·exitsyscall(SB)
31 | RET
32 |
33 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
34 | MOVD a1+8(FP), R3
35 | MOVD a2+16(FP), R4
36 | MOVD a3+24(FP), R5
37 | MOVD R0, R6
38 | MOVD R0, R7
39 | MOVD R0, R8
40 | MOVD trap+0(FP), R9 // syscall entry
41 | SYSCALL R9
42 | MOVD R3, r1+32(FP)
43 | MOVD R4, r2+40(FP)
44 | RET
45 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_s390x.s:
--------------------------------------------------------------------------------
1 | // Copyright 2016 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 s390x
6 | // +build linux
7 | // +build !gccgo
8 |
9 | #include "textflag.h"
10 |
11 | //
12 | // System calls for s390x, Linux
13 | //
14 |
15 | // Just jump to package syscall's implementation for all these functions.
16 | // The runtime may know about them.
17 |
18 | TEXT ·Syscall(SB),NOSPLIT,$0-56
19 | BR syscall·Syscall(SB)
20 |
21 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
22 | BR syscall·Syscall6(SB)
23 |
24 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
25 | BL runtime·entersyscall(SB)
26 | MOVD a1+8(FP), R2
27 | MOVD a2+16(FP), R3
28 | MOVD a3+24(FP), R4
29 | MOVD $0, R5
30 | MOVD $0, R6
31 | MOVD $0, R7
32 | MOVD trap+0(FP), R1 // syscall entry
33 | SYSCALL
34 | MOVD R2, r1+32(FP)
35 | MOVD R3, r2+40(FP)
36 | BL runtime·exitsyscall(SB)
37 | RET
38 |
39 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
40 | BR syscall·RawSyscall(SB)
41 |
42 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
43 | BR syscall·RawSyscall6(SB)
44 |
45 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
46 | MOVD a1+8(FP), R2
47 | MOVD a2+16(FP), R3
48 | MOVD a3+24(FP), R4
49 | MOVD $0, R5
50 | MOVD $0, R6
51 | MOVD $0, R7
52 | MOVD trap+0(FP), R1 // syscall entry
53 | SYSCALL
54 | MOVD R2, r1+32(FP)
55 | MOVD R3, r2+40(FP)
56 | RET
57 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_netbsd_386.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for 386, NetBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for AMD64, NetBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s:
--------------------------------------------------------------------------------
1 | // Copyright 2013 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 !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for ARM, NetBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | B syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | B syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | B syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | B syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | B syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_openbsd_386.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for 386, OpenBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for AMD64, OpenBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for ARM, OpenBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | B syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | B syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | B syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | B syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | B syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2014 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 !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go
11 | //
12 |
13 | TEXT ·sysvicall6(SB),NOSPLIT,$0-88
14 | JMP syscall·sysvicall6(SB)
15 |
16 | TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88
17 | JMP syscall·rawSysvicall6(SB)
18 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/bluetooth_linux.go:
--------------------------------------------------------------------------------
1 | // Copyright 2016 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 | // Bluetooth sockets and messages
6 |
7 | package unix
8 |
9 | // Bluetooth Protocols
10 | const (
11 | BTPROTO_L2CAP = 0
12 | BTPROTO_HCI = 1
13 | BTPROTO_SCO = 2
14 | BTPROTO_RFCOMM = 3
15 | BTPROTO_BNEP = 4
16 | BTPROTO_CMTP = 5
17 | BTPROTO_HIDP = 6
18 | BTPROTO_AVDTP = 7
19 | )
20 |
21 | const (
22 | HCI_CHANNEL_RAW = 0
23 | HCI_CHANNEL_USER = 1
24 | HCI_CHANNEL_MONITOR = 2
25 | HCI_CHANNEL_CONTROL = 3
26 | )
27 |
28 | // Socketoption Level
29 | const (
30 | SOL_BLUETOOTH = 0x112
31 | SOL_HCI = 0x0
32 | SOL_L2CAP = 0x6
33 | SOL_RFCOMM = 0x12
34 | SOL_SCO = 0x11
35 | )
36 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/constants.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 dragonfly freebsd linux netbsd openbsd solaris
6 |
7 | package unix
8 |
9 | const (
10 | R_OK = 0x4
11 | W_OK = 0x2
12 | X_OK = 0x1
13 | )
14 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_aix_ppc.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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
6 | // +build ppc
7 |
8 | // Functions to access/create device major and minor numbers matching the
9 | // encoding used by AIX.
10 |
11 | package unix
12 |
13 | // Major returns the major component of a Linux device number.
14 | func Major(dev uint64) uint32 {
15 | return uint32((dev >> 16) & 0xffff)
16 | }
17 |
18 | // Minor returns the minor component of a Linux device number.
19 | func Minor(dev uint64) uint32 {
20 | return uint32(dev & 0xffff)
21 | }
22 |
23 | // Mkdev returns a Linux device number generated from the given major and minor
24 | // components.
25 | func Mkdev(major, minor uint32) uint64 {
26 | return uint64(((major) << 16) | (minor))
27 | }
28 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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
6 | // +build ppc64
7 |
8 | // Functions to access/create device major and minor numbers matching the
9 | // encoding used AIX.
10 |
11 | package unix
12 |
13 | // Major returns the major component of a Linux device number.
14 | func Major(dev uint64) uint32 {
15 | return uint32((dev & 0x3fffffff00000000) >> 32)
16 | }
17 |
18 | // Minor returns the minor component of a Linux device number.
19 | func Minor(dev uint64) uint32 {
20 | return uint32((dev & 0x00000000ffffffff) >> 0)
21 | }
22 |
23 | // Mkdev returns a Linux device number generated from the given major and minor
24 | // components.
25 | func Mkdev(major, minor uint32) uint64 {
26 | var DEVNO64 uint64
27 | DEVNO64 = 0x8000000000000000
28 | return ((uint64(major) << 32) | (uint64(minor) & 0x00000000FFFFFFFF) | DEVNO64)
29 | }
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_darwin.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 | // Functions to access/create device major and minor numbers matching the
6 | // encoding used in Darwin's sys/types.h header.
7 |
8 | package unix
9 |
10 | // Major returns the major component of a Darwin device number.
11 | func Major(dev uint64) uint32 {
12 | return uint32((dev >> 24) & 0xff)
13 | }
14 |
15 | // Minor returns the minor component of a Darwin device number.
16 | func Minor(dev uint64) uint32 {
17 | return uint32(dev & 0xffffff)
18 | }
19 |
20 | // Mkdev returns a Darwin device number generated from the given major and minor
21 | // components.
22 | func Mkdev(major, minor uint32) uint64 {
23 | return (uint64(major) << 24) | uint64(minor)
24 | }
25 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_dragonfly.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 | // Functions to access/create device major and minor numbers matching the
6 | // encoding used in Dragonfly's sys/types.h header.
7 | //
8 | // The information below is extracted and adapted from sys/types.h:
9 | //
10 | // Minor gives a cookie instead of an index since in order to avoid changing the
11 | // meanings of bits 0-15 or wasting time and space shifting bits 16-31 for
12 | // devices that don't use them.
13 |
14 | package unix
15 |
16 | // Major returns the major component of a DragonFlyBSD device number.
17 | func Major(dev uint64) uint32 {
18 | return uint32((dev >> 8) & 0xff)
19 | }
20 |
21 | // Minor returns the minor component of a DragonFlyBSD device number.
22 | func Minor(dev uint64) uint32 {
23 | return uint32(dev & 0xffff00ff)
24 | }
25 |
26 | // Mkdev returns a DragonFlyBSD device number generated from the given major and
27 | // minor components.
28 | func Mkdev(major, minor uint32) uint64 {
29 | return (uint64(major) << 8) | uint64(minor)
30 | }
31 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_freebsd.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 | // Functions to access/create device major and minor numbers matching the
6 | // encoding used in FreeBSD's sys/types.h header.
7 | //
8 | // The information below is extracted and adapted from sys/types.h:
9 | //
10 | // Minor gives a cookie instead of an index since in order to avoid changing the
11 | // meanings of bits 0-15 or wasting time and space shifting bits 16-31 for
12 | // devices that don't use them.
13 |
14 | package unix
15 |
16 | // Major returns the major component of a FreeBSD device number.
17 | func Major(dev uint64) uint32 {
18 | return uint32((dev >> 8) & 0xff)
19 | }
20 |
21 | // Minor returns the minor component of a FreeBSD device number.
22 | func Minor(dev uint64) uint32 {
23 | return uint32(dev & 0xffff00ff)
24 | }
25 |
26 | // Mkdev returns a FreeBSD device number generated from the given major and
27 | // minor components.
28 | func Mkdev(major, minor uint32) uint64 {
29 | return (uint64(major) << 8) | uint64(minor)
30 | }
31 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_linux.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 | // Functions to access/create device major and minor numbers matching the
6 | // encoding used by the Linux kernel and glibc.
7 | //
8 | // The information below is extracted and adapted from bits/sysmacros.h in the
9 | // glibc sources:
10 | //
11 | // dev_t in glibc is 64-bit, with 32-bit major and minor numbers. glibc's
12 | // default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of the major
13 | // number and m is a hex digit of the minor number. This is backward compatible
14 | // with legacy systems where dev_t is 16 bits wide, encoded as MMmm. It is also
15 | // backward compatible with the Linux kernel, which for some architectures uses
16 | // 32-bit dev_t, encoded as mmmM MMmm.
17 |
18 | package unix
19 |
20 | // Major returns the major component of a Linux device number.
21 | func Major(dev uint64) uint32 {
22 | major := uint32((dev & 0x00000000000fff00) >> 8)
23 | major |= uint32((dev & 0xfffff00000000000) >> 32)
24 | return major
25 | }
26 |
27 | // Minor returns the minor component of a Linux device number.
28 | func Minor(dev uint64) uint32 {
29 | minor := uint32((dev & 0x00000000000000ff) >> 0)
30 | minor |= uint32((dev & 0x00000ffffff00000) >> 12)
31 | return minor
32 | }
33 |
34 | // Mkdev returns a Linux device number generated from the given major and minor
35 | // components.
36 | func Mkdev(major, minor uint32) uint64 {
37 | dev := (uint64(major) & 0x00000fff) << 8
38 | dev |= (uint64(major) & 0xfffff000) << 32
39 | dev |= (uint64(minor) & 0x000000ff) << 0
40 | dev |= (uint64(minor) & 0xffffff00) << 12
41 | return dev
42 | }
43 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_netbsd.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 | // Functions to access/create device major and minor numbers matching the
6 | // encoding used in NetBSD's sys/types.h header.
7 |
8 | package unix
9 |
10 | // Major returns the major component of a NetBSD device number.
11 | func Major(dev uint64) uint32 {
12 | return uint32((dev & 0x000fff00) >> 8)
13 | }
14 |
15 | // Minor returns the minor component of a NetBSD device number.
16 | func Minor(dev uint64) uint32 {
17 | minor := uint32((dev & 0x000000ff) >> 0)
18 | minor |= uint32((dev & 0xfff00000) >> 12)
19 | return minor
20 | }
21 |
22 | // Mkdev returns a NetBSD device number generated from the given major and minor
23 | // components.
24 | func Mkdev(major, minor uint32) uint64 {
25 | dev := (uint64(major) << 8) & 0x000fff00
26 | dev |= (uint64(minor) << 12) & 0xfff00000
27 | dev |= (uint64(minor) << 0) & 0x000000ff
28 | return dev
29 | }
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_openbsd.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 | // Functions to access/create device major and minor numbers matching the
6 | // encoding used in OpenBSD's sys/types.h header.
7 |
8 | package unix
9 |
10 | // Major returns the major component of an OpenBSD device number.
11 | func Major(dev uint64) uint32 {
12 | return uint32((dev & 0x0000ff00) >> 8)
13 | }
14 |
15 | // Minor returns the minor component of an OpenBSD device number.
16 | func Minor(dev uint64) uint32 {
17 | minor := uint32((dev & 0x000000ff) >> 0)
18 | minor |= uint32((dev & 0xffff0000) >> 8)
19 | return minor
20 | }
21 |
22 | // Mkdev returns an OpenBSD device number generated from the given major and minor
23 | // components.
24 | func Mkdev(major, minor uint32) uint64 {
25 | dev := (uint64(major) << 8) & 0x0000ff00
26 | dev |= (uint64(minor) << 8) & 0xffff0000
27 | dev |= (uint64(minor) << 0) & 0x000000ff
28 | return dev
29 | }
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dirent.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 dragonfly freebsd linux nacl netbsd openbsd solaris
6 |
7 | package unix
8 |
9 | import "syscall"
10 |
11 | // ParseDirent parses up to max directory entries in buf,
12 | // appending the names to names. It returns the number of
13 | // bytes consumed from buf, the number of entries added
14 | // to names, and the new names slice.
15 | func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {
16 | return syscall.ParseDirent(buf, max, names)
17 | }
18 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/endian_big.go:
--------------------------------------------------------------------------------
1 | // Copyright 2016 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 ppc64 s390x mips mips64
6 |
7 | package unix
8 |
9 | const isBigEndian = true
10 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/endian_little.go:
--------------------------------------------------------------------------------
1 | // Copyright 2016 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 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le
6 |
7 | package unix
8 |
9 | const isBigEndian = false
10 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/env_unix.go:
--------------------------------------------------------------------------------
1 | // Copyright 2010 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 dragonfly freebsd linux netbsd openbsd solaris
6 |
7 | // Unix environment variables.
8 |
9 | package unix
10 |
11 | import "syscall"
12 |
13 | func Getenv(key string) (value string, found bool) {
14 | return syscall.Getenv(key)
15 | }
16 |
17 | func Setenv(key, value string) error {
18 | return syscall.Setenv(key, value)
19 | }
20 |
21 | func Clearenv() {
22 | syscall.Clearenv()
23 | }
24 |
25 | func Environ() []string {
26 | return syscall.Environ()
27 | }
28 |
29 | func Unsetenv(key string) error {
30 | return syscall.Unsetenv(key)
31 | }
32 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/fcntl.go:
--------------------------------------------------------------------------------
1 | // Copyright 2014 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 dragonfly freebsd linux netbsd openbsd
6 |
7 | package unix
8 |
9 | import "unsafe"
10 |
11 | // fcntl64Syscall is usually SYS_FCNTL, but is overridden on 32-bit Linux
12 | // systems by flock_linux_32bit.go to be SYS_FCNTL64.
13 | var fcntl64Syscall uintptr = SYS_FCNTL
14 |
15 | // FcntlInt performs a fcntl syscall on fd with the provided command and argument.
16 | func FcntlInt(fd uintptr, cmd, arg int) (int, error) {
17 | valptr, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(arg))
18 | var err error
19 | if errno != 0 {
20 | err = errno
21 | }
22 | return int(valptr), err
23 | }
24 |
25 | // FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
26 | func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
27 | _, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk)))
28 | if errno == 0 {
29 | return nil
30 | }
31 | return errno
32 | }
33 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/fcntl_darwin.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 | package unix
6 |
7 | import "unsafe"
8 |
9 | // FcntlInt performs a fcntl syscall on fd with the provided command and argument.
10 | func FcntlInt(fd uintptr, cmd, arg int) (int, error) {
11 | return fcntl(int(fd), cmd, arg)
12 | }
13 |
14 | // FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
15 | func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
16 | _, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(lk))))
17 | return err
18 | }
19 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go:
--------------------------------------------------------------------------------
1 | // +build linux,386 linux,arm linux,mips linux,mipsle
2 |
3 | // Copyright 2014 The Go Authors. All rights reserved.
4 | // Use of this source code is governed by a BSD-style
5 | // license that can be found in the LICENSE file.
6 |
7 | package unix
8 |
9 | func init() {
10 | // On 32-bit Linux systems, the fcntl syscall that matches Go's
11 | // Flock_t type is SYS_FCNTL64, not SYS_FCNTL.
12 | fcntl64Syscall = SYS_FCNTL64
13 | }
14 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/gccgo.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 gccgo
6 | // +build !aix
7 |
8 | package unix
9 |
10 | import "syscall"
11 |
12 | // We can't use the gc-syntax .s files for gccgo. On the plus side
13 | // much of the functionality can be written directly in Go.
14 |
15 | //extern gccgoRealSyscallNoError
16 | func realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr)
17 |
18 | //extern gccgoRealSyscall
19 | func realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr)
20 |
21 | func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {
22 | syscall.Entersyscall()
23 | r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
24 | syscall.Exitsyscall()
25 | return r, 0
26 | }
27 |
28 | func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
29 | syscall.Entersyscall()
30 | r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
31 | syscall.Exitsyscall()
32 | return r, 0, syscall.Errno(errno)
33 | }
34 |
35 | func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
36 | syscall.Entersyscall()
37 | r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)
38 | syscall.Exitsyscall()
39 | return r, 0, syscall.Errno(errno)
40 | }
41 |
42 | func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) {
43 | syscall.Entersyscall()
44 | r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9)
45 | syscall.Exitsyscall()
46 | return r, 0, syscall.Errno(errno)
47 | }
48 |
49 | func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {
50 | r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
51 | return r, 0
52 | }
53 |
54 | func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
55 | r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
56 | return r, 0, syscall.Errno(errno)
57 | }
58 |
59 | func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
60 | r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)
61 | return r, 0, syscall.Errno(errno)
62 | }
63 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/gccgo_c.c:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 gccgo
6 | // +build !aix
7 |
8 | #include
9 | #include
10 | #include
11 |
12 | #define _STRINGIFY2_(x) #x
13 | #define _STRINGIFY_(x) _STRINGIFY2_(x)
14 | #define GOSYM_PREFIX _STRINGIFY_(__USER_LABEL_PREFIX__)
15 |
16 | // Call syscall from C code because the gccgo support for calling from
17 | // Go to C does not support varargs functions.
18 |
19 | struct ret {
20 | uintptr_t r;
21 | uintptr_t err;
22 | };
23 |
24 | struct ret
25 | gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
26 | {
27 | struct ret r;
28 |
29 | errno = 0;
30 | r.r = syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);
31 | r.err = errno;
32 | return r;
33 | }
34 |
35 | uintptr_t
36 | gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
37 | {
38 | return syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);
39 | }
40 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 gccgo,linux,amd64
6 |
7 | package unix
8 |
9 | import "syscall"
10 |
11 | //extern gettimeofday
12 | func realGettimeofday(*Timeval, *byte) int32
13 |
14 | func gettimeofday(tv *Timeval) (err syscall.Errno) {
15 | r := realGettimeofday(tv, nil)
16 | if r < 0 {
17 | return syscall.GetErrno()
18 | }
19 | return 0
20 | }
21 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/ioctl.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 dragonfly freebsd linux netbsd openbsd solaris
6 |
7 | package unix
8 |
9 | import "runtime"
10 |
11 | // IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.
12 | //
13 | // To change fd's window size, the req argument should be TIOCSWINSZ.
14 | func IoctlSetWinsize(fd int, req uint, value *Winsize) error {
15 | // TODO: if we get the chance, remove the req parameter and
16 | // hardcode TIOCSWINSZ.
17 | err := ioctlSetWinsize(fd, req, value)
18 | runtime.KeepAlive(value)
19 | return err
20 | }
21 |
22 | // IoctlSetTermios performs an ioctl on fd with a *Termios.
23 | //
24 | // The req value will usually be TCSETA or TIOCSETA.
25 | func IoctlSetTermios(fd int, req uint, value *Termios) error {
26 | // TODO: if we get the chance, remove the req parameter.
27 | err := ioctlSetTermios(fd, req, value)
28 | runtime.KeepAlive(value)
29 | return err
30 | }
31 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/mkasm_darwin.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 ignore
6 |
7 | // mkasm_darwin.go generates assembly trampolines to call libSystem routines from Go.
8 | //This program must be run after mksyscall.go.
9 | package main
10 |
11 | import (
12 | "bytes"
13 | "fmt"
14 | "io/ioutil"
15 | "log"
16 | "os"
17 | "strings"
18 | )
19 |
20 | func main() {
21 | in1, err := ioutil.ReadFile("syscall_darwin.go")
22 | if err != nil {
23 | log.Fatalf("can't open syscall_darwin.go: %s", err)
24 | }
25 | arch := os.Args[1]
26 | in2, err := ioutil.ReadFile(fmt.Sprintf("syscall_darwin_%s.go", arch))
27 | if err != nil {
28 | log.Fatalf("can't open syscall_darwin_%s.go: %s", arch, err)
29 | }
30 | in3, err := ioutil.ReadFile(fmt.Sprintf("zsyscall_darwin_%s.go", arch))
31 | if err != nil {
32 | log.Fatalf("can't open zsyscall_darwin_%s.go: %s", arch, err)
33 | }
34 | in := string(in1) + string(in2) + string(in3)
35 |
36 | trampolines := map[string]bool{}
37 |
38 | var out bytes.Buffer
39 |
40 | fmt.Fprintf(&out, "// go run mkasm_darwin.go %s\n", strings.Join(os.Args[1:], " "))
41 | fmt.Fprintf(&out, "// Code generated by the command above; DO NOT EDIT.\n")
42 | fmt.Fprintf(&out, "\n")
43 | fmt.Fprintf(&out, "// +build go1.12\n")
44 | fmt.Fprintf(&out, "\n")
45 | fmt.Fprintf(&out, "#include \"textflag.h\"\n")
46 | for _, line := range strings.Split(in, "\n") {
47 | if !strings.HasPrefix(line, "func ") || !strings.HasSuffix(line, "_trampoline()") {
48 | continue
49 | }
50 | fn := line[5 : len(line)-13]
51 | if !trampolines[fn] {
52 | trampolines[fn] = true
53 | fmt.Fprintf(&out, "TEXT ·%s_trampoline(SB),NOSPLIT,$0-0\n", fn)
54 | fmt.Fprintf(&out, "\tJMP\t%s(SB)\n", fn)
55 | }
56 | }
57 | err = ioutil.WriteFile(fmt.Sprintf("zsyscall_darwin_%s.s", arch), out.Bytes(), 0644)
58 | if err != nil {
59 | log.Fatalf("can't write zsyscall_darwin_%s.s: %s", arch, err)
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/openbsd_unveil.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 openbsd
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | // Unveil implements the unveil syscall.
15 | // For more information see unveil(2).
16 | // Note that the special case of blocking further
17 | // unveil calls is handled by UnveilBlock.
18 | func Unveil(path string, flags string) error {
19 | pathPtr, err := syscall.BytePtrFromString(path)
20 | if err != nil {
21 | return err
22 | }
23 | flagsPtr, err := syscall.BytePtrFromString(flags)
24 | if err != nil {
25 | return err
26 | }
27 | _, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(unsafe.Pointer(pathPtr)), uintptr(unsafe.Pointer(flagsPtr)), 0)
28 | if e != 0 {
29 | return e
30 | }
31 | return nil
32 | }
33 |
34 | // UnveilBlock blocks future unveil calls.
35 | // For more information see unveil(2).
36 | func UnveilBlock() error {
37 | // Both pointers must be nil.
38 | var pathUnsafe, flagsUnsafe unsafe.Pointer
39 | _, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(pathUnsafe), uintptr(flagsUnsafe), 0)
40 | if e != 0 {
41 | return e
42 | }
43 | return nil
44 | }
45 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/pagesize_unix.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 dragonfly freebsd linux netbsd openbsd solaris
6 |
7 | // For Unix, get the pagesize from the runtime.
8 |
9 | package unix
10 |
11 | import "syscall"
12 |
13 | func Getpagesize() int {
14 | return syscall.Getpagesize()
15 | }
16 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/race.go:
--------------------------------------------------------------------------------
1 | // Copyright 2012 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 darwin,race linux,race freebsd,race
6 |
7 | package unix
8 |
9 | import (
10 | "runtime"
11 | "unsafe"
12 | )
13 |
14 | const raceenabled = true
15 |
16 | func raceAcquire(addr unsafe.Pointer) {
17 | runtime.RaceAcquire(addr)
18 | }
19 |
20 | func raceReleaseMerge(addr unsafe.Pointer) {
21 | runtime.RaceReleaseMerge(addr)
22 | }
23 |
24 | func raceReadRange(addr unsafe.Pointer, len int) {
25 | runtime.RaceReadRange(addr, len)
26 | }
27 |
28 | func raceWriteRange(addr unsafe.Pointer, len int) {
29 | runtime.RaceWriteRange(addr, len)
30 | }
31 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/race0.go:
--------------------------------------------------------------------------------
1 | // Copyright 2012 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,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly
6 |
7 | package unix
8 |
9 | import (
10 | "unsafe"
11 | )
12 |
13 | const raceenabled = false
14 |
15 | func raceAcquire(addr unsafe.Pointer) {
16 | }
17 |
18 | func raceReleaseMerge(addr unsafe.Pointer) {
19 | }
20 |
21 | func raceReadRange(addr unsafe.Pointer, len int) {
22 | }
23 |
24 | func raceWriteRange(addr unsafe.Pointer, len int) {
25 | }
26 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/sockcmsg_linux.go:
--------------------------------------------------------------------------------
1 | // Copyright 2011 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 | // Socket control messages
6 |
7 | package unix
8 |
9 | import "unsafe"
10 |
11 | // UnixCredentials encodes credentials into a socket control message
12 | // for sending to another process. This can be used for
13 | // authentication.
14 | func UnixCredentials(ucred *Ucred) []byte {
15 | b := make([]byte, CmsgSpace(SizeofUcred))
16 | h := (*Cmsghdr)(unsafe.Pointer(&b[0]))
17 | h.Level = SOL_SOCKET
18 | h.Type = SCM_CREDENTIALS
19 | h.SetLen(CmsgLen(SizeofUcred))
20 | *((*Ucred)(cmsgData(h))) = *ucred
21 | return b
22 | }
23 |
24 | // ParseUnixCredentials decodes a socket control message that contains
25 | // credentials in a Ucred structure. To receive such a message, the
26 | // SO_PASSCRED option must be enabled on the socket.
27 | func ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) {
28 | if m.Header.Level != SOL_SOCKET {
29 | return nil, EINVAL
30 | }
31 | if m.Header.Type != SCM_CREDENTIALS {
32 | return nil, EINVAL
33 | }
34 | ucred := *(*Ucred)(unsafe.Pointer(&m.Data[0]))
35 | return &ucred, nil
36 | }
37 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/str.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 dragonfly freebsd linux netbsd openbsd solaris
6 |
7 | package unix
8 |
9 | func itoa(val int) string { // do it here rather than with fmt to avoid dependency
10 | if val < 0 {
11 | return "-" + uitoa(uint(-val))
12 | }
13 | return uitoa(uint(val))
14 | }
15 |
16 | func uitoa(val uint) string {
17 | var buf [32]byte // big enough for int64
18 | i := len(buf) - 1
19 | for val >= 10 {
20 | buf[i] = byte(val%10 + '0')
21 | i--
22 | val /= 10
23 | }
24 | buf[i] = byte(val + '0')
25 | return string(buf[i:])
26 | }
27 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 dragonfly freebsd linux netbsd openbsd solaris
6 |
7 | // Package unix contains an interface to the low-level operating system
8 | // primitives. OS details vary depending on the underlying system, and
9 | // by default, godoc will display OS-specific documentation for the current
10 | // system. If you want godoc to display OS documentation for another
11 | // system, set $GOOS and $GOARCH to the desired system. For example, if
12 | // you want to view documentation for freebsd/arm on linux/amd64, set $GOOS
13 | // to freebsd and $GOARCH to arm.
14 | //
15 | // The primary use of this package is inside other packages that provide a more
16 | // portable interface to the system, such as "os", "time" and "net". Use
17 | // those packages rather than this one if you can.
18 | //
19 | // For details of the functions and data types in this package consult
20 | // the manuals for the appropriate operating system.
21 | //
22 | // These calls return err == nil to indicate success; otherwise
23 | // err represents an operating system error describing the failure and
24 | // holds a value of type syscall.Errno.
25 | package unix // import "golang.org/x/sys/unix"
26 |
27 | import "strings"
28 |
29 | // ByteSliceFromString returns a NUL-terminated slice of bytes
30 | // containing the text of s. If s contains a NUL byte at any
31 | // location, it returns (nil, EINVAL).
32 | func ByteSliceFromString(s string) ([]byte, error) {
33 | if strings.IndexByte(s, 0) != -1 {
34 | return nil, EINVAL
35 | }
36 | a := make([]byte, len(s)+1)
37 | copy(a, s)
38 | return a, nil
39 | }
40 |
41 | // BytePtrFromString returns a pointer to a NUL-terminated array of
42 | // bytes containing the text of s. If s contains a NUL byte at any
43 | // location, it returns (nil, EINVAL).
44 | func BytePtrFromString(s string) (*byte, error) {
45 | a, err := ByteSliceFromString(s)
46 | if err != nil {
47 | return nil, err
48 | }
49 | return &a[0], nil
50 | }
51 |
52 | // Single-word zero for use when we need a valid pointer to 0 bytes.
53 | // See mkunix.pl.
54 | var _zero uintptr
55 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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
6 | // +build ppc
7 |
8 | package unix
9 |
10 | //sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64
11 | //sysnb Setrlimit(resource int, rlim *Rlimit) (err error) = setrlimit64
12 | //sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek64
13 |
14 | //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
15 |
16 | func setTimespec(sec, nsec int64) Timespec {
17 | return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
18 | }
19 |
20 | func setTimeval(sec, usec int64) Timeval {
21 | return Timeval{Sec: int32(sec), Usec: int32(usec)}
22 | }
23 |
24 | func (iov *Iovec) SetLen(length int) {
25 | iov.Len = uint32(length)
26 | }
27 |
28 | func (msghdr *Msghdr) SetControllen(length int) {
29 | msghdr.Controllen = uint32(length)
30 | }
31 |
32 | func (cmsg *Cmsghdr) SetLen(length int) {
33 | cmsg.Len = uint32(length)
34 | }
35 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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
6 | // +build ppc64
7 |
8 | package unix
9 |
10 | //sysnb Getrlimit(resource int, rlim *Rlimit) (err error)
11 | //sysnb Setrlimit(resource int, rlim *Rlimit) (err error)
12 | //sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek
13 |
14 | //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64
15 |
16 | func setTimespec(sec, nsec int64) Timespec {
17 | return Timespec{Sec: sec, Nsec: nsec}
18 | }
19 |
20 | func setTimeval(sec, usec int64) Timeval {
21 | return Timeval{Sec: int64(sec), Usec: int32(usec)}
22 | }
23 |
24 | func (iov *Iovec) SetLen(length int) {
25 | iov.Len = uint64(length)
26 | }
27 |
28 | func (msghdr *Msghdr) SetControllen(length int) {
29 | msghdr.Controllen = uint32(length)
30 | }
31 |
32 | func (cmsg *Cmsghdr) SetLen(length int) {
33 | cmsg.Len = uint32(length)
34 | }
35 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_darwin_386.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 386,darwin
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | )
12 |
13 | func setTimespec(sec, nsec int64) Timespec {
14 | return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
15 | }
16 |
17 | func setTimeval(sec, usec int64) Timeval {
18 | return Timeval{Sec: int32(sec), Usec: int32(usec)}
19 | }
20 |
21 | //sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error)
22 | func Gettimeofday(tv *Timeval) (err error) {
23 | // The tv passed to gettimeofday must be non-nil
24 | // but is otherwise unused. The answers come back
25 | // in the two registers.
26 | sec, usec, err := gettimeofday(tv)
27 | tv.Sec = int32(sec)
28 | tv.Usec = int32(usec)
29 | return err
30 | }
31 |
32 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
33 | k.Ident = uint32(fd)
34 | k.Filter = int16(mode)
35 | k.Flags = uint16(flags)
36 | }
37 |
38 | func (iov *Iovec) SetLen(length int) {
39 | iov.Len = uint32(length)
40 | }
41 |
42 | func (msghdr *Msghdr) SetControllen(length int) {
43 | msghdr.Controllen = uint32(length)
44 | }
45 |
46 | func (cmsg *Cmsghdr) SetLen(length int) {
47 | cmsg.Len = uint32(length)
48 | }
49 |
50 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
51 |
52 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
53 | // of darwin/386 the syscall is called sysctl instead of __sysctl.
54 | const SYS___SYSCTL = SYS_SYSCTL
55 |
56 | //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
57 | //sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
58 | //sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64
59 | //sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64
60 | //sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64
61 | //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
62 | //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
63 | //sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64
64 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 amd64,darwin
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | )
12 |
13 | func setTimespec(sec, nsec int64) Timespec {
14 | return Timespec{Sec: sec, Nsec: nsec}
15 | }
16 |
17 | func setTimeval(sec, usec int64) Timeval {
18 | return Timeval{Sec: sec, Usec: int32(usec)}
19 | }
20 |
21 | //sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error)
22 | func Gettimeofday(tv *Timeval) (err error) {
23 | // The tv passed to gettimeofday must be non-nil
24 | // but is otherwise unused. The answers come back
25 | // in the two registers.
26 | sec, usec, err := gettimeofday(tv)
27 | tv.Sec = sec
28 | tv.Usec = usec
29 | return err
30 | }
31 |
32 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
33 | k.Ident = uint64(fd)
34 | k.Filter = int16(mode)
35 | k.Flags = uint16(flags)
36 | }
37 |
38 | func (iov *Iovec) SetLen(length int) {
39 | iov.Len = uint64(length)
40 | }
41 |
42 | func (msghdr *Msghdr) SetControllen(length int) {
43 | msghdr.Controllen = uint32(length)
44 | }
45 |
46 | func (cmsg *Cmsghdr) SetLen(length int) {
47 | cmsg.Len = uint32(length)
48 | }
49 |
50 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
51 |
52 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
53 | // of darwin/amd64 the syscall is called sysctl instead of __sysctl.
54 | const SYS___SYSCTL = SYS_SYSCTL
55 |
56 | //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
57 | //sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
58 | //sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64
59 | //sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64
60 | //sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64
61 | //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
62 | //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
63 | //sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64
64 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 | package unix
6 |
7 | import (
8 | "syscall"
9 | )
10 |
11 | func setTimespec(sec, nsec int64) Timespec {
12 | return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
13 | }
14 |
15 | func setTimeval(sec, usec int64) Timeval {
16 | return Timeval{Sec: int32(sec), Usec: int32(usec)}
17 | }
18 |
19 | //sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error)
20 | func Gettimeofday(tv *Timeval) (err error) {
21 | // The tv passed to gettimeofday must be non-nil
22 | // but is otherwise unused. The answers come back
23 | // in the two registers.
24 | sec, usec, err := gettimeofday(tv)
25 | tv.Sec = int32(sec)
26 | tv.Usec = int32(usec)
27 | return err
28 | }
29 |
30 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
31 | k.Ident = uint32(fd)
32 | k.Filter = int16(mode)
33 | k.Flags = uint16(flags)
34 | }
35 |
36 | func (iov *Iovec) SetLen(length int) {
37 | iov.Len = uint32(length)
38 | }
39 |
40 | func (msghdr *Msghdr) SetControllen(length int) {
41 | msghdr.Controllen = uint32(length)
42 | }
43 |
44 | func (cmsg *Cmsghdr) SetLen(length int) {
45 | cmsg.Len = uint32(length)
46 | }
47 |
48 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic
49 |
50 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
51 | // of darwin/arm the syscall is called sysctl instead of __sysctl.
52 | const SYS___SYSCTL = SYS_SYSCTL
53 |
54 | //sys Fstat(fd int, stat *Stat_t) (err error)
55 | //sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
56 | //sys Fstatfs(fd int, stat *Statfs_t) (err error)
57 | //sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT
58 | //sys Lstat(path string, stat *Stat_t) (err error)
59 | //sys Stat(path string, stat *Stat_t) (err error)
60 | //sys Statfs(path string, stat *Statfs_t) (err error)
61 |
62 | func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
63 | return 0, ENOSYS
64 | }
65 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 arm64,darwin
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | )
12 |
13 | func setTimespec(sec, nsec int64) Timespec {
14 | return Timespec{Sec: sec, Nsec: nsec}
15 | }
16 |
17 | func setTimeval(sec, usec int64) Timeval {
18 | return Timeval{Sec: sec, Usec: int32(usec)}
19 | }
20 |
21 | //sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error)
22 | func Gettimeofday(tv *Timeval) (err error) {
23 | // The tv passed to gettimeofday must be non-nil
24 | // but is otherwise unused. The answers come back
25 | // in the two registers.
26 | sec, usec, err := gettimeofday(tv)
27 | tv.Sec = sec
28 | tv.Usec = usec
29 | return err
30 | }
31 |
32 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
33 | k.Ident = uint64(fd)
34 | k.Filter = int16(mode)
35 | k.Flags = uint16(flags)
36 | }
37 |
38 | func (iov *Iovec) SetLen(length int) {
39 | iov.Len = uint64(length)
40 | }
41 |
42 | func (msghdr *Msghdr) SetControllen(length int) {
43 | msghdr.Controllen = uint32(length)
44 | }
45 |
46 | func (cmsg *Cmsghdr) SetLen(length int) {
47 | cmsg.Len = uint32(length)
48 | }
49 |
50 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic
51 |
52 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
53 | // of darwin/arm64 the syscall is called sysctl instead of __sysctl.
54 | const SYS___SYSCTL = SYS_SYSCTL
55 |
56 | //sys Fstat(fd int, stat *Stat_t) (err error)
57 | //sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
58 | //sys Fstatfs(fd int, stat *Statfs_t) (err error)
59 | //sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT
60 | //sys Lstat(path string, stat *Stat_t) (err error)
61 | //sys Stat(path string, stat *Stat_t) (err error)
62 | //sys Statfs(path string, stat *Statfs_t) (err error)
63 |
64 | func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
65 | return 0, ENOSYS
66 | }
67 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 darwin,go1.12
6 |
7 | package unix
8 |
9 | import "unsafe"
10 |
11 | // Implemented in the runtime package (runtime/sys_darwin.go)
12 | func syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)
13 | func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
14 | func syscall_syscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
15 | func syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) // 32-bit only
16 | func syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)
17 | func syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
18 |
19 | //go:linkname syscall_syscall syscall.syscall
20 | //go:linkname syscall_syscall6 syscall.syscall6
21 | //go:linkname syscall_syscall6X syscall.syscall6X
22 | //go:linkname syscall_syscall9 syscall.syscall9
23 | //go:linkname syscall_rawSyscall syscall.rawSyscall
24 | //go:linkname syscall_rawSyscall6 syscall.rawSyscall6
25 |
26 | // Find the entry point for f. See comments in runtime/proc.go for the
27 | // function of the same name.
28 | //go:nosplit
29 | func funcPC(f func()) uintptr {
30 | return **(**uintptr)(unsafe.Pointer(&f))
31 | }
32 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 amd64,dragonfly
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func setTimespec(sec, nsec int64) Timespec {
15 | return Timespec{Sec: sec, Nsec: nsec}
16 | }
17 |
18 | func setTimeval(sec, usec int64) Timeval {
19 | return Timeval{Sec: sec, Usec: usec}
20 | }
21 |
22 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
23 | k.Ident = uint64(fd)
24 | k.Filter = int16(mode)
25 | k.Flags = uint16(flags)
26 | }
27 |
28 | func (iov *Iovec) SetLen(length int) {
29 | iov.Len = uint64(length)
30 | }
31 |
32 | func (msghdr *Msghdr) SetControllen(length int) {
33 | msghdr.Controllen = uint32(length)
34 | }
35 |
36 | func (cmsg *Cmsghdr) SetLen(length int) {
37 | cmsg.Len = uint32(length)
38 | }
39 |
40 | func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
41 | var writtenOut uint64 = 0
42 | _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)
43 |
44 | written = int(writtenOut)
45 |
46 | if e1 != 0 {
47 | err = e1
48 | }
49 | return
50 | }
51 |
52 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
53 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 386,freebsd
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func setTimespec(sec, nsec int64) Timespec {
15 | return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
16 | }
17 |
18 | func setTimeval(sec, usec int64) Timeval {
19 | return Timeval{Sec: int32(sec), Usec: int32(usec)}
20 | }
21 |
22 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
23 | k.Ident = uint32(fd)
24 | k.Filter = int16(mode)
25 | k.Flags = uint16(flags)
26 | }
27 |
28 | func (iov *Iovec) SetLen(length int) {
29 | iov.Len = uint32(length)
30 | }
31 |
32 | func (msghdr *Msghdr) SetControllen(length int) {
33 | msghdr.Controllen = uint32(length)
34 | }
35 |
36 | func (cmsg *Cmsghdr) SetLen(length int) {
37 | cmsg.Len = uint32(length)
38 | }
39 |
40 | func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
41 | var writtenOut uint64 = 0
42 | _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)
43 |
44 | written = int(writtenOut)
45 |
46 | if e1 != 0 {
47 | err = e1
48 | }
49 | return
50 | }
51 |
52 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
53 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 amd64,freebsd
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func setTimespec(sec, nsec int64) Timespec {
15 | return Timespec{Sec: sec, Nsec: nsec}
16 | }
17 |
18 | func setTimeval(sec, usec int64) Timeval {
19 | return Timeval{Sec: sec, Usec: usec}
20 | }
21 |
22 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
23 | k.Ident = uint64(fd)
24 | k.Filter = int16(mode)
25 | k.Flags = uint16(flags)
26 | }
27 |
28 | func (iov *Iovec) SetLen(length int) {
29 | iov.Len = uint64(length)
30 | }
31 |
32 | func (msghdr *Msghdr) SetControllen(length int) {
33 | msghdr.Controllen = uint32(length)
34 | }
35 |
36 | func (cmsg *Cmsghdr) SetLen(length int) {
37 | cmsg.Len = uint32(length)
38 | }
39 |
40 | func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
41 | var writtenOut uint64 = 0
42 | _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)
43 |
44 | written = int(writtenOut)
45 |
46 | if e1 != 0 {
47 | err = e1
48 | }
49 | return
50 | }
51 |
52 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
53 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go:
--------------------------------------------------------------------------------
1 | // Copyright 2012 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 arm,freebsd
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func setTimespec(sec, nsec int64) Timespec {
15 | return Timespec{Sec: sec, Nsec: int32(nsec)}
16 | }
17 |
18 | func setTimeval(sec, usec int64) Timeval {
19 | return Timeval{Sec: sec, Usec: int32(usec)}
20 | }
21 |
22 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
23 | k.Ident = uint32(fd)
24 | k.Filter = int16(mode)
25 | k.Flags = uint16(flags)
26 | }
27 |
28 | func (iov *Iovec) SetLen(length int) {
29 | iov.Len = uint32(length)
30 | }
31 |
32 | func (msghdr *Msghdr) SetControllen(length int) {
33 | msghdr.Controllen = uint32(length)
34 | }
35 |
36 | func (cmsg *Cmsghdr) SetLen(length int) {
37 | cmsg.Len = uint32(length)
38 | }
39 |
40 | func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
41 | var writtenOut uint64 = 0
42 | _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)
43 |
44 | written = int(writtenOut)
45 |
46 | if e1 != 0 {
47 | err = e1
48 | }
49 | return
50 | }
51 |
52 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
53 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 arm64,freebsd
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func setTimespec(sec, nsec int64) Timespec {
15 | return Timespec{Sec: sec, Nsec: nsec}
16 | }
17 |
18 | func setTimeval(sec, usec int64) Timeval {
19 | return Timeval{Sec: sec, Usec: usec}
20 | }
21 |
22 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
23 | k.Ident = uint64(fd)
24 | k.Filter = int16(mode)
25 | k.Flags = uint16(flags)
26 | }
27 |
28 | func (iov *Iovec) SetLen(length int) {
29 | iov.Len = uint64(length)
30 | }
31 |
32 | func (msghdr *Msghdr) SetControllen(length int) {
33 | msghdr.Controllen = uint32(length)
34 | }
35 |
36 | func (cmsg *Cmsghdr) SetLen(length int) {
37 | cmsg.Len = uint32(length)
38 | }
39 |
40 | func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
41 | var writtenOut uint64 = 0
42 | _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)
43 |
44 | written = int(writtenOut)
45 |
46 | if e1 != 0 {
47 | err = e1
48 | }
49 | return
50 | }
51 |
52 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
53 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go:
--------------------------------------------------------------------------------
1 | // Copyright 2016 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 amd64,linux
6 | // +build !gccgo
7 |
8 | package unix
9 |
10 | import "syscall"
11 |
12 | //go:noescape
13 | func gettimeofday(tv *Timeval) (err syscall.Errno)
14 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_linux_gc.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 linux,!gccgo
6 |
7 | package unix
8 |
9 | // SyscallNoError may be used instead of Syscall for syscalls that don't fail.
10 | func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)
11 |
12 | // RawSyscallNoError may be used instead of RawSyscall for syscalls that don't
13 | // fail.
14 | func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)
15 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 linux,!gccgo,386
6 |
7 | package unix
8 |
9 | import "syscall"
10 |
11 | // Underlying system call writes to newoffset via pointer.
12 | // Implemented in assembly to avoid allocation.
13 | func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)
14 |
15 | func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)
16 | func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)
17 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 linux,gccgo,386
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func seek(fd int, offset int64, whence int) (int64, syscall.Errno) {
15 | var newoffset int64
16 | offsetLow := uint32(offset & 0xffffffff)
17 | offsetHigh := uint32((offset >> 32) & 0xffffffff)
18 | _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)
19 | return newoffset, err
20 | }
21 |
22 | func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {
23 | fd, _, err := Syscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)
24 | return int(fd), err
25 | }
26 |
27 | func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {
28 | fd, _, err := RawSyscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)
29 | return int(fd), err
30 | }
31 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 linux,gccgo,arm
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func seek(fd int, offset int64, whence int) (int64, syscall.Errno) {
15 | var newoffset int64
16 | offsetLow := uint32(offset & 0xffffffff)
17 | offsetHigh := uint32((offset >> 32) & 0xffffffff)
18 | _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)
19 | return newoffset, err
20 | }
21 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 386,netbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: int32(nsec)}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: int32(usec)}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint32(fd)
19 | k.Filter = uint32(mode)
20 | k.Flags = uint32(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint32(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 amd64,netbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: nsec}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: int32(usec)}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint64(fd)
19 | k.Filter = uint32(mode)
20 | k.Flags = uint32(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint64(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go:
--------------------------------------------------------------------------------
1 | // Copyright 2013 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 arm,netbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: int32(nsec)}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: int32(usec)}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint32(fd)
19 | k.Filter = uint32(mode)
20 | k.Flags = uint32(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint32(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 386,openbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: int32(nsec)}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: int32(usec)}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint32(fd)
19 | k.Filter = int16(mode)
20 | k.Flags = uint16(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint32(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
35 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
36 | // of openbsd/386 the syscall is called sysctl instead of __sysctl.
37 | const SYS___SYSCTL = SYS_SYSCTL
38 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 amd64,openbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: nsec}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: usec}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint64(fd)
19 | k.Filter = int16(mode)
20 | k.Flags = uint16(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint64(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
35 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
36 | // of openbsd/amd64 the syscall is called sysctl instead of __sysctl.
37 | const SYS___SYSCTL = SYS_SYSCTL
38 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 arm,openbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: int32(nsec)}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: int32(usec)}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint32(fd)
19 | k.Filter = int16(mode)
20 | k.Flags = uint16(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint32(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
35 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
36 | // of openbsd/arm the syscall is called sysctl instead of __sysctl.
37 | const SYS___SYSCTL = SYS_SYSCTL
38 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 amd64,solaris
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: nsec}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: usec}
15 | }
16 |
17 | func (iov *Iovec) SetLen(length int) {
18 | iov.Len = uint64(length)
19 | }
20 |
21 | func (cmsg *Cmsghdr) SetLen(length int) {
22 | cmsg.Len = uint32(length)
23 | }
24 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_unix_gc.go:
--------------------------------------------------------------------------------
1 | // Copyright 2016 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 darwin dragonfly freebsd linux netbsd openbsd solaris
6 | // +build !gccgo,!ppc64le,!ppc64
7 |
8 | package unix
9 |
10 | import "syscall"
11 |
12 | func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)
13 | func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
14 | func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)
15 | func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
16 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 linux
6 | // +build ppc64le ppc64
7 | // +build !gccgo
8 |
9 | package unix
10 |
11 | import "syscall"
12 |
13 | func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
14 | return syscall.Syscall(trap, a1, a2, a3)
15 | }
16 | func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
17 | return syscall.Syscall6(trap, a1, a2, a3, a4, a5, a6)
18 | }
19 | func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
20 | return syscall.RawSyscall(trap, a1, a2, a3)
21 | }
22 | func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
23 | return syscall.RawSyscall6(trap, a1, a2, a3, a4, a5, a6)
24 | }
25 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/timestruct.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 dragonfly freebsd linux netbsd openbsd solaris
6 |
7 | package unix
8 |
9 | import "time"
10 |
11 | // TimespecToNsec converts a Timespec value into a number of
12 | // nanoseconds since the Unix epoch.
13 | func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
14 |
15 | // NsecToTimespec takes a number of nanoseconds since the Unix epoch
16 | // and returns the corresponding Timespec value.
17 | func NsecToTimespec(nsec int64) Timespec {
18 | sec := nsec / 1e9
19 | nsec = nsec % 1e9
20 | if nsec < 0 {
21 | nsec += 1e9
22 | sec--
23 | }
24 | return setTimespec(sec, nsec)
25 | }
26 |
27 | // TimeToTimespec converts t into a Timespec.
28 | // On some 32-bit systems the range of valid Timespec values are smaller
29 | // than that of time.Time values. So if t is out of the valid range of
30 | // Timespec, it returns a zero Timespec and ERANGE.
31 | func TimeToTimespec(t time.Time) (Timespec, error) {
32 | sec := t.Unix()
33 | nsec := int64(t.Nanosecond())
34 | ts := setTimespec(sec, nsec)
35 |
36 | // Currently all targets have either int32 or int64 for Timespec.Sec.
37 | // If there were a new target with floating point type for it, we have
38 | // to consider the rounding error.
39 | if int64(ts.Sec) != sec {
40 | return Timespec{}, ERANGE
41 | }
42 | return ts, nil
43 | }
44 |
45 | // TimevalToNsec converts a Timeval value into a number of nanoseconds
46 | // since the Unix epoch.
47 | func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
48 |
49 | // NsecToTimeval takes a number of nanoseconds since the Unix epoch
50 | // and returns the corresponding Timeval value.
51 | func NsecToTimeval(nsec int64) Timeval {
52 | nsec += 999 // round up to microsecond
53 | usec := nsec % 1e9 / 1e3
54 | sec := nsec / 1e9
55 | if usec < 0 {
56 | usec += 1e6
57 | sec--
58 | }
59 | return setTimeval(sec, usec)
60 | }
61 |
62 | // Unix returns ts as the number of seconds and nanoseconds elapsed since the
63 | // Unix epoch.
64 | func (ts *Timespec) Unix() (sec int64, nsec int64) {
65 | return int64(ts.Sec), int64(ts.Nsec)
66 | }
67 |
68 | // Unix returns tv as the number of seconds and nanoseconds elapsed since the
69 | // Unix epoch.
70 | func (tv *Timeval) Unix() (sec int64, nsec int64) {
71 | return int64(tv.Sec), int64(tv.Usec) * 1000
72 | }
73 |
74 | // Nano returns ts as the number of nanoseconds elapsed since the Unix epoch.
75 | func (ts *Timespec) Nano() int64 {
76 | return int64(ts.Sec)*1e9 + int64(ts.Nsec)
77 | }
78 |
79 | // Nano returns tv as the number of nanoseconds elapsed since the Unix epoch.
80 | func (tv *Timeval) Nano() int64 {
81 | return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000
82 | }
83 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/zptrace386_linux.go:
--------------------------------------------------------------------------------
1 | // Code generated by linux/mkall.go generatePtracePair(386, amd64). DO NOT EDIT.
2 |
3 | // +build linux
4 | // +build 386 amd64
5 |
6 | package unix
7 |
8 | import "unsafe"
9 |
10 | // PtraceRegs386 is the registers used by 386 binaries.
11 | type PtraceRegs386 struct {
12 | Ebx int32
13 | Ecx int32
14 | Edx int32
15 | Esi int32
16 | Edi int32
17 | Ebp int32
18 | Eax int32
19 | Xds int32
20 | Xes int32
21 | Xfs int32
22 | Xgs int32
23 | Orig_eax int32
24 | Eip int32
25 | Xcs int32
26 | Eflags int32
27 | Esp int32
28 | Xss int32
29 | }
30 |
31 | // PtraceGetRegs386 fetches the registers used by 386 binaries.
32 | func PtraceGetRegs386(pid int, regsout *PtraceRegs386) error {
33 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
34 | }
35 |
36 | // PtraceSetRegs386 sets the registers used by 386 binaries.
37 | func PtraceSetRegs386(pid int, regs *PtraceRegs386) error {
38 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
39 | }
40 |
41 | // PtraceRegsAmd64 is the registers used by amd64 binaries.
42 | type PtraceRegsAmd64 struct {
43 | R15 uint64
44 | R14 uint64
45 | R13 uint64
46 | R12 uint64
47 | Rbp uint64
48 | Rbx uint64
49 | R11 uint64
50 | R10 uint64
51 | R9 uint64
52 | R8 uint64
53 | Rax uint64
54 | Rcx uint64
55 | Rdx uint64
56 | Rsi uint64
57 | Rdi uint64
58 | Orig_rax uint64
59 | Rip uint64
60 | Cs uint64
61 | Eflags uint64
62 | Rsp uint64
63 | Ss uint64
64 | Fs_base uint64
65 | Gs_base uint64
66 | Ds uint64
67 | Es uint64
68 | Fs uint64
69 | Gs uint64
70 | }
71 |
72 | // PtraceGetRegsAmd64 fetches the registers used by amd64 binaries.
73 | func PtraceGetRegsAmd64(pid int, regsout *PtraceRegsAmd64) error {
74 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
75 | }
76 |
77 | // PtraceSetRegsAmd64 sets the registers used by amd64 binaries.
78 | func PtraceSetRegsAmd64(pid int, regs *PtraceRegsAmd64) error {
79 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
80 | }
81 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/zptracearm_linux.go:
--------------------------------------------------------------------------------
1 | // Code generated by linux/mkall.go generatePtracePair(arm, arm64). DO NOT EDIT.
2 |
3 | // +build linux
4 | // +build arm arm64
5 |
6 | package unix
7 |
8 | import "unsafe"
9 |
10 | // PtraceRegsArm is the registers used by arm binaries.
11 | type PtraceRegsArm struct {
12 | Uregs [18]uint32
13 | }
14 |
15 | // PtraceGetRegsArm fetches the registers used by arm binaries.
16 | func PtraceGetRegsArm(pid int, regsout *PtraceRegsArm) error {
17 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
18 | }
19 |
20 | // PtraceSetRegsArm sets the registers used by arm binaries.
21 | func PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error {
22 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
23 | }
24 |
25 | // PtraceRegsArm64 is the registers used by arm64 binaries.
26 | type PtraceRegsArm64 struct {
27 | Regs [31]uint64
28 | Sp uint64
29 | Pc uint64
30 | Pstate uint64
31 | }
32 |
33 | // PtraceGetRegsArm64 fetches the registers used by arm64 binaries.
34 | func PtraceGetRegsArm64(pid int, regsout *PtraceRegsArm64) error {
35 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
36 | }
37 |
38 | // PtraceSetRegsArm64 sets the registers used by arm64 binaries.
39 | func PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error {
40 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
41 | }
42 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/zptracemips_linux.go:
--------------------------------------------------------------------------------
1 | // Code generated by linux/mkall.go generatePtracePair(mips, mips64). DO NOT EDIT.
2 |
3 | // +build linux
4 | // +build mips mips64
5 |
6 | package unix
7 |
8 | import "unsafe"
9 |
10 | // PtraceRegsMips is the registers used by mips binaries.
11 | type PtraceRegsMips struct {
12 | Regs [32]uint64
13 | Lo uint64
14 | Hi uint64
15 | Epc uint64
16 | Badvaddr uint64
17 | Status uint64
18 | Cause uint64
19 | }
20 |
21 | // PtraceGetRegsMips fetches the registers used by mips binaries.
22 | func PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error {
23 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
24 | }
25 |
26 | // PtraceSetRegsMips sets the registers used by mips binaries.
27 | func PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error {
28 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
29 | }
30 |
31 | // PtraceRegsMips64 is the registers used by mips64 binaries.
32 | type PtraceRegsMips64 struct {
33 | Regs [32]uint64
34 | Lo uint64
35 | Hi uint64
36 | Epc uint64
37 | Badvaddr uint64
38 | Status uint64
39 | Cause uint64
40 | }
41 |
42 | // PtraceGetRegsMips64 fetches the registers used by mips64 binaries.
43 | func PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error {
44 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
45 | }
46 |
47 | // PtraceSetRegsMips64 sets the registers used by mips64 binaries.
48 | func PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error {
49 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
50 | }
51 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go:
--------------------------------------------------------------------------------
1 | // Code generated by linux/mkall.go generatePtracePair(mipsle, mips64le). DO NOT EDIT.
2 |
3 | // +build linux
4 | // +build mipsle mips64le
5 |
6 | package unix
7 |
8 | import "unsafe"
9 |
10 | // PtraceRegsMipsle is the registers used by mipsle binaries.
11 | type PtraceRegsMipsle struct {
12 | Regs [32]uint64
13 | Lo uint64
14 | Hi uint64
15 | Epc uint64
16 | Badvaddr uint64
17 | Status uint64
18 | Cause uint64
19 | }
20 |
21 | // PtraceGetRegsMipsle fetches the registers used by mipsle binaries.
22 | func PtraceGetRegsMipsle(pid int, regsout *PtraceRegsMipsle) error {
23 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
24 | }
25 |
26 | // PtraceSetRegsMipsle sets the registers used by mipsle binaries.
27 | func PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error {
28 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
29 | }
30 |
31 | // PtraceRegsMips64le is the registers used by mips64le binaries.
32 | type PtraceRegsMips64le struct {
33 | Regs [32]uint64
34 | Lo uint64
35 | Hi uint64
36 | Epc uint64
37 | Badvaddr uint64
38 | Status uint64
39 | Cause uint64
40 | }
41 |
42 | // PtraceGetRegsMips64le fetches the registers used by mips64le binaries.
43 | func PtraceGetRegsMips64le(pid int, regsout *PtraceRegsMips64le) error {
44 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
45 | }
46 |
47 | // PtraceSetRegsMips64le sets the registers used by mips64le binaries.
48 | func PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error {
49 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
50 | }
51 |
--------------------------------------------------------------------------------
/vendor/google.golang.org/appengine/cloudsql/cloudsql.go:
--------------------------------------------------------------------------------
1 | // Copyright 2013 Google Inc. All rights reserved.
2 | // Use of this source code is governed by the Apache 2.0
3 | // license that can be found in the LICENSE file.
4 |
5 | /*
6 | Package cloudsql exposes access to Google Cloud SQL databases.
7 |
8 | This package does not work in App Engine "flexible environment".
9 |
10 | This package is intended for MySQL drivers to make App Engine-specific
11 | connections. Applications should use this package through database/sql:
12 | Select a pure Go MySQL driver that supports this package, and use sql.Open
13 | with protocol "cloudsql" and an address of the Cloud SQL instance.
14 |
15 | A Go MySQL driver that has been tested to work well with Cloud SQL
16 | is the go-sql-driver:
17 | import "database/sql"
18 | import _ "github.com/go-sql-driver/mysql"
19 |
20 | db, err := sql.Open("mysql", "user@cloudsql(project-id:instance-name)/dbname")
21 |
22 |
23 | Another driver that works well with Cloud SQL is the mymysql driver:
24 | import "database/sql"
25 | import _ "github.com/ziutek/mymysql/godrv"
26 |
27 | db, err := sql.Open("mymysql", "cloudsql:instance-name*dbname/user/password")
28 |
29 |
30 | Using either of these drivers, you can perform a standard SQL query.
31 | This example assumes there is a table named 'users' with
32 | columns 'first_name' and 'last_name':
33 |
34 | rows, err := db.Query("SELECT first_name, last_name FROM users")
35 | if err != nil {
36 | log.Errorf(ctx, "db.Query: %v", err)
37 | }
38 | defer rows.Close()
39 |
40 | for rows.Next() {
41 | var firstName string
42 | var lastName string
43 | if err := rows.Scan(&firstName, &lastName); err != nil {
44 | log.Errorf(ctx, "rows.Scan: %v", err)
45 | continue
46 | }
47 | log.Infof(ctx, "First: %v - Last: %v", firstName, lastName)
48 | }
49 | if err := rows.Err(); err != nil {
50 | log.Errorf(ctx, "Row error: %v", err)
51 | }
52 | */
53 | package cloudsql
54 |
55 | import (
56 | "net"
57 | )
58 |
59 | // Dial connects to the named Cloud SQL instance.
60 | func Dial(instance string) (net.Conn, error) {
61 | return connect(instance)
62 | }
63 |
--------------------------------------------------------------------------------
/vendor/google.golang.org/appengine/cloudsql/cloudsql_classic.go:
--------------------------------------------------------------------------------
1 | // Copyright 2013 Google Inc. All rights reserved.
2 | // Use of this source code is governed by the Apache 2.0
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build appengine
6 |
7 | package cloudsql
8 |
9 | import (
10 | "net"
11 |
12 | "appengine/cloudsql"
13 | )
14 |
15 | func connect(instance string) (net.Conn, error) {
16 | return cloudsql.Dial(instance)
17 | }
18 |
--------------------------------------------------------------------------------
/vendor/google.golang.org/appengine/cloudsql/cloudsql_vm.go:
--------------------------------------------------------------------------------
1 | // Copyright 2013 Google Inc. All rights reserved.
2 | // Use of this source code is governed by the Apache 2.0
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !appengine
6 |
7 | package cloudsql
8 |
9 | import (
10 | "errors"
11 | "net"
12 | )
13 |
14 | func connect(instance string) (net.Conn, error) {
15 | return nil, errors.New(`cloudsql: not supported in App Engine "flexible environment"`)
16 | }
17 |
--------------------------------------------------------------------------------
/vendor/gopkg.in/yaml.v2/.travis.yml:
--------------------------------------------------------------------------------
1 | language: go
2 |
3 | go:
4 | - 1.4
5 | - 1.5
6 | - 1.6
7 | - 1.7
8 | - 1.8
9 | - 1.9
10 | - tip
11 |
12 | go_import_path: gopkg.in/yaml.v2
13 |
--------------------------------------------------------------------------------
/vendor/gopkg.in/yaml.v2/LICENSE.libyaml:
--------------------------------------------------------------------------------
1 | The following files were ported to Go from C files of libyaml, and thus
2 | are still covered by their original copyright and license:
3 |
4 | apic.go
5 | emitterc.go
6 | parserc.go
7 | readerc.go
8 | scannerc.go
9 | writerc.go
10 | yamlh.go
11 | yamlprivateh.go
12 |
13 | Copyright (c) 2006 Kirill Simonov
14 |
15 | Permission is hereby granted, free of charge, to any person obtaining a copy of
16 | this software and associated documentation files (the "Software"), to deal in
17 | the Software without restriction, including without limitation the rights to
18 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
19 | of the Software, and to permit persons to whom the Software is furnished to do
20 | so, subject to the following conditions:
21 |
22 | The above copyright notice and this permission notice shall be included in all
23 | copies or substantial portions of the Software.
24 |
25 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
30 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
31 | SOFTWARE.
32 |
--------------------------------------------------------------------------------
/vendor/gopkg.in/yaml.v2/NOTICE:
--------------------------------------------------------------------------------
1 | Copyright 2011-2016 Canonical Ltd.
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License");
4 | you may not use this file except in compliance with the License.
5 | You may obtain a copy of the License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS,
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | See the License for the specific language governing permissions and
13 | limitations under the License.
14 |
--------------------------------------------------------------------------------
/vendor/gopkg.in/yaml.v2/go.mod:
--------------------------------------------------------------------------------
1 | module "gopkg.in/yaml.v2"
2 |
3 | require (
4 | "gopkg.in/check.v1" v0.0.0-20161208181325-20d25e280405
5 | )
6 |
--------------------------------------------------------------------------------
/vendor/gopkg.in/yaml.v2/writerc.go:
--------------------------------------------------------------------------------
1 | package yaml
2 |
3 | // Set the writer error and return false.
4 | func yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool {
5 | emitter.error = yaml_WRITER_ERROR
6 | emitter.problem = problem
7 | return false
8 | }
9 |
10 | // Flush the output buffer.
11 | func yaml_emitter_flush(emitter *yaml_emitter_t) bool {
12 | if emitter.write_handler == nil {
13 | panic("write handler not set")
14 | }
15 |
16 | // Check if the buffer is empty.
17 | if emitter.buffer_pos == 0 {
18 | return true
19 | }
20 |
21 | if err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil {
22 | return yaml_emitter_set_writer_error(emitter, "write error: "+err.Error())
23 | }
24 | emitter.buffer_pos = 0
25 | return true
26 | }
27 |
--------------------------------------------------------------------------------